使用composer安装slim和slim-json-api
接上一篇《使用composer来管理php包依赖》,如果不会安装composer还是多查查资料。
项目框架Github地址:https://github.com/slimphp/Slim/tree/2.x
1. 安装slim框架
在项目目录新建一个composer.json文件,内容如下:
{ "require": { "slim/slim": "2.3.*" } }
然后,使用命令行切换到当前项目目录,执行以下命令:
composer install
然后,如果你用的是Apache(目前windows不支持nginx),你得在项目目录新建一个.htaccess文件,内容如下:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L]
2. 编写测试代码 index.php
<?php require 'vendor/autoload.php'; //生成一个 Slim 应用实例: $app = new \Slim\Slim(); //定义一个 HTTP GET 请求路由: $app->get('/hello/:name', function($name){ echo "Hello, $name"; }); //执行 Slim 应用 $app->run();
3. 打开浏览器访问你的项目的web目录,并带上/hello/slim
根据rewrite规则会执行index.php并
========================slim简单学习到此结束==========================
4. slim只是一个框架,如果需要安装slim-json-api应用,可以在composer.json中增加:
{ "require": { "slim/slim": "2.3.*", "entomb/slim-json-api": "dev-master" }, "repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } } }
这里我们将局部也配置为国内的composer镜像地址,然后重新运行composer update命令完成安装。项目地址:
https://github.com/entomb/slim-json-api
5. 接着修改index.php中的路由设置,全部代码改为:
<?php require 'vendor/autoload.php'; $app = new \Slim\Slim(); $app->view(new \JsonApiView()); $app->add(new \JsonApiMiddleware()); $app->get('/', function() use ($app) { $app->render(200,array( 'msg' => 'welcome to my API!', )); }); $app->run();
6. 最后通过浏览器访问项目的web根目录,就能看到json信息:
接着再添加一个访问用户user的路由规则:
$app->get('/user/:id', function($id) use ($app) { //your code here $app->render(404,array( 'error' => TRUE, 'msg' => 'user not found', )); });
访问项目/user/123将会得到一个404的状态码和一段json信息。
7. 我们将该项目移植到linux+nginx上。
其实只需要2个文件:composer.json,index.php
运行终端cd切换到项目根目录(这里我们将项目放到网站的/www/slim目录下),然后执行composer install,不一会所有的包下载好了。
接着编辑nginx的server段配置文件,/www为网站根目录,slim为提供json服务的子目录,这里仅允许slim目录下执行php脚本。
root /www; location /slim/{ try_files $uri $uri/ /slim/index.php?$args; location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; expires -1; } }
上面的nginx配置是网站的某个子目录提供服务,如果需要将index.php放置到网站的根目录提供服务可以这样配置:
root /www; location / { index index.php index.html index.htm; try_files $uri $uri/ /index.php?$uri&$args; location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; expires -1; } }
重启nginx,通过浏览器访问项目的web根目录, OK,这样就能让你的站点提供restful服务了。
注意:slim-json-api只支持slim2.x版本,不支持最新版slim3.x,升级前请测试!
永久链接:http://blog.zhengshuiguang.com/php/slim-json-api.html
转载随意!带上文章地址吧。
评论已关闭