laravel框架如何对vendor内部的class重构

举个简单的例子laravel框架中的migration功能

class Blueprint中集成了一个function timestamps 可以为数据库添加两个字段,不过会使用数据库格式为timestamp,想要改造一下这个function,例如我想要修改成如下:

public function timestamps($precision = 0)
    {        $this->integer('created_at')->nullable();        $this->integer('updated_at')->nullable();        //或集成其他字段
    }

我尝试过
1.在class Blueprint中直接改,但是考虑到下次的composer update 就会将这个修改覆盖掉。
2.写一个继承,在继承内重构这个function,但是在执行 make:migation时报错
3.之前看到一个方法 用trial insteadof 不过好像得是 Blueprint 同为 trail才可以

想请问一下大家有什么方法可以解决!


慕工程0101907
浏览 873回答 2
2回答

跃然一笑

针对第二种方案,你可以在调用Schema::create()之前,先设置好你那个自定义的Blueprint

狐的传说

Schema::blueprintResolver(function($table, $callback, $prefix) {    return new EnhancedBlueprint($table, $callback, $prefix); }); Schema::create('xxx', function(Blueprint $table) {    //这里的Blueprint实例实际上就是EnhancedBlueprint}); ---------- 修改后 $schema = Schema::getFacadeRoot(); $schema->blueprintResolver(function($table, $callback, $prefix) {    return new EnhancedBlueprint($table, $callback, $prefix); }); $schema->create('xxx', function(Blueprint $table) { });
打开App,查看更多内容
随时随地看视频慕课网APP