我有一个使用案例,当应用程序通过Artisan命令行运行(如迁移,种子,路由列表)时,我们需要修改应用程序流程。
在Laravel 4中,可以像这样实现:
App::runningInConsole()
Laravel 5里有对应的功能吗?
在这种情况下,使用环境变量(.env)不是首选,因为这些命令有时需要在生产环境上运行(指向生产资源),我更愿意避免使用重复的(.env.commandline)文件。
我不确定之前的版本如何,但在 Laravel 5.2 中仍可以使用 App::runningInConsole()
,尽管文档中没有提到。
php_sapi_name
(http://php.net/manual/en/function.php-sapi-name.php)来判断脚本是不是从命令行启动的。if (strpos(php_sapi_name(), 'cli') !== false) {
// Run from command
}
虽然在每种情况下,您可能需要检查文档以找到要检查的正确值(有时可能会有所不同),但基本上通过命令启动的脚本应始终具有不同的输出。
截至Laravel 5.1版本,以下代码可用:$app->runningInConsole()
基础用法:
if (! $app->runningInConsole()) {
// do something
}
任何人都可以使用laravel app()
帮助函数避免任何与命名空间相关的问题。因此,要检查脚本是否在cli或浏览器中运行,可以使用这行代码app()-> runningInConsole()
基本用法:
if ( app()->runningInConsole() ){
// it's console.
}
5.0.35
中使用它。 - user2094178\App::runningInConsole()
。 - Deac KarnsApp::runningInConsole()
和app()->runningInConsole()
方法来判断是否在命令行模式下运行。 - lewis4u