Laravel 怎么手动注册添加命名空间?
如题,我现在是多个项目公用vendor和其他一些公用的方法和类,现在在app同级目录还有类似于app1,app2,app3这样的多个项目,我的项目目录结构大致是这样子:
- app1—————-应用一
- app2—————-应用二
- app3—————-应用三
- extend(下面包含vendor和composer那一堆乱七八糟的文件)
- common————–公用的类和其他一些公用文件
部署的时候分开部署,app1+extend+common, app2+extend+common….
我在RouteServiceProvider里设置对应的namespace,但是运行时候提示找不到类,原因是命名空间无法解析,我知道可以在composer里添加
"psr-4": {
"App\\": "app/",
"App1\\": "app1/",
"App2\\": "app2/",
...
},
然后运行composer dump-autoload可以,但是我现在是部署的时候不会app1,app2,app3全部一起部署,而是分开部署的,部署app的时候app1,app2…都会找不到,
目前我自己的解决方案是在composer里面注册了一下app的上一级目录去解决:
"psr-4": {
"" : "../../"
},
但是感觉不是太好,所以想在程序里面手动添加命名空间,类似于tp框架里的addnamespace和yii框架里的配置文件设置alias去实现添加注册命名空间,请问laravel这个要怎么实现?怎么可以在程序里面手动注册添加命名空间?
再说一次:我是问有没有在php代码里添加命名空间的方法,不是问怎么添加命名空间,在composer里添加谁都知道,不过还是很感谢各位的回答
关于 LearnKu
为什么多个项目要放在一起?
额,就算用一些公用方法,多个项目放一起还是感觉不太好
你后边的人维护估计很难
我的问题点是能不能在代码里手动注册加载命名空间,其他的不是重点,知道的可以说一下,虽然我可以自己spl_autoload_register去自己写个加载方法,我就是想知道有没有系统自带的方法之类的,百度了没找到
@mingzaily 是的,你说的对,不过看清楚我要解决的,我问的不是这个
有过类似的目录结构:
laravel6以下可以用app:name修改命名空间,laravel6及以上可以安装扩展包实现
index.php和artisan两个文件需要修改vendor路径
composer dumpautoload
可以使用 Git 子模块共享
这样挺好的,部署的时候,package:discover 这些会报错,但是忽略掉就行了,没有影响
自己注册包,之后记得composer一下