其他分享
首页 > 其他分享> > 使用作曲家加载时如何使用__autoload函数

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

作者:互联网

app/Core
contollers

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

composer.json

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

index.php

<?php

include 'vendor/autoload.php';

new Core/Api; // it's work

它工作正常,但是我想在不使用命名空间的情况下自动加载controllers文件夹下的类,因此我使用__autoload函数,例如:

index.php

<?php

include 'vendor/autoload.php';

function __autoload($class_name) {
    include 'controllers/' . $class_name . '.php';
}


new Test // Fatal error: Class 'test'

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

解决方法:

您不必使用自己的自动加载实现.您可以对所有类使用composer自动加载.

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

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

或者,您可以创建课程地图

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

ps.确实,您可以在psr-4中使用空名称空间.

标签:composer-php,php
来源: https://codeday.me/bug/20191121/2048504.html