php - 未找到包含内部 namespace

标签 php namespaces

我的文件夹中有 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();
    }

}

?>

数据库.php

<?php

class database{

    public static function connect(){
        return 'connect';
    }
}

?>

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

Fatal error: Class MyProject/database not found in ...

就我而言,我不想在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

关于php - 未找到包含内部 namespace ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40089771/

相关文章:

php - 从字段不匹配条件的表中选择

javascript - jquery.upvote.js 仅适用于第一行

c++ - 将项添加到别名命名空间

ruby-on-rails - rails : methods from module included in controller not available in view

c++ - 为什么匿名命名空间优于静态全局变量?

php - 为什么 Soap 无法连接到 HTTPS?

php - 修改 php-imap 扩展以允许 oauth 身份验证

php - 通知 : undefined index with session global

C++ 将类添加到命名空间 : why?

c++ - 为什么在头文件中定义函数会产生多个定义错误,而不是类?