共存 spl_autoload_register 和作曲家自动加载
Coexisting spl_autoload_register and composer autoload
我有一个旧版应用程序使用 spl_autload
来加载 classes(它们没有命名空间)
<?php
spl_autoload_extensions('.class.php,.php');
set_include_path(
$listOfDir
);
spl_autoload_register();
// require composer autoloader
// can't place that line before the call spl_autoload_register without breaking everything.
require __DIR__ . "/../vendor/autoload.php";
我们最近介绍了 composer 和 Symfony container
、dependency-injection
和 config
组件。
我试图实现的是通过 composer 加载驼峰式 class(所有新的 classes 使用驼峰式来识别新代码与遗留代码)而不会导致 BC 中断。
您有关于如何让它工作的线索吗?
新的 classes 必须有命名空间吗?
PS:新的 classes 将分布在 "tons" 个文件夹中。项目规模为 700k LOC。
所以我所做的是将新 class 放入 src/
文件夹,添加命名空间并在 composer.json.
中添加 PSR-4
因为 spl_autoload 不适用于驼峰式 classes,所以我可以接受。 :-)
"autoload": {
"psr-4": {
"MyNamespace\NotLegacy\": "src/"
}
}
我有一个旧版应用程序使用 spl_autload
来加载 classes(它们没有命名空间)
<?php
spl_autoload_extensions('.class.php,.php');
set_include_path(
$listOfDir
);
spl_autoload_register();
// require composer autoloader
// can't place that line before the call spl_autoload_register without breaking everything.
require __DIR__ . "/../vendor/autoload.php";
我们最近介绍了 composer 和 Symfony container
、dependency-injection
和 config
组件。
我试图实现的是通过 composer 加载驼峰式 class(所有新的 classes 使用驼峰式来识别新代码与遗留代码)而不会导致 BC 中断。
您有关于如何让它工作的线索吗? 新的 classes 必须有命名空间吗?
PS:新的 classes 将分布在 "tons" 个文件夹中。项目规模为 700k LOC。
所以我所做的是将新 class 放入 src/
文件夹,添加命名空间并在 composer.json.
PSR-4
因为 spl_autoload 不适用于驼峰式 classes,所以我可以接受。 :-)
"autoload": {
"psr-4": {
"MyNamespace\NotLegacy\": "src/"
}
}