1. 程式人生 > >PHP再學習4—— slim框架學習和使用

PHP再學習4—— slim框架學習和使用

0.前言

    slim是一個簡單而又強大的PHP5框架,可以用來建立RESTful的web應用。可以藉助slim框架設計一個簡化版的yeelink平臺。RESTFul架構對物聯網非常重要,通過Slim的學習也加深對RESTFul框架和相關技術的理解。
PHP學習筆記——索引博文

1.安裝wampserver

    WampServer是一款由法國人開發的Apache Web伺服器、PHP直譯器以及MySQL資料庫的整合軟體包。免去了開發人員將時間花費在繁瑣的配置環境過程,從而騰出更多精力去做開發。在windows下將Apache+PHP+Mysql 整合環境,擁有簡單的圖形和選單安裝和配置環境。PHP擴充套件、Apache模組,開啟/關閉滑鼠點點就搞定,再也不用親自去修改配置檔案了,WAMP它會去做。再也不用到處詢問php的安裝問題了,wampserver一切都搞定了。這個軟體是完全免費的,可以在其
官方網站
下載到最新的版本。【來自百度百科】    安裝完成開啟apache服務,在瀏覽器中輸入localhost可檢視到以下網頁。    伺服器根目錄位於 wampserver安裝目錄下的www資料夾,例如d:/wamp/www
圖1 wamp安裝成功

2.apache配置

    slim採用了前端控制器模式,利用.htaccess檔案中的重寫規則,把HTTP請求轉給了 index.php。所以還需要啟用 mod_rewrite,並修改httpd.conf檔案中相應Directory指令的AllowOverride None為AllowOverride All。【來自CSDN部落格中的描述】http.conf位於wampserver安裝目錄\bin\apache\Apache2.4.4\conf【1】啟動mod_rewrite——去掉#,#代表註釋LoadModule rewrite_module modules/mod_rewrite.so【2】修改AllowOverride None為AllowOverride All## Deny access to the entirety of your server's filesystem. You must# explicitly permit access to web content directories in other # <Directory> blocks below.#<Directory />    AllowOverride All    Require all granted</Directory>【3】訪問伺服器合法IP——任何IP均可以訪問伺服器。    註釋Deny from all,插入Allow from all任何DocumentRoot "D:/wamp/www"<Directory "D:/wamp/www">    Options Indexes FollowSymLinks    AllowOverride All    Order Deny,Allow# Deny from all     Allow from all</Directory>【4】重啟apache服務

3.slim安裝和使用初步

最簡單粗暴和直接的方法——到github下載zip檔案,slim github【連結】。解壓之後把【1】Slim資料夾,【2】.htaccess檔案和【3】index.php檔案複製到www目錄中。若看到以下網頁說明slim安裝成功。
圖2 slim安裝成功

4.簡單的修改和測試

    Slim提供完善的REST框架,支援GET、POST、PUT和Delete等方法,可以把index.php修改的更簡單一些。可從以下程式碼中可以熟悉Slim的基本框架和使用方法。
<?php
/**
 * Step 1: Require the Slim Framework
 *
 * If you are not using Composer, you need to require the
 * Slim Framework and register its PSR-0 autoloader.
 *
 * If you are using Composer, you can skip this step.
 */
require 'Slim/Slim.php';

\Slim\Slim::registerAutoloader();

/**
 * Step 2: Instantiate a Slim application
 *
 * This example instantiates a Slim application using
 * its default settings. However, you will usually configure
 * your Slim application now by passing an associative array
 * of setting names and values into the application constructor.
 */
$app = new \Slim\Slim();

/**
 * Step 3: Define the Slim application routes
 *
 * Here we define several Slim application routes that respond
 * to appropriate HTTP request methods. In this example, the second
 * argument for `Slim::get`, `Slim::post`, `Slim::put`, `Slim::patch`, and `Slim::delete`
 * is an anonymous function.
 */

// GET route
$app->get(
    '/',
    function () {
        echo 'Hello Slim';
    }
);

// POST route
$app->post(
    '/post',
    function () {
        echo 'This is a POST route';
    }
);

// PUT route
$app->put(
    '/put',
    function () {
        echo 'This is a PUT route';
    }
);

// PATCH route
$app->patch('/patch', function () {
    echo 'This is a PATCH route';
});

// DELETE route
$app->delete(
    '/delete',
    function () {
        echo 'This is a DELETE route';
    }
);

/**
 * Step 4: Run the Slim application
 *
 * This method should be called last. This executes the Slim application
 * and returns the HTTP response to the HTTP client.
 */
$app->run();

    此時再開啟瀏覽器輸入localhost將只能看到以下內容,其實瀏覽器使用get方法,在slim的Get路由中輸出了Hello Slim。
$app->post(
    '/post',
    function () {
        echo 'This is a POST route';
    }
);


在slim中, '/post'為相對路徑,該路徑可支援變數。 function ()為後續的處理函式。其他HTTP方法也類似。
圖3 Slim Get路由      其他型別的測試方法可藉助cURL工具    【1】測試post    curl --request POST http://localhost/post    【2】測試put方法    curl --request PUT http://localhost/put    【3】測試delete    curl --request DELETE http://localhost/delete    【火狐瀏覽器】    如果你不喜歡使用curl工具,也可以選擇火狐瀏覽器中的HTTPRequest工具,那麼命令操作就成了愉快的GUI操作了。
圖4 火狐瀏覽器中 HTTPRequest工具測試Slim

5.後記

    接著藉助樹莓派做一個類似於yeelink平臺的伺服器,可以接收來自樹莓派的HTTP請求,通過請求和響應實現LED燈的遠端控制。    URI設計                 \leds\{led}    JSON資料包設計     {“status”:"on"} 或 {“status”:"off"}


相關推薦

PHP學習4—— slim框架學習使用

0.前言    slim是一個簡單而又強大的PHP5框架,可以用來建立RESTful的web應用。可以藉助slim框架設計一個簡化版的yeelink平臺。RESTFul架構對物聯網非常重要,通過Slim的學習也加深對RESTFul框架和相關技術的理解。【PHP學習筆記——索引

三十六、python學習之Flask框架: 藍圖單元測試

一、藍圖和單元測試: 1.藍圖: 隨著flask程式越來越複雜,我們需要對程式進行模組化的處理,之前學習過python的模組化管理,於是針對一個簡單的flask程式進行模組化處理 名詞解釋: 高內聚,低耦合:   所謂高內聚是指一個軟體模組是由相關性很強的程式碼組成,

Linux多執行緒學習(4) --讀寫鎖其他型別的鎖以及執行緒安全

多執行緒學習總結(1):https://blog.csdn.net/hansionz/article/details/84665815 多執行緒學習總結(2):https://blog.csdn.net/hansionz/article/details/84675536 多執行緒學習總結

Slim 框架學習,第二天

緊接著第一天的內容 今天主要說下,App類中的map 方法 中的 route=this->container->get(‘router’)->map(methods,pattern, $callable); 該方法。

Hibernate學習4 二級快取強化事務管理 註解方式實現

如何證明二級快取和一級快取的物件是不一樣的? //第一次查詢 Country country = session.get(Country.class, 2);

Slim 框架學習,第十二天 _Router(三)

導讀:昨天我們學習了一下路由的介面 RouterInterface,今天我們看下,路由類的實現 先看下面兩段程式碼: Slim/DefaultServicesProvider.php $container['router'] = functi

IOS學習8——常用框架學習匯總

masonry layout 最新 快速 href code 過程 介紹 使用 我們在學習和code過程中經常會用到一些框架,本文將會持續更新最新學習和用到的框架 1、布局框架: Masonry介紹與使用實踐:快速上手Autolayout 2、IOS學習8——常用框架學習匯

JAVA學習之——SSH框架學習路線,思維腦圖。

        對於即將畢業的我,其實有著各種各樣的焦慮,焦慮到經常失眠,就會去想,畢業之後我該做什麼,是從事軟體行業還是專升本;暑假的時候我在成都待了一個月,瞭解了一些公司,在Java程式設計師招聘這塊,幾乎是不招女生,也可以說是選擇這個專業的女生也特別的少,原因大家都是一

微信小程序後端學習,Express框架學習

img com spa 技術 color pan 一個 web開發框架 .org Express是一個自身功能極簡,完全是由路由和中間件構成的一個web開發框架;從本質上來說,一個Express引用就是在調用各種中間件。 e.g Express是基於Nodejs的

SSH框架學習之Spring ---- 4、Spring的事務管理jdbcTemplate

本節講的是spring對dao層的封裝,之前可能有更好的做法,但是要知道spring也提供了這種技術。 本節的主要內容是: 1、spring的jdbcTemplate操作(實現事務crud操作) 2、spring配置連線池 (1)配置c3p0連線池 (2)service和dao注

TensorFlow學習筆記(11)--【Ubuntu】slim框架下的inception_v4模型的執行、視覺化、匯出使用

模型:slim框架下的Inception_v4模型 Inception_v4的Checkpoint:http://download.tensorflow.org/models/inception_v4_2016_09_09.tar.gz 資料集:google的f

php laravel框架學習筆記 (二) 數據庫操作

true 數據 mar sql show top 一行 ati del 原博客鏈接:http://www.cnblogs.com/bitch1319453/p/6810492.html mysql基本配置 你可用通過配置環境變量,使用cmd進入mysql,當然還有一種東

JavaSE中Collection集合框架學習筆記(2)——拒絕重復內容的Set支持隊列操作的Queue

%d eof 是否 face 出錯 can 3.2 lean als 前言:俗話說“金三銀四銅五”,不知道我要在這段時間找工作會不會很艱難。不管了,工作三年之後就當給自己放個暑假。 面試當中Collection(集合)是基礎重點.我在網上看了

php學習日記2(關於php中的符號->、=>::的意思)

常用 如果 count left 部分 之間 大於等於 ech repl ‘- >’符號是“插入式解引用操作符”(infix dereference operator)。換句話說,它是調用由引用傳遞參數的子程序的方法(當然,還有其它的作用)。正如我們上面所提到的,在調

spring boot框架學習學前掌握之重要註解(4)-通過註解方式讀取外部資源配置文件2

spring boot kaigejava 凱哥java本節主要內容:1:思考問題:怎麽讀取多個配置文件,如果文件不存在怎麽辦2:配置數據庫連接池聲明:本文是《凱哥陪你學系列-框架學習之spring boot框架學習》中spring boot框架學習學前掌握之重要註解(4)-通過註解方式讀取外部資源配置文件2

spring boot框架學習4-spring boot核心(3)

spring boot kaigejava 凱哥java本節主要:1:spring boot 為我們提供的 starter pom 都有哪些2:怎麽添加xml配置文件3:日誌相關本文是《凱哥陪你學系列-框架學習之spring boot框架學習》中第四篇 spring boot框架學習4-spring boot

spring boot框架學習8-【幹貨】spring boot的web開發(4)-自定義攔截器處理權限

凱哥spring boot spring boot框架 本章節主要內容:通過前面的學習,我們了解並快速完成了spring boot第一個應用。spring boot企業級框架,那麽spring boot怎麽讀取靜態資源?如js文件夾,css文件以及png/jpg圖片呢?怎麽自定義消息轉換器呢?怎麽自定

Lucene.net(4.8.0) 學習問題記錄五: JIEba分詞Lucene的結合,以及對分詞器的思考

+= d+ ext eth reac chart rdl ret start 前言:目前自己在做使用Lucene.net和PanGu分詞實現全文檢索的工作,不過自己是把別人做好的項目進行遷移。因為項目整體要遷移到ASP.NET Core 2.0版本,而Lucene使用的版本

hibernate框架學習筆記4:主鍵生成策略、對象狀態

alt rri gen 線程安全 理論 微軟 unit conf lose 創建一個實體類: package domain; public class Customer { private Long cust_id; private Stri

php學習筆記-定義數組引用數組元素

組元 src php學習筆記 clas ima post 函數 .com 定義 上圖包含兩種定義數組的方法,一種是通過數組索引來創建的,一種是通過array()函數來創建的。 php學習筆記-定義數組和引用數組元素