使用PHP CLI执行路由(控制器/操作)并检测CLI请求

sha*_*mil 4 command-line-interface laravel laravel-4

在Laravel 4中有没有办法使用PHP-CLI运行我的控制器/动作?我有一个控制器/操作,如果请求来自CLI,我想扩展以执行替代操作,那么有没有办法将请求标识为CLI请求?

此站点上的Laravel文档似乎表明有一个方法Request :: cli()用于确定当前请求是否通过Artisan CLI,但是当我在Laravel 4中使用该方法时,它会抛出一个错误:

调用未定义的方法Illuminate\Http\Request :: cli()

基本上,我刚刚从CakePHP迁移到Laravel,并希望完成类似于本文中描述的内容(对于CakePHP):从cron和命令行调用控制器操作

我知道我可以使用Laravel 4 Artisan Commands,但我想使用的方法可能吗?如果是这样,怎么样?

Jav*_*olz 9

正如Rob已经说过,要确定当前脚本是在控制台中运行App::runningInConsole()还是使用简单的PHP php_sapi_name() == 'cli'.

至于从控制台运行controller @ action,你可以使用curl或者wget请求你的一个路由,但我认为正确的方法是使用自定义artisan命令.您的控制器是类,因此您可以实例化它们并在您的工匠命令中随意使用:

$controller = new SomeController;
$controller->someAction();
Run Code Online (Sandbox Code Playgroud)

观看此视频,了解如何轻松开发您自己的工匠命令.