php - 共存 spl_autoload_register 和 composer autoload

标签 php composer-php autoload spl

我有一个遗留应用程序,它使用 spl_autload 来加载类(它们没有命名空间)

<?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 加载驼峰命名法类(所有新类都使用驼峰命名法来识别新代码与遗留代码)而不会导致 BC 中断。

您是否有关于如何让它工作的线索? 新类必须有命名空间吗?

PS:新类(class)将分布在 “大量” 文件夹中。项目规模为700k LOC。

最佳答案

所以我所做的是将新类放入 src/ 文件夹,添加命名空间并在 composer.json 中添加 PSR-4

因为 spl_autoload 不适用于驼峰式类,所以我可以接受。 :-)

"autoload": {
    "psr-4": {
        "MyNamespace\\NotLegacy\\": "src/"
    }
}

关于php - 共存 spl_autoload_register 和 composer autoload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31458450/

相关文章:

php - 如何使用 Composer 获取多个 vendor 目录?

php artisan 不返回任何东西

PHP5 框架 : Autoloading and Opcode Caching

php - 管理 Joomla session 超时

php - 杂乱的数据显示在 Blade ​​中但不在移动 View 中

php - 如何在javascript中使用从数据库返回的行中的数据

php - Doctrine 没有加载类 MappingException

php - XML 输出并排显示

laravel - Composer - vcs 上请求的包问题

php - 是composer的autoload必须有相同的文件结构?