要建立一個Hello World應用程式,刪除預設的index.php檔案在應用程式目錄,並建立一個新的index.php檔案用下面的代碼:
01 02 require "Slim/Slim.php";
03
04 // create new Slim instance
05 $app = new Slim();
06
07 // add new Route
08 $app->get("/", function () {
09 echo "
Hello Slim World
";
10 });
11
12 // run the Slim app
13 $app->run();
現在是準備你的第一個修身應用。如果你通過瀏覽器訪問index.php檔案,你應該看到一個大的“Hello斯利姆世界。”
在您的應用程式中使用的Slim,你需要包括Slim.php和斯利姆,會自動載入,它需要的所有其他檔案。然後,您可以建立一個或多個執行個體修身對象,並添加您的路線。
苗條的建構函式接受一個應用程式的配置值的數組。模式,TEMPLATES.PATH和觀看一些重要的,我們經常使用的配置。使用模式設定要像開發或生產,使用的應用環境。TEMPLATES.PATH設定使用模板檔案的位置。斯利姆使用Slim_View的,預設情況下,呈現的觀點,但您可以編寫自訂的視圖處理常式,並通過使用附加苗條價值。下面的樣本示範如何建立一個新的自訂修身執行個體TEMPLATES.PATH和設定環境的發展模式。
1 2 $app = new Slim(array(
3 "MODE" => "development",
4 "TEMPLATES.PATH' => "./templates"
5 ));
建立一個應用程式使用斯利姆是建立路線的最重要組成部分。路由協助一個URI映射到一個特定的要求方法的回呼函數。斯利姆提供一個簡單而直觀的方式,以相同的URI映射的方法不同的要求。它將調用的回呼函數,符合當前的URI和要求方法,或產生一個404錯誤,如果它是無法比擬的。加入航線後,你需要調用的run()方法修身執行個體啟動並執行應用程式。
寫一個圖書館服務
在更深入的運動,讓我們建立一個簡單的圖書館管理Web服務應用程式使用超薄。在此應用中,我們就可以列出,添加,刪除,更新本書詳細介紹了使用Web服務調用。
下表列出了將支援Web服務的端點:
對於資料庫的互動中,我將使用NotORM書面JakubVrána作為替代ORM,它提供了一個簡單而直觀的API來與資料庫中的資料,PHP庫。NotORM使用PHP的PDO擴充來訪問資料庫,所以PDO的執行個體傳遞給NotORM的構造。
1 2 require "NotORM.php";
3
4 $pdo = new PDO($dsn, $username, $password);
5 $db = new NotORM($pdo);
上市書籍
第一個端點列出庫中所有的書籍,讓我們的使用超薄建立端點並返回JSON格式的編碼資料。
01 02 ...
03 $app = new Slim(
04 "MODE" => "developement",
05 "TEMPLATES.PATH' => "./templates"
06 );
07
08 $app->get("/books", function () use ($app, $db) {
09 $books = array();
10 foreach ($db->books() as $book) {
11 $books[] = array(
12 "id" => $book["id"],
13 "title" => $book["title"],
14 "author" => $book["author"],
15 "summary" => $book["summary"]
16 );
17 }
18 $app->response()->header("Content-Type", "application/json");
19 echo json_encode($books);
20 });
()是修身的方法,路線到指定的URI上的GET請求。它的第一個參數是URI和最後一個參數是一個回呼函數。使用關鍵字,使我們能夠從匿名函數的範圍內訪問外部變數。
在函數中,我們建立,遍曆資料庫返回的每個記錄(書的數組$ DB->圖書()返回一個遍曆參考的書籍表)。發送響應的Content-Type頭為“應用程式/ json”我們發出的編碼書資料陣列。
現在讓我們寫一本書與一個給定的ID的詳細資料端點:
01 02 ...
03 $app->get("/book/:id", function ($id) use ($app, $db) {
04 $app->response()->header("Content-Type", "application/json");
05 $book = $db->books()->where("id", $id);
06 if ($data = $book->fetch()) {
07 echo json_encode(array(
08 "id" => $data["id"],
09 "title" => $data["title"],
10 "author" => $data["author"],
11 "summary" => $data["summary"]
12 ));
13 }
14 else{
15 echo json_encode(array(
16 "status" => false,
17 "message" => "Book ID $id does not exist"
18 ));
19 }
20 });
在這裡,我們添加了一個參數,本書的ID傳遞路線。在執行這條路線,斯利姆將調用的回呼函數作為參數的參數值。
請注意該參數是強制性的。您可以通過它放在像括弧內可選:/書(/ ID),如果你正在做一個參數可選,不過,你將不能夠指定的回呼函數的參數。在這種情況下,你可以使用func_get_args()以任何參數傳遞給回呼函數來獲得。
添加和編輯書籍
現在,讓我們的地址端點添加和更新圖書資訊負責。我們將使用後()方法來添加新的資料,並把()來更新現有的資料。
01 02 ...
03 $app->post("/book", function () use($app, $db) {
04 $app->response()->header("Content-Type", "application/json");
05 $book = $app->request()->post();
06 $result = $db->books->insert($book);
07 echo json_encode(array("id" => $result["id"]));
08 });
09
10 $app->put("/book/:id", function ($id) use ($app, $db) {
11 $app->response()->header("Content-Type", "application/json");
12 $book = $db->books()->where("id", $id);
13 if ($book->fetch()) {
14 $post = $app->request()->put();
15 $result = $book->update($post);
16 echo json_encode(array(
17 "status" => (bool)$result,
18 "message" => "Book updated successfully"
19 ));
20 }
21 else{
22 echo json_encode(array(
23 "status" => false,
24 "message" => "Book id $id does not exist"
25 ));
26 }
27 });
為應用程式請求()返回當前請求對象(Slim_Http_Request的使用POST)或把資料。你可以得到的POST值員額()這個對象的方法,使用()方法的沽值。在這裡,我們假設兩個POST和PUT資料資訊表的列名作為鍵的鍵/值對。在現實世界的應用程式,你將需要添加一些驗證和錯誤處理,但我已經為簡單起見,這裡省略。
如果你打算從瀏覽器訪問您的修身應用,你將不能夠很容易地使PUT請求,瀏覽器通常不公開通過HTML的方法。為了克服這個問題,修身有一個規定,它可以讓你覆蓋POST請求將放置在一個隱藏欄位的形式。欄位的名稱應該是“_method”設定為“PUT”的價值。
1
刪除書籍
我們需要的下一個顯而易見的事情,現在我們有添加,編輯和書單,在我們的Web服務端點,端點刪除書籍。它應該接受書要刪除的ID,並從資料庫中刪除相應的記錄。
01 02 ...
03 $app->delete("/book/:id", function ($id) use($app, $db) {
04 $app->response()->header("Content-Type", "application/json");
05 $book = $db->books()->where("id", $id);
06 if ($book->fetch()) {
07 $result = $book->delete();
08 echo json_encode(array(
09 "status" => true,
10 "message" => "Book deleted successfully"
11 ));
12 }
13 else{
14 echo json_encode(array(
15 "status" => false,
16 "message" => "Book id $id does not exist"
17 ));
18 }
19 });
一切都非常簡單。首先,我們取給定的ID從資料庫中相應的行,就像我們已經做了的時候本書詳細介紹了。行對象上調用的delete()方法從資料庫中刪除該記錄。www.2cto.com
我們已經建立了相關的所有書籍進行必要的終點。在某些情況下,您可能希望有一個單一的路線,將響應多個要求方法。它可以實現使用的地圖()的斯利姆方法。
總結
在這篇文章中,我們已經討論了建立一個RESTful Web服務,使用超薄架構。現在,你應該能夠建立自己的Web服務應用程式,沒有太多的麻煩。
當然,也有很多事情比這裡討論的簡單的事情可以做。你可以有很多參數,資料驗證等航線。因此,深入和喜歡苗條和NoORM來協助你實現你的目標使用的工具。
作者:ssoftware
http://www.bkjia.com/PHPjc/478021.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/478021.htmlTechArticle要建立一個Hello World應用程式,刪除預設的index.php檔案在應用程式目錄,並建立一個新的index.php檔案用下面的代碼: 01 ?php 02 require Slim/Sli...