Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过自动加载从另一个类加载类_Php_Composer Php_Autoloader - Fatal编程技术网

Php 如何通过自动加载从另一个类加载类

Php 如何通过自动加载从另一个类加载类,php,composer-php,autoloader,Php,Composer Php,Autoloader,如何使用composerautoloader.php从另一个类(API{})加载一个类(Connect{}) 我的文件层次结构 main.php composer.json src\ ------ Database ---------- Connect.php ------ API ---------- API.php vendor\ ------ [...] 作曲家自动加载 "autoload": { "psr-4": { "App\\": "src/

如何使用composer
autoloader.php从另一个类(
API{}
)加载一个类(
Connect{}

我的文件层次结构

main.php
composer.json
src\
------ Database
---------- Connect.php
------ API
---------- API.php
vendor\
------ [...]
作曲家自动加载

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

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

class API {
    function __construct (){

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

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

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

class API {
    function __construct (){

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

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

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

class API {
    function __construct (){

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

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

问题是我不能从另一个类访问任何类,我知道使用
global
变量或在
\uu-construct
中传递类可能是很好的解决方案,但我需要直接从另一个类实例化新类。

答案是放反斜杠

new App\Database\Connect;
应该是

new \App\Database\Connect;
键入
使用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; 
    }
}