我在一个文件夹中有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();