我如何从另一个类加载自动加载的类

时间:2016-12-25 13:33:25

标签: php composer-php autoloader

如何使用编辑器 Connect{}

从其他班级(API{})加载班级(autoloader.php

我的文件层次结构

main.php
composer.json
src\
------ Database
---------- Connect.php
------ API
---------- API.php
vendor\
------ [...]

Composer autoload

"autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }

main.php

require_once __DIR__.'/vendor/autoload.php';
new App\API\API();

API.php

namespace App\API;

class API {
    function __construct (){

        echo '( ';
        new App\Database\Connect; //THE CODE STOPS HERE
        echo ' )';
    }
}

Connect.php

namespace App\Database;

class Connect {
    function __construct () {
        echo('Connecting...');
    }
}

问题是我无法访问另一个类,我知道使用global变量或在__construct中传递类可能是很好的解决方案,但我需要从另一个实例化新类直接

1 个答案:

答案 0 :(得分:0)

答案是反斜杠......

new App\Database\Connect;

应该是

new \App\Database\Connect;

在命名空间正下方的类外键入use App\Database\Connect;,然后像往常一样构建类$connect = new Connect()

说明

在内部类中,命名空间行为就像这样

namespace App\API;
class API {
    function __construct (){
        // WRONG : PHP will look for App\API\App\Database\Connect
        new App\Database\Connect; 

        // RIGHT : PHP will look for App\Database\Connect
        new \App\Database\Connect; 
    }
}

或其他解决方案:

namespace App\API;
use App\Database\Connect;
class API {
    function __construct (){
        new Connect; 
    }
}