有时构建更高级的控制台应用程序,您需要编写功能为可重用的类,可以共享许多贝壳。任务让你命令提取到类。例如烤了几乎全部的任务。您定义一个shell的任务通过使用美元的任务属性:
您可以使用插件使用标准插件语法任务。任务存储在Console/Command/Task/文件命名他们的类。所以如果我们要创建一个新的“FileGenerator”任务中,您将创建Console/Command/Task/FileGeneratorTask.php。
shell作为属性也可以访问它的任务,使任务大制作类似于可重用的功能块组件:
与TaskCollection动态加载任务
您可以使用任务负载动态任务集合对象。可以加载任务没有宣布任务:
将加载并返回一个ProjectTask实例。你可以从插件加载任务使用:
class UserShell extends AppShell {
public $tasks = array('Template');
}
您可以使用插件使用标准插件语法任务。任务存储在Console/Command/Task/文件命名他们的类。所以如果我们要创建一个新的“FileGenerator”任务中,您将创建Console/Command/Task/FileGeneratorTask.php。
每个任务必须至少实现一个execute()方法。ShellDispatcher将任务调用时调用该方法。一个任务类看起来像:
class FileGeneratorTask extends Shell {
public $uses = array('User');
public function execute() {
}
}
shell作为属性也可以访问它的任务,使任务大制作类似于可重用的功能块组件:
// found in Console/Command/SeaShell.php
class SeaShell extends AppShell {
public $tasks = array('Sound'); // found in Console/Command/Task/SoundTask.php
public function main() {
$this->Sound->execute();
}
}
您也可以从命令行直接访问任务:
$ cake sea sound
与TaskCollection动态加载任务
您可以使用任务负载动态任务集合对象。可以加载任务没有宣布任务:
$Project = $this->Tasks->load('Project');
将加载并返回一个ProjectTask实例。你可以从插件加载任务使用:
$ProgressBar = $this->Tasks->load('ProgressBar.ProgressBar');