Zend Framework, MVC, Ajax и Cli/Cron

Я работаю над приложением на основе Zend Framework и инициализирую MVC при загрузке. Теперь я добавляю слой AJAX в приложения, поэтому в действии контроллера я отключаю рендеринг представлений и начинаю подвергать сомнению мой подход к запуску MVC в начальной загрузке. Мне также нужно добавить некоторую поддержку cron/cli в приложение, поэтому мне также нужно остановить рендеринг MVC для этой части. Короче говоря, бывают ситуации (AJAX, Cli, Cron и т. Д.), Когда нам не нужен MVC, но он изначально выполняется как часть начальной загрузки, а затем мы принудительно останавливаем его.

Так что я уверен, что должен быть другой подход (ы), который более благосклонно относится к таким ситуациям, и вместо того, чтобы начинать MVC в начале, мы можем запустить его по дороге прямо перед отправкой вывода клиенту.

2 ответа

Почему вам не нужен MVC для AJAX или CLI? Этот переключатель контекста является причиной, по которой существует MVC: сохраняйте модель и / или контроллер, но используйте другое представление.

Но, возможно, вы могли бы создать другой файл начальной загрузки (вместо index.php), скажем, cli.php и ajax.php, чтобы избежать некоторых вещей, которые вы просто инициализируете для "обычных" запросов (навигация, маршруты, управление компоновкой + просмотр, acl, ..). На данный момент я не использую другой файл начальной загрузки, потому что AJAX идеально вписывается в мою текущую структуру (за исключением макета, но для этого есть contextSwitch).

Давайте очень кратко рассмотрим запуск приложения в index.php:

$application->bootstrap() // here you load and configure your resources
            ->run();      // here you launch the request handling, dispatching, mvc, etc.. 

когда вы хотите использовать свое приложение в контексте CLI, вам нужно будет только загрузить его, а не запускать приложение MVC. Просто опустите ->run(),

Конечно, вы можете просто инициализировать только те ресурсы, которые вам нужны в вашем скрипте:

$app->bootstrap('cachemanager')->bootstrap('db');

Для Ajax, если вам нужны контроллеры и действия, вам нужно то, что вы называете "MVC". Это недавний вопрос SO, где вы можете найти более подробную информацию о концепции "контроллеров Ajax".

Другие вопросы по тегам