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里添加谁都知道,不过还是很感谢各位的回答

路漫漫贵在选择,路遥遥贵在坚持
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8

为什么多个项目要放在一起?

4年前 评论
ares__ (楼主) 4年前
qf-Z (作者) 4年前
ares__ (楼主) 4年前
ares__ (楼主) 4年前
ares__ (楼主) 4年前
ares__ (楼主) 4年前

额,就算用一些公用方法,多个项目放一起还是感觉不太好
你后边的人维护估计很难

4年前 评论
ares__ (楼主) 4年前

我的问题点是能不能在代码里手动注册加载命名空间,其他的不是重点,知道的可以说一下,虽然我可以自己spl_autoload_register去自己写个加载方法,我就是想知道有没有系统自带的方法之类的,百度了没找到

4年前 评论

@mingzaily 是的,你说的对,不过看清楚我要解决的,我问的不是这个

4年前 评论

有过类似的目录结构: file laravel6以下可以用app:name修改命名空间,laravel6及以上可以安装扩展包实现

index.php和artisan两个文件需要修改vendor路径

file

composer dumpautoload

4年前 评论

可以使用 Git 子模块共享

4年前 评论

这样挺好的,部署的时候,package:discover 这些会报错,但是忽略掉就行了,没有影响

"psr-4": {
    "App\\": "app/""App1\\": "app1/",
    "App2\\": "app2/",
    ...
 }
4年前 评论

自己注册包,之后记得composer一下

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Toplan\\Sms\\": "app/Services/LaravelSms/src"
    },
    "files": [
        "app/Helpers/Functions.php"
    ],
    "classmap": [
        "database/seeds",
        "database/factories"
    ]
},
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!