我第一次尝试使用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类:
错误信息:无法找到“Framework\Models\TestModel”错误信息:无法找到“Framework\Models\TestModel”
我正在通过localhost/Framework/index.php的Web浏览器运行PHP。它一定是我没有看到的非常简单的东西,有人能为我指出吗?
3条答案
按热度按时间v2g6jxz61#
文件本身的存储空间与其他类和函数“区别开来”,但是PHP/Server并不知道物理文件在哪里,只是基于存储空间。
因此,正如人们所提到的,直接包含该文件可以让PHP确切地知道您的意思。
当PHP找不到文件时,它将调用函数spl_autoload_register(),在该方法中,人们通常会放置一个小函数来匹配命名空间和目录结构,然后加载文件。
另一种选择是在项目中包含Composer并使用PSR-4自动加载
字符串
当包含composer autoload时,它将按照您的定义在framework_directory中查找所有Framework/*。
yi0zb3m42#
您应该删除“namespace Framework”并在index.php中包含TestModel.php-类似于以下内容:
字符串
gstyhher3#
对于命名空间,一般来说,当你想创建具有相同名称的类并包含在文件中并避免致命错误时,它会被使用。我认为根据问题,作者想使用命名空间,所以所需的解决方案是
字符串