cakephp 2.x Shell using app Controller?


cakephp 2.x Shell using app Controller?

我想要一个shell脚本,我必须能够访问appController,这是可能的,没有复制到AppShell的代码?如果有,有什么建议吗?

Thanks in advance

一般来说,shell不应该依赖于控制器内部的代码,一些指针(根据要求):

  • 如果Shell必须执行与数据相关的任务,请将代码移到模型中。这在任何情况下都是很好的做法(在谷歌上查找"Skinny Controllers, Fat Models")
  • 虽然不支持'standard',但你可以将代码移动到'Component'(参见Components)。组件意味着控制器中使用的可重用代码部分。

如果上面的选项不是一个选项,你将不得不手动初始化AppController。请记住,因为您是从命令行运行的,所以各种将不存在,例如,将没有'请求'和一些环境变量(例如主机名)可能不会返回预期的值!

手动初始化控制器

手动初始化控制器将像这样;

App::uses('CakeRequest', 'Network');
App::uses('CakeResponse', 'Network');
App::uses('Controller', 'Controller');
App::uses('AppController', 'Controller');
// request/response may be optional, depends on your use
$controller = new AppController(new CakeRequest(), new CakeResponse());
$controller->constructClasses();
$controller->startupProcess();