Как вы читаете номер строки выходного файла и переходите на этот номер строки во входном файле

Это выполнимо довольно логично, по крайней мере, в Laravel 5

Подкласс MigrationCreator и переопределить getStubPath(), просто скопировав функцию из исходного класса (он будет использовать ваш подкласс __DIR__)

<?php

namespace App\Database;

use Illuminate\Database\Migrations\MigrationCreator;

class AppMigrationCreator extends MigrationCreator
{
    public function getStubPath()
    {
        return __DIR__.'/stubs';
    }
}

Записать поставщика услуг для переопределения migration.creator с вашим собственным подклассом (он должен быть отложенным поставщиком услуг, потому что вы не можете переопределить отложенную привязку с нетерпением):

<?php

namespace App\Database;

use Illuminate\Support\ServiceProvider;

class AppMigrationServiceProvider extends ServiceProvider
{
    protected $defer = true;

    public function register()
    {
        $this->app->singleton('migration.creator', function ($app) {
            return new AppMigrationCreator($app['files']);
        });
    }

    public function provides()
    {
        return ['migration.creator'];
    }
}

Добавьте своего поставщика услуг в config/app.php по умолчанию.

Наконец, скопируйте vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs рядом с подклассом MigrationCreator (в этом примере он станет app/Database/stubs) и отредактирует шаблоны для ваших нужд.

Сохраните имена DummyClass и DummyTable, поскольку они будут заменены на str_replace(), чтобы создать фактические файлы миграции.

0
задан AmyC 26 February 2015 в 11:37
поделиться