简单的问题......我正在使用MVC结构来构建我的网站(它相当大,所以它有助于维护。我现在开始集成一些有趣的AJAX函数来为Javascript / AJAX友好用户提供更多功能
由于我对组织如此痴迷,我想以一种逻辑,安全和(希望)分离的方式存储我的ajax PHP处理程序。
你如何组织你的?有最好的做法吗?
答案 0 :(得分:1)
对我来说,最好的解决方案是使用一个index.php前端控制器来处理页面生成和ajax请求,并且创建页面的相同文件可以为你做一些事情,甚至是模板和模块重新加载。
这简化了一切,并且您拥有统一的结构。
答案 1 :(得分:1)
没有最佳实践,而且它是PHP项目中的一个地方,在这些地方,很多单个文件都在控制器结构之外。检查您的框架文档,看看他们是否在此领域提供任何建议,因为它是一种越来越常见的构建应用程序的方式。
我在野外处理过的最好的方法就是像处理MVC中的任何其他请求一样处理ajax请求。为您的请求创建一个控制器操作。根据项目/个人偏好的大小,您可以为ajax请求创建单独的逻辑控制器,或者将ajax操作与现有控制器分组(可选择为操作名称指定“ajax”前缀或后缀)
class IndexController extends BaseMvcController{
public function indexAction(){}
public function ajaxuserinfoAction(){}
}
//或
class AjaxController extends BaseMvcController{
public function userinfoAction(){}
}
这仍然留下了如何处理请求的视图部分。我已成为创建stdClass对象然后将echo json_encode($object);
与header('Content-Type: application/json');
一起使用的忠实粉丝。
如果您的MVC框架支持禁止网站布局,则可以在视图中构建响应输出。如果没有,在这样的地方添加一个简单的辅助函数也可以正常工作
protected function outputJsonForAjax($object)
{
header('Content-Type: application/json');
echo json_encode($object);
exit;
}
答案 2 :(得分:0)
我的存储在指定的文件夹_ajaxHandlers
中,此文件夹包含updatePageList.php, deletePage.php, etc
)等文件。
我不确定这是最好的方法,因为我也是ajax概念的新手:)任何有关更好的存储/处理文件的建议也都是我的评价。
dirname中的下划线是因为我喜欢按其用途排序的按字母排列的文件夹。在我的结构中强调了foldernames是考虑systemdirs。
答案 3 :(得分:0)
我也这样做, 以前我曾经用ajax-前缀存储ajax处理程序,如
ajax-updatestatus.php
ajax-managemessages.php
但最近我搬出了使用新文件夹
答案 4 :(得分:0)
如果您使用jquery或其他框架,您可以在现有方法中使用$ _SERVER ['HTTP-X-REQUEST-BY']标头本地区分请求。 这样你在同一个地方就有了ajax和普通请求,所以没有结构改变。
答案 5 :(得分:0)
每个ajax调用都有一个id(你应该以某种方式记录,如果你有很多)并且所有处理程序都在一个带有巨大的ass switch case case循环的文件中。或者它是否会很大文件可能会在几个文件中组织 - id 3001,3002,3003表单提交到formHandler.php id 4001 400n转到布局系统等等。