[FuelPHP 1.7] 从任务运行任务
我是开发团队的日下部。
在创建 FuelPHP 任务时,您是否想过从任务中执行任务?我会写一个关于这个的故事。
从任务运行任务
假设有一个任务执行时显示sugoi,如下:
任务一.php
<?php namespace Fuel\Tasks; class TaskOne { public static function run() { \Cli::write('sugoi'); return 0; } }
考虑从另一个任务中运行此 TaskOne。
将调用 TaskOne 的任务定义为 TheTask。
目录结构是
燃料
└应用程序
└任务
├taskone.php
└thetask.php
假设
任务.php
<?php namespace Fuel\Tasks; class TheTask { public static function run() { TaskOne::run(); return 0; } }
你不认为你能做到吗?让我们运行 TheTask。
$ oil精炼 TheTask 致命错误 - 在第 8 行 APPPATH/tasks/thetask.php 中找不到类“Fuel\Tasks\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; } }
我会尝试运行它。
$ 炼油 TheTask sugoi
完成了。就这样。
下次,我们将考虑一些更复杂的事情:如何从任务内调用模块内的任务。
如果您觉得这篇文章有帮助,请点赞!