一个RESTful持久性解决方案,可以与PHP中的backbone.js一起使用?

20 php persistence json crud backbone.js

我会先说这是一个糟糕的程序员,我确信我想做的事情可以在10行节点或Rails或其他东西中完成,但PHP就是我所拥有的.

所以,我希望找到一个简单的PHP库,它将数据库调用包装在一个类似于RESTful模型的API中.

我试图找到这样的东西我没什么成功 - 搜索PHP CRUDPHP REST翻开几个页面,我不知道如何过滤它们.

我真的想在这里保持简单,我不想要像Zend这样的大框架.我在Backbone中处理的模型非常简单.我只是想送GETs到,比方说,/notes/3POSTs到/notes,等,并有PHP做正确的事情到数据库.

也许我问的太多了,但在我看来,这就像Rails提供的其他框架一样.有什么建议?TIA ...

Joh*_*ers 15

编辑2018年11月:虽然我不会敲CodeIgniter,但现在Laravel(目前是5.5)是我使用的框架.

这是一篇很好的文章,总结了我使用Laravel的原因.

为了开始跳跃,我推荐Laracasts.这是一个订阅视频教程服务,深入介绍如何使用Laravel(和其他与web开发相关的东西).

原始答案:

对我来说,Codeigniter是最简单的Rails框架.它很简单,你可以轻松地从头开始构建一个CRUD应用程序.

滚动自己的应用程序的最大问题是安全性.Codeigniter可以通过屏蔽许多常见的安全风险来帮助您构建一个不易破解的站点,例如直接使用$ _POST数组,而不是正确过滤数据.更不用说它提供的许多辅助类,例如表单验证.

您可以在他们的网站上查看文档.只要您记住导航隐藏在每个页面的顶部,它就非常容易使用.:d

  • +1它比从头开始更安全,结构更好,但它比Symfony,CakePHP,Yii等更少限制.如果我的项目是基本的"单页一个内容"类型的东西,有一些简单的形式,那么我使用CI.如果它更先进,我使用Symfony或Yii.CI的一个重大缺点是它的缓存很差,以及它难以在控制器之间重用操作. (2认同)

Chr*_*ian 13

你了解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;
}
Run Code Online (Sandbox Code Playgroud)

您还需要.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>
Run Code Online (Sandbox Code Playgroud)

http://mysite.com/1这样的URL 不存在,这就是你需要路由的原因.

编辑:如果您打算在HTML表单中使用PUT或DELETE,请忘记它.在编写本文时,它尚未在HTML5中被接受,并且几乎所有浏览器都不支持这一点.我对此的"修复"是GET用于GET请求,以及POST所有其余的(POST本身,PUTDELETE).例:

<form action="POST" action="/users/5">
    <input type="hidden" name="method" value="DELETE"/>
    <button>Delete User #5</button>
</form>
Run Code Online (Sandbox Code Playgroud)

然而,这对AJAX来说不是问题,因为显然你可以将XMLHttpRequest方法设置为你想要的任何东西而没有问题.