我知道这已经有几年的历史了,这可能不是类/函数的预期用途,但我发现以下内容在从命令行调用的独立文件中非常有用。
这为我解决的问题是它消除了 Apache 进程的产生。该解决方案很棒,因为我可以从 URL 访问所需的一些控制器/操作。
在几乎任何基于 ZF1 的应用程序中,您都可以复制索引文件并保持所有内容不变,只需注释掉以下行。
$application->run();
您可以使用自动加载器等访问此行下方的任何内容。它很粗糙,但它可以工作。不幸的是,您很快就会发现自己对应用程序拥有的许多文件的访问权限有限,并且感觉访问所需文件的唯一方法是通过 Controller/Action。
相反,我在 $application->bootstrap() 下的新文件中使用以下内容(仍然删除 $application->run() ):
$front = Zend_Controller_Front::getInstance();
// You can put more here if you use non-default modules
$front->setControllerDirectory(array(
'default' => APPLICATION_PATH.'/controllers'
));
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
$viewRenderer->setNeverRender(true);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
$req = new Zend_Controller_Request_Http("http://anydomain.tld/controller/action");
// Example just to see how this can be extended
$req->setParam("someVar", "someValue");
$front->setRequest($req);
$front->dispatch();
最后,您有一个独立的 PHP 文件,该文件引导所有内容与您的 web 主 index.php 相同,但您可以根据需要手动触发控制器/动作,让您更轻松地访问 ZF1 的其余文件。您可以访问它们。