在Laravel中创建命令时如何避免重复的内容file_put_contents

时间:2018-07-28 07:00:59

标签: php laravel laravel-5

我正在laravel中创建一个命令,在该命令中我将视图正确复制到views文件夹中,但是碰巧我想添加一些路由,并且按以下方式进行操作

file_put_contents(
       base_path('routes/web.php'),
       file_get_contents(__DIR__.'/stubs/make/routes.stub'),
       FILE_APPEND
);

我正确添加了路由,但是每次我使用php artisan make:micommand命令时都会这样做,是否有任何方法可以评估是否已经存在路由而不添加它们?

使用Laravel 5.6。*

2 个答案:

答案 0 :(得分:1)

我认为没有内置的方法可以检查此问题。但是我的一个想法是在routes/web.php中添加一个非常独特的注释(例如,作为存根的一部分),您可以随后对其进行检查。

stubs/make/routes.stub

// my.pkg.routes.web
Route::group([], function () {
    Route::resource('something');
});

命令:

$routes = file_get_contents(base_path('routes/web.php'));
if(strpos($routes, '\/\/ my.pkg.routes.web') === false) {
    file_put_contents(
        base_path('routes/web.php'),
        file_get_contents(__DIR__.'/stubs/make/routes.stub'),
        FILE_APPEND
    );
}

您还可以在命令类中使注释成为常量,然后从那里添加注释(可能更有意义)。

答案 1 :(得分:0)

您可以为一条路由分配一个名称,然后在命令执行期间通过Route::has方法进行检查。

分配名称:

Route::get('test', function () {
    dd('Testing route');
})->name('test');

在命令中检查路由:

if (!Route::has('test')) {
    <append your routes via stub>
})