我首先要说我是一个蹩脚的程序员,我确信我想做的事情可以在10行node或Rails或其他东西中完成,但PHP是我可用的。
所以,我希望找到一个简单的PHP库,它将数据库调用包装在一个API中,看起来类似于RESTful模型。
我几乎没有成功地找到这样的东西——搜索PHP CRUD
或PHP REST
会出现无数的页面,我不知道如何过滤它们。
我真的想让事情保持简单,我不想要一个像Zend之类的大框架。我在Backbone中处理的模型非常简单。我只是想发送GET
s到,说,/notes/3
或POST
s到/notes
等,并让PHP做正确的事情到数据库。
也许我要求太多了,但在我看来,这是其他框架,如Rails提供的。有什么建议吗?TIA…
EDIT Nov 2018:虽然我不会敲CodeIgniter,现在Laravel(目前5.5)是我使用的框架。
这是一篇很好的文章,总结了我使用Laravel的原因。
要快速入门,我推荐laracast。这是一个订阅视频教程服务,深入了解如何使用Laravel(以及其他与web开发相关的东西)。
原始答:
对我来说,Codeigniter是rails类框架中最简单的一个。它很简单,你可以从零开始轻松地构建一个CRUD应用程序。推出自己的应用程序的最大问题是安全性。Codeigniter可以帮助您构建一个不易被黑客攻击的站点,因为它可以保护您免受许多常见的安全风险,例如直接使用$_POST数组,以及没有正确过滤数据。更不用说它提供的许多辅助类,如表单验证。
你可以在他们的网站上查看文档。它很容易使用,只要你记得导航是隐藏在每个页面的顶部。: D
您了解CRUD的内部工作原理吗?从PHP的角度来看,它可以像在每个REST调用可能性上使用switch语句一样简单。
请看这个页面:http://www.codethinked.com/building-epic-win-with-backbone-js
跳到标题为"连接到服务器"的部分。
你的PHP脚本只需要满足这些要求。
一个简单的原型代码:switch($_SERVER['REQUEST_METHOD']){
case 'POST':
// create new item
break;
case 'GET':
// get item(s)
break;
case 'PUT':
// update item
break;
case 'DELETE':
// delete item
break;
}
您还需要设置一个.htaccess
文件,如下所示(处理访问不存在的url):
# Turn on rewrite engine and redirect broken requests to index
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]
</IfModule>
像http://mysite.com/1
这样的URL是不存在的,这就是为什么你需要路由。
Edit:如果您计划在HTML表单中使用PUT或DELETE,请忘记它。在写这篇文章的时候,它还没有被HTML5所接受,而且几乎所有的浏览器都不支持它。我对此的"修复"是将GET
用于GET
请求,并将POST
用于所有其他请求(POST
本身,PUT
和DELETE
)。例子:
<form action="POST" action="/users/5">
<input type="hidden" name="method" value="DELETE"/>
<button>Delete User #5</button>
</form>
但是,这不是AJAX的问题,因为显然您可以将XMLHttpRequest方法设置为您想要的任何内容而不会出现问题。
有很多PHP的rest框架,看看这里和这里。
我个人喜欢无脂肪框架,但你需要PHP 5.3。还有很多对Tonic和Recess的支持,看起来很有趣。
而且所有的标准框架都有一些rest支持(zend, code ignition, symfony等)
你应该找到适合你的…
同样,如果你已经准备好了mysql查询,你可以将mysql结果直接转换成json,像这样:
function recordSetToJson($mysql_result) {
$rs = array();
while($rs[] = mysql_fetch_assoc($mysql_result)) {
// you don´t really need to do anything here.
}
return json_encode($rs);
}
之后很容易与url关联…
From:将MySQL记录集转换为PHP中的JSON字符串
您可以使用silex https://github.com/fabpot/Silex一个基于symphony 2的简单框架。使用Silex,您可以轻松地路由和映射操作。
您可以访问基本的CRUD元素,并且可以使用URL组件调用函数。
文档中有一些例子:http://silex-project.org/doc/usage.html
新的REST api解决方案
的例子http://www.apifysnippets.com/
代码https://github.com/apify
教程http://blog.fedecarg.com/2011/09/11/building-a-restful-web-api-with-php-and-apify/
更新:PHP的另一个rest解决方案:http://luracast.com/products/restler/
:)
你可能想看看Slim:
http://www.slimframework.com/它绝对是轻量级的,可以给你你正在寻找的东西,一个使用php轻松部署的RESTful后端。