Нет лучших практик, и это одно из мест в проектах PHP, где вещи быстро уходят с рельсов с большим количеством отдельных файлов вне структуры контроллера. Проверьте свои документы по инфраструктуре, чтобы узнать, предлагают ли они какие-либо рекомендации в этой области, как все более распространенный способ создания приложений.
Лучший способ, которым я видел это в дикой природе, - это обработать запрос ajax, как любой другой запрос в MVC. Создайте действие контроллера для вашего запроса. В зависимости от размера проекта/личных предпочтений, вы можете создать отдельные логические контроллеры для 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;
}
Вопрос об этом методе. Может ли тот же обработчик ajax быть вызван 2 или 3 раза одновременно? Существуют ли ограничения или характеристики производительности при использовании одного и того же файла для всей вашей обработки ajax? – BenRacicot
Зачем нужны ограничения? Это то же самое или даже лучше использовать один файл, чем несколько, если вы кешируете файлы php, а не быстрее. – dfilkovi