沃梦达 / 编程问答 / php问题 / 正文

如何使用作曲家生成的类图添加不区分大小写的自动加载?

How to add case insensitive autoloading using composer generated classmap?(如何使用作曲家生成的类图添加不区分大小写的自动加载?)

本文介绍了如何使用作曲家生成的类图添加不区分大小写的自动加载?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个遗留项目,在不同情况下有声明和类使用.

I have legacy project which has declartions and class usings in different cases.

我想将源升级到现代状态.首先,我想用作曲家自动加载替换传统的自动加载.但是 composer 不提供不区分大小写的自动加载.

I want upgrade source to modern state. First I want to replace legacy autoloading by composer autoloading. But composer does not provide case insensitive autoloading.

如何使用composer classmap和insensitive autoload?

How to use composer classmap and insensitive autoload?

推荐答案

将 classmap 添加到 composer.json.

"autoload": {
    "classmap": ["folder1/", "folder2/"]
},

然后运行composer.phar dumpautoload来创建composer/autoload_classmap.php.

更改您的代码.之后

require VENDOR_PATH . '/autoload.php';

添加

$class_map = require VENDOR_PATH . '/composer/autoload_classmap.php';
$new_class_map = array();
foreach ($class_map as $class => $file)
    $new_class_map [strtolower($class)] = $file;
unset($class_map);
spl_autoload_register(function ($class)use($new_class_map)
        {
        $class = strtolower($class);
        if (isset($new_class_map[$class]))
            {
            require_once $new_class_map[$class];
            return true;
            }
        else
            return false;
        }, true, false);
unset($new_class_map);

这是我找到的最简单的方法.

This is the simplest way I have found.

这篇关于如何使用作曲家生成的类图添加不区分大小写的自动加载?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何使用作曲家生成的类图添加不区分大小写的自动加载?