首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从laravel 5中的控制器运行composer dump-autoload

从laravel 5中的控制器运行composer dump-autoload
EN

Stack Overflow用户
提问于 2016-05-15 20:54:27
回答 3查看 18.9K关注 0票数 5

我想在控制器中运行不带外壳命令的composer dump-autoload

在laravel 4中我使用Artisan::call('dump-autoload');

但在laravel 5中,此命令不起作用。

EN

回答 3

Stack Overflow用户

发布于 2017-03-02 20:10:09

在>= Laravel 5.0中没有Artisan::call('dump-autoload');命令,但是如果您仍然想使用此命令,并且不想在execsystem中使用解决方案,则需要通过以下方式创建自己的命令:php artisan make:console DumpAutoload for Laravel version > 5.3 (您需要在app/Console/Kernel.php中向$commands数组添加新命令)。然后你需要将Composer类注入到你的新命令构造中:

public function __construct(Composer $composer)
{
    parent::__construct();

    $this->composer = $composer;
}

然后,您可以在handle()方法中运行dumpAutoloads()

public function handle()
{
    $this->composer->dumpAutoloads();
}

检查vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateMakeCommand.php中的MigrateMakeCommand类,有一个使用它的命令示例。下面是我的命令:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Foundation\Composer;

class DumpAutoload extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'dump-autoload';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Regenerate framework autoload files';

    /**
     * The Composer instance.
     *
     * @var \Illuminate\Foundation\Composer
     */
    protected $composer;

    /**
     * Create a new command instance.
     *
     * @param Composer $composer
     * @return void
     */
    public function __construct(Composer $composer)
    {
        parent::__construct();

        $this->composer = $composer;
    }

    /**
     * Execute the console command.
     *
     * @return void
     */
    public function handle()
    {
        $this->composer->dumpAutoloads();
        $this->composer->dumpOptimized();
    }
}
票数 11
EN

Stack Overflow用户

发布于 2016-05-15 21:01:54

尝尝这个

system('composer dump-autoload');
票数 6
EN

Stack Overflow用户

发布于 2021-01-14 19:43:03

您可以运行此命令以获得更好的结果。它会像命令行一样给出你的结果。

 return  "<pre>". shell_exec ('composer dump-autoload')."</pre>"; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37238547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档