包括未找到的内部命名空间

时间:2016-10-17 15:02:13

标签: php namespaces

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

的index.php

'My name is Bob, her name is Sara.' -replace '(.*?)name(.*)', '$1baby$2'

MyProject.php

<?php

include ('MyProject.php');

$controller = new MyProject\MyProject();
$controller::execute();

?>

database.php中

<?php

namespace MyProject;

class MyProject{

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

}

?>

为什么当我在<?php class database{ public static function connect(){ return 'connect'; } } ?> 中包含database.php时,php会显示以下错误:

  

致命错误:在...中找不到类MyProject /数据库

就我而言,我不想在myproject.php中添加namespace,为什么会这样,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

包含的文件不继承命名空间。因此,您的数据库对象与全局命名空间相关,即\。要在另一个名称空间内调用它,请使用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

答案 1 :(得分:1)

请参阅命名空间的global space部分。您需要在反斜杠前面的全局空间中的任何类调用之前。在你的情况下:

$pdo = \database::connect();