共存 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 containerdependency-injectionconfig 组件。

我试图实现的是通过 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/"
    }
}