Closed ichynul closed 2 years ago
对于定义了多个命名空间的包,key($autoload['psr-4'])取到不可控。 除了我自己的代码,为了兼容thinkphp的一些依赖,我还定义了一个think命名空间。
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下面的是继承自真正的那个。
tpext\myadmin
packgist
Install.php
<?php namespace think; class Install extends \tpext\myadmin\Install { }
现在的问题是,只要安装其他thinkphp相关的库[think-template/think-orm/think-cache],因为里面都有think命名空间, 都匹配都我包里面的这个think\Install重新执行一遍。
think\Install
建议不要用key($autoload['psr-4'])取一个,而是遍历数组。
直接发pr吧
对于定义了多个命名空间的包,
key($autoload['psr-4'])
取到不可控。 除了我自己的代码,为了兼容thinkphp
的一些依赖,我还定义了一个think
命名空间。我使用本地git仓库作为依赖的时候取到的是第一个
tpext\myadmin
。 发布到packgist
上面再用另外一台电脑安装测试,取到的是think
(也许是排序过),就是这么邪门。 为了兼容,我只能两个命名空间都放个Install.php
,其中think
下面的是继承自真正的那个。现在的问题是,只要安装其他
thinkphp
相关的库[think-template/think-orm/think-cache],因为里面都有think
命名空间, 都匹配都我包里面的这个think\Install
重新执行一遍。建议不要用
key($autoload['psr-4'])
取一个,而是遍历数组。