2015-05-27
要创建一个Hello World应用程序,删除默认的index.php文件在应用程序目录,并创建一个新的index.php文件用下面的代码:
01 <?php
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 "<h1>Hello Slim World</h1>";
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 <?php
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 <?php
2 require "NotORM.php";
3
4 $pdo = new PDO($dsn, $username, $password);
5 $db = new NotORM($pdo);
上市书籍
第一个端点列出库中所有的书籍,让我们的使用超薄创建端点并返回JSON格式的编码数据。
01 <?php
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 <?php
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 <?php
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 <form action="#" method="post">
2 <input type="hidden" name="_METHOD" value="PUT">
3 Title: <input type="text" name="title"><br>
4 Author: <input type="text" name="author"><br>
5 Summary: <textarea name="summary"></textarea>
6 <br>
7 <input type="submit" value="Submit">
8 </form>
删除书籍
我们需要的下一个显而易见的事情,现在我们有添加,编辑和书单,在我们的Web服务端点,端点删除书籍。它应该接受书要删除的ID,并从数据库中删除相应的记录。
01 <?php
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.zhishiwu.com
我们已经建立了相关的所有书籍进行必要的终点。在某些情况下,您可能希望有一个单一的路线,将响应多个请求方法。它可以实现使用的地图()的斯利姆方法。
总结
在这篇文章中,我们已经讨论了创建一个RESTful Web服务,使用超薄框架。现在,你应该能够创建自己的Web服务应用程序,没有太多的麻烦。
当然,也有很多事情比这里讨论的简单的事情可以做。你可以有很多参数,数据验证等航线。因此,深入和喜欢苗条和NoORM来帮助你实现你的目标使用的工具。
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
04-12
6
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
PHP中include和require区别之我见
09-05
常用dos命令及语法
2014-09-27
将视频设置为Android手机开机动画的教程
2014-12-11
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
java中的info是什么意思
2022-03-24
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
IcePHP框架中的快速后台中的通用CRUD功能框架
2014-09-05
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP数组函数array
2014-09-05
学ug编程如何快速入门?
2022-03-17
最佳球会九游版下载v2.5.161 安卓官方版
经营养成 1.87G
下载热血传奇跨服新大陆官方手游下载v1.9.134.15150 安卓最新版本
角色扮演 1.50G
下载波比的游戏时间第四章玩家自制版(PlaytimeStarterKit)下载v9.1 安卓版
其它手游 1.14G
下载方块枪战block gun游戏下载v9.8 安卓版
射击枪战 108.8M
下载zepeto中文版(更名崽崽ZEPETO)下载v4.2.210 安卓版
休闲益智 319.7M
下载现代战舰手游下载v0.94.3.120515958 安卓手机版
射击枪战 1.96G
下载Modern Warships现代战舰国际服官方正版下载v0.94.3.120515958 安卓最新版
策略塔防 1.96G
下载2025指尖捕鱼新版下载v10.2.44.7.0 安卓正版
休闲益智 579.4M
下载指尖捕鱼赢话费版下载v10.2.44.7.0 安卓版
下载
指尖捕鱼高爆率多人捕鱼游戏下载v10.2.44.7.0 安卓版
下载
指尖捕鱼吴孟达版下载v10.2.44.7.0 安卓最新版
下载
飞机大厨2025最新版(airplane chefs)下载v12.0.2 安卓免费版
下载
捕鱼大决战狂暴版官方版下载v122.7.286 安卓高爆版
下载
捕鱼大决战最新版本下载v122.7.286 安卓正版
下载
捕鱼大决战深海版游戏下载v122.7.286 安卓版
下载
拳皇14官方正版下载v2.0.0 安卓正式版
下载