walkor / webman-framework

webman-framework
118 stars 61 forks source link

建议插件的Install.php检测机制。 #43

Closed ichynul closed 2 years ago

ichynul commented 2 years ago

对于定义了多个命名空间的包,key($autoload['psr-4'])取到不可控。 除了我自己的代码,为了兼容thinkphp的一些依赖,我还定义了一个think命名空间。

"autoload": {
        "psr-4": {
            "tpext\\myadmin\\": "src/",
            "think\\": "think/"
        },
        "files": [
            "src/helper.php"
        ]
    }

我使用本地git仓库作为依赖的时候取到的是第一个tpext\myadmin。 发布到packgist上面再用另外一台电脑安装测试,取到的是think(也许是排序过),就是这么邪门。 为了兼容,我只能两个命名空间都放个Install.php,其中think下面的是继承自真正的那个。

<?php

namespace think;

class Install extends \tpext\myadmin\Install
{
}

现在的问题是,只要安装其他thinkphp相关的库[think-template/think-orm/think-cache],因为里面都有think命名空间, 都匹配都我包里面的这个think\Install重新执行一遍。

建议不要用key($autoload['psr-4'])取一个,而是遍历数组。

walkor commented 2 years ago

直接发pr吧