检查输入是否来自控制台

Check if input is from console

我想与以下人分享我的观点:

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        \Schema::defaultStringLength(191);
        $customers = Customer::get();
        \View::share('customers', $customers);
    }
}

它按预期工作,但是当我想通过 artisan 迁移我的 table 时它抛出一个错误,找不到 customers 的 table 因为它被检查了在迁移开始之前。所以我需要像

这样的东西
if(!artisan_request) {
    //request to laravel is via web and not artisan
} 

但是我没有在文档中找到任何内容。

要在控制台中检测应用程序是否运行,您可以这样做:

use Illuminate\Support\Facades\App;

if(App::runningInConsole())
{
  // app is running in console
}

看,illuminate/Foundation/Application.php:520

您可以在控制台中使用

检查您是否运行
app()->runningInConsole()

在此之下,它所做的只是检查接口类型

return php_sapi_name() == 'cli' || php_sapi_name() == 'phpdbg'

您可以在 PHP Docs site

上找到更多信息