我在PHP中遇到了一个问题。首先,我必须说我不是这个星球上经验丰富的PHP开发人员。
我的代码/问题如下:
在档案Controllers\TestController.php
中:
<?php
namespace My\Test\Controllers;
class TestController
{
public function HelloTest()
{
echo 'Hello!';
}
}
?>
当我想将这个类包含在另一个像这样的
的php文件中时档案Models\TestModel.php
:
<?php
namespace My\Test\Models;
use My\Test\Controllers;
class TestModel
{
public function TestModelFunction()
{
$control = new TestClass();
$control->HelloTest();
}
}
?>
档案index.php
_
<?php
use My\Test\Models;
$model = new TestModel();
$model->TestModelFunction();
?>
那是行不通的......我总会得到以下错误:
找不到类'TestModel'!
我现在添加:
index.php中的 include_once 'Models/TestModel.php'
和
include_once '..Controllers/TestController.php'
中的TestModel.php
然后它有效......
文件夹结构:
Project
|-Models
| TestModel.php
|-Controllers
| TestController.php
|index.php
但我真的必须指定文件的每个时间吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
命名空间逻辑将代码分成不同的......好吧,命名空间。它与包含该命名空间代码的文件无关。所以,是的,除了命名空间之外,你还需要以某种方式include
文件(例如自动加载器)。
答案 2 :(得分:0)
另一种方法是使用自动加载器(http://php.net/manual/en/language.oop5.autoload.php)。你可以在那里找到一些好的开源自动加载器。