Composer是 PHP 用来管理依赖(dependency)关系的工具。它会在项目中生成一个vernder目录,里面存在着下载的扩展。当使用的扩展不满足需求时,我们就要重构它。


以laravel-dcat为例:扩展验证

image-20210630111911768

image-20210630112107878

我重构了dcat的登录验证,但是这样在vender中修改。当进行 composer update 更新时,vender中的内容将会被重置,这样原本写的内容一下回到解放前。

so

  1. 新建文件 autoload.php ,这里我放到 app\Overwrite

    image-20210630112540284

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    spl_autoload_register(function ($class) {

    $map = [
    'Dcat\Admin\Http\Controllers\AuthController' => __DIR__ . '/AuthController.php'
    ];
    if (isset($map[$class])) include $map[$class];

    }, true, true);

    AuthController中的内容需要全部复制的,不是继承!

  2. composer.json 中加入autoload.php

    image-20210630113002333

    重新加载

    composer dump-autoload

至此,完成!