如何使用编辑器 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
中传递类可能是很好的解决方案,但我需要从另一个实例化新类直接
答案 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;
}
}