Php 如何通过自动加载从另一个类加载类
如何使用composerPhp 如何通过自动加载从另一个类加载类,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/
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;
}
}