[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
加载中...
1票,平均分:1.00/11
3,640
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者