使用作曲家加载时如何使用__autoload函数


app/Core
contollers

这是我的网站结构,用于放置主类,我用户作曲家psr-4规则将类导入app/Core文件夹下。

作曲家.json

{
    "autoload": {
        "psr-4": {
            "Core\": ["app/Core"]
        }
    }
}

索引.php

<?php
include 'vendor/autoload.php';
new Core/Api; // it's work

它工作正常,但我想在控制器文件夹下自动加载类而不使用 namespace ,所以我使用__autoload函数如下:

索引.php

<?php
include 'vendor/autoload.php';
function __autoload($class_name) {
    include 'controllers/' . $class_name . '.php';
}

new Test // Fatal error: Class 'test'

如果我删除include 'vendor/autoload.php';它会起作用,所以我认为代码是正确的,我知道我可以在composer.json中使用classmap,但是每次添加新类时都需要dump-autoload,如何处理冲突?

您不必使用自己的自动加载实现。您可以对所有类使用作曲家自动加载。

{
    "autoload": {
        "psr-0": { "": "src/" }
    }
}

https://getcomposer.org/doc/04-schema.md#psr-0

或者,您可以创建类映射

https://getcomposer.org/doc/04-schema.md#classmap

附言:事实上,您可以在PSR-4中使用空命名空间。

相关内容

  • 没有找到相关文章

最新更新