我在同一目录中创建了两个文件。
test.php
<?php
namespace one;
class Greet{
public function __construct() {
echo 'Hello';
}
}
namespace two;
class Fruit{
public function __construct(){
echo 'Orange';
}
}
和tester.php
:
<?php
error_reporting('-1');
use one\Greet;
$object = new Greet();
当我运行tester.php
时出现错误:
Fatal error: Class 'one\Greet' not found in C:\wamp\www\tester.php on line 5
它可能是什么原因?我确实指定了我想要使用的命名空间。
答案 0 :(得分:0)
您的test.php
中未包含tester.php
个文件。
撰写use one\Greet;
并不意味着会包含test.php
。
您必须自己将其包含在require
或include
construct:
error_reporting('-1');
include 'test.php';
use one\Greet;
$object = new Greet();
或者注册自动加载器功能,它会根据您仍然定义的某些逻辑自动尝试加载类。有关autoloading的更多信息。
最后 - 在一个文件中定义多个名称空间不推荐。