php - 如何在命令之外获取 laravel 命令参数,例如在服务提供商?

标签 php laravel

我可以用这段代码在命令中获取参数:

$this->argument();

但是如何从外部获取参数呢?

如果我查看 argument() 函数的源代码,我会看到:

public function argument($key = null)
{
    if (is_null($key)) {
        return $this->input->getArguments();
    }

    return $this->input->getArgument($key);
}

我想检测命令“php artisan migrate:refresh --seed”何时运行,因为我希望模型中的某些代码在本地主机环境中运行,但在播种期间不在本地主机环境中运行...

最佳答案

laravel 获取命令参数的机制非常复杂。我可以使用\App::runningInConsole() 检测应用程序是否在控制台中运行,但是没有函数可以获取参数,例如:

if(\App::runningInConsole()){
    $args = \App::getConsoleArguments(); // doesn't exist :(
}

但是 $_SERVER['argv'] 在这里很有用,当“php artisan migrate:refresh --seed”在 $_SERVER['argv'] 中运行时是这个数组:

Array
(
    [0] => artisan
    [1] => migrate:refresh
    [2] => --seed
)

所以我可以使用这段代码:

if( ! empty($_SERVER['argv'][2] )  &&  $_SERVER['argv'][2] == '--seed'){
    //
}

关于php - 如何在命令之外获取 laravel 命令参数,例如在服务提供商?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41830168/

相关文章:

mysql - 查询生成器 : orderBy not working after group by

php - 为什么 PHP 需要递归存储相同的全局数据?

php - 由于 apache2 配置,Laravel 4 Controller 路由无法正常工作

php - Laravel:获取数组元素以显示在表格上

php - 适用于大型数据库的 Laravels Eloquent ORM 或查询生成器

php - Laravel 如何测试 Controller 中的复选框是否被选中

php - SQL显示表不起作用

php - 如何逐行处理大型 CSV 文件?

php - 将解码后的数据存储到不同的 ID

javascript - strip 错误 400 - 不能多次使用 strip token