当你有多个独立项目需要使用同一个Laravel的Vendor进行项目驱动时,在未安装Composer的情况下(我有个朋友说安装了Composer后没有这个问题,所以我猜测可能安装Composer后不会出现这样的问题,有待考证),会自动去读取Vendor/composer/autoload_classmap.php文件,以拼凑Laravel所需的各项PHP程序路径。
会自动寻找与Vendor相同目录下的app文件夹(项目文件夹):
'BaseController' => $baseDir.'/app/controllers/BaseController.php',
感兴趣的朋友可以var_dump($baseDir)显示下变量的结果。
如果只有一个项目的朋友,而且这个项目与Vendor在同一个目录下(同一水平),则可用下面的语句代替原本$baseDir那行:
$baseDir = dirname(dirname($vendorDir));
就是将$baseDir设为Vendor上一层目录。
不过我更推荐下面的方法:
<?php // autoload_classmap.php @generated by Composer $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array(); //中断原来的配置读取,因为返回空数组的缘故,Laravel框架会自动去找到路径,而不是依赖这份文件
由于业务场景需求,我有3个独立项目需要使用一份Laravel框架,因此目录结构是这样的:
这个方法仅仅解决了开发环境中的项目搭建,但是在项目正式运行的时候总不可能让框架一直查找各个文件的位置吧,会浪费很多不必要的性能。建议实打实的修改这份文件,有好想法的朋友请留言提出哦~!
发表回复