要创建一个hello world应用程序,删除默认的index.php文件在应用程序目录,并创建一个新的index.php文件用下面的代码:
01 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 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 ./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 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 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
2
3 title:
4 author:
5 summary:
6
7
8 删除书籍
我们需要的下一个显而易见的事情,现在我们有添加,编辑和书单,在我们的web服务端点,端点删除书籍。它应该接受书要删除的id,并从数据库中删除相应的记录。
01 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...