我第一次尝试使用PHP命名空间,甚至无法获得使用2个文件的基本示例。这是我的目录设置:
/框架/
/Framework/index.php
/Framework/Models/TestModel.php
这是两个文件背后的代码。
的index.php:
namespace Framework; use \Framework\Models\TestModel; $model = new TestModel(); $model->test();
TestModel.php:
namespace Framework\Models; class TestModel { public function test() { print("test"); } }
错误只是找不到TestModel类:
致命错误:第7行的C:\ xampp \ htdocs \ Framework \ index.php中找不到类'Framework \ Models \ TestModel'
我通过localhost / Framework / index.php上的Web浏览器运行PHP。它必须是非常简单的东西,我没有看到,有人能指出它吗?
答案 0 :(得分:1)
文件本身的命名空间与其他类和函数“有区别”,但是PHP / Server不知道物理文件仅基于命名空间的位置。
因此,正如人们提到的那样,直接包含文件可以使PHP确切了解您的意思。
当PHP找不到文件时,它将调用函数spl_autoload_register(),在这种方法中,人们通常会放置一个小函数来将名称空间与目录结构进行匹配,然后根据该文件加载文件。
另一种选择是在您的项目中包含Composer并使用PSR-4自动加载
theMainList
包括作曲家自动加载功能时,它将在您定义的framework_directory中查找所有Framework/*。
答案 1 :(得分:0)
你应该删除'namespace Framework',包含TestModel.php ,而不是你的index.php - 像这样:
require_once('Models/TestModel.php');
use \Framework\Models\TestModel;
$model = new TestModel();
$model->test();