命名空间内未找到包含


Include inside namespace not found

我在一个文件夹中有3个文件:

index . php

<?php
include ('MyProject.php');
$controller = new MyProject'MyProject();
$controller::execute();
?>

MyProject.php

<?php
namespace MyProject;
class MyProject{
    public static function execute(){
        include ('database.php');
        $pdo = database::connect();
    }
}
?>

database.php

<?php
class database{
    public static function connect(){
        return 'connect';
    }
}
?>

为什么当我在myproject.php中包含database.php时,php显示以下错误:

致命错误:类MyProject/database不在…

在我的情况下,我不想在database.php中添加namespace,为什么会发生这种情况,我如何解决这个问题?

包含的文件不继承命名空间。因此,您的数据库对象与全局名称空间(')相关。要在另一个名称空间中调用它,请使用use语句或在类名之前添加全局名称空间':

'database::connect();

namespace MyProject;
use 'database;
class MyProject{
    public static function execute(){
        include ('database.php');
        $pdo = database::connect();
    }
}

: http://php.net/manual/en/language.namespaces.importing.php

请参阅名称空间的全局空间部分。您需要在全局空间中的任何类调用之前使用反斜杠。在你的例子中:

$pdo = 'database::connect();