PS:原创文章,如需转载,请注明出处,谢谢!
本文地址:http://flyer0126.iteye.com/blog/2113460
经同事推荐,了解到Slim框架,Slim是一个PHP的轻量级的框架,基于路由机制实现Restful服务。而NotORM是轻量级的ORM框架,用来简化与数据库之间的交互,处理表关联关系非常的简单,另外其性能也非常高,甚至超过内置的驱动。
到各自官网下载zip包,解压到项目根目录引用即可使用(NotORM前提需要满足pdo扩展)。
配置Slim自定义路由时,发现有些带参数请求报“404错误”,原因后来发现原因是由于网站Nginx配置需要满足可rewrite,修正设置如下即可解决。
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$uri&$args;
}
解决PDO中文乱码问题:
$pdo->query('SET NAMES utf8'); // 设置数据库编码
解决页面展示乱码可用:
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
具体实现服务代码示例如下:
<?php
/**
* Model User file
* User: flyer0126
* Date: 14-9-4
* Time: 上午10:40
*/
// include files
include_once dirname(__FILE__) . "/Config/database.php";
include_once dirname(__FILE__) . "/Lib/notorm/NotORM.php";
include_once dirname(__FILE__) . "/Lib/slim/Slim/Slim.php";
\Slim\Slim::registerAutoloader();
// init
$app = new \Slim\Slim();
$db = new NotORM(DATABASE_CONFIG::initDB());
/**
* 获取用户信息
* request demo:http://test.domain.com/user/view/1
*/
$app->get(
'/user/view/:id',
function ($id) use ($app, $db) {
$user = $db->users()->where('id = ?', $id)->fetch();
if(empty($user)){
echo json_encode(array('rlt'=>false, 'data'=>'user is not exist'));
} else {
echo json_encode(array('rlt'=>true, 'data'=>$user));
}
}
);
/**
* 更新用户信息
* request demo:http://test.domain.com/user/edit/1
*/
$app->post(
'/user/edit/:id',
function ($id) use ($app, $db) {
$user = $db->users()->where('id = ?', $id)->fetch();
if(empty($user)){
echo json_encode(array('rlt'=>false, 'data'=>'user is not exist'));
} else {
if($db->users()->where('id = ?', $id)->update($_POST)){
echo json_encode(array('rlt'=>true, 'data'=>'edit user success'));
} else {
echo json_encode(array('rlt'=>false, 'data'=>'edit user fail'));
}
}
}
);
// run
$app->run();
具体请求测试可以使用火狐浏览器HTTPRequest插件进行测试,也可以自己利用php curl编写用例来测试,还是比较简单的。