[FuelPHP 1.7] 从任务中执行任务
这是开发团队的草壁。
首先,在创建 FuelPHP 任务时,您是否考虑过从另一个任务中运行该任务?我将在这里解释一下。
从任务中运行任务
假设你有一个这样的任务,运行后会显示“sugoi”:
taskone.php
<?php namespace Fuel\Tasks; class TaskOne { public static function run() { \Cli::write('sugoi'); return 0; } }
假设我们要从另一个任务中运行 TaskOne。
让我们将调用 TaskOne 的任务定义为 TheTask。
目录结构是
燃料
└
任务
├taskone.php
└thetask.php
假设真是如此。
thetask.php
<?php namespace Fuel\Tasks; class TheTask { public static function run() { TaskOne::run(); return 0; } }
这样可以吧?我们来运行TheTask。
$ 石油精炼 TheTask 致命错误 - 在 APPPATH/tasks/thetask.php 第 8 行找不到类“Fuel\Tasks\TaskOne”。
它不起作用。找不到 TaskOne 类。
因为它与 TaskOne 类在同一个命名空间中,我以为自动加载器会自动加载它,但并没有。我不得不手动加载它。
加载任务
你只需要加载 taskone.php 文件即可。
[已弃用]
require_once '/path/fuel/app/tasks/taskone.php';
这样就可以加载所需的文件,但您可能不想直接在源代码中写入文件路径。
我们来考虑如何动态获取路径。
参考 Oil 命令的实现(fuel/packages/oil/classes/command.php),您可以按如下方式操作:
[受到推崇的]
<?php namespace Fuel\Tasks; class TheTask { public static function run() { # tasksディレクトリの中からTaskOneに対応するファイルを探し、そのパスを取得 $file = \Finder::search('tasks', strtolower('TaskOne')); # TaskOneのファイルをロード require_once $file; # TaskOneを実行 TaskOne::run(); return 0; } }
我们来试运行一下。
$石油精炼任务 sugoi
搞定了。就这样。
下次,我们将探讨一些更复杂的问题:如何从任务内部调用模块中的任务。
如果您觉得这篇文章有用,请点击【点赞】!
1