简单的问题...我正在使用 MVC 结构来构建我的网站(它相当大,所以它有助于维护。我现在开始集成一些有趣的 AJAX 功能来为 Javascript/AJAX 友好的用户进行修饰。
由于我对组织非常了解,我想以一种合乎逻辑、安全且(希望)独立的方式存储我的 ajax PHP 处理程序。
你如何组织你的?有最佳实践吗?
简单的问题...我正在使用 MVC 结构来构建我的网站(它相当大,所以它有助于维护。我现在开始集成一些有趣的 AJAX 功能来为 Javascript/AJAX 友好的用户进行修饰。
由于我对组织非常了解,我想以一种合乎逻辑、安全且(希望)独立的方式存储我的 ajax PHP 处理程序。
你如何组织你的?有最佳实践吗?
对我来说,最好的解决方案是拥有一个 index.php 前端控制器来处理页面生成和 ajax 请求,而不是让创建页面的相同文件为你做 ajax 事情,甚至是模板和模块重新加载。
这简化了一切,你有一个统一的结构。
没有最佳实践,它是 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;
}
我的存储在一个指定的文件夹_ajaxHandlers
中,这个文件夹包含像updatePageList.php, deletePage.php, etc
)这样的文件。
我不确定这是不是最好的方法,因为我对 ajax 概念也比较陌生 :) 任何关于更好地存储/处理文件的建议也得到了我的认可。
目录名中的下划线是因为我喜欢按用途排序的按字母顺序列出的文件夹。在我的结构中,带下划线的文件夹名称被认为是系统目录。
我也这样做,以前我用 ajax- 前缀存储 ajax 处理程序
ajax-updatestatus.php
ajax-managemessages.php
但最近我搬出去使用一个新文件夹
如果您使用 jquery 或其他框架,您可以在现有方法中使用 $_SERVER['HTTP-X-REQUEST-BY'] 标头本地区分请求。这样你在同一个地方有 ajax 和正常请求,所以没有结构变化。
每个 ajax 调用都有一个 id 怎么样(如果你有很多,你应该以某种方式记录)并且所有处理程序都在一个文件中,带有一个巨大的 ass switch case loop。或者如果它是一个大文件,也许可以组织它们在几个文件中 - id 3001、3002、3003 表单提交到 formHandler.php id 4001 400n 到布局系统等等。