我在文件夹中有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
,为什么会这样,我该如何解决这个问题?
答案 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();