我在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();
?>
那行不通...我总是会收到以下错误:
找不到类"测试模型"!
当我现在添加:
include_once 'Models/TestModel.php'
索引中.php
和
include_once '..Controllers/TestController.php'
TestModel.php
然后它工作...
文件夹结构:
Project
|-Models
| TestModel.php
|-Controllers
| TestController.php
|index.php
但是我真的必须指定文件所在的每个时间吗?
是的,您将始终必须包含定义类的文件。
命名空间只是将类打包在一起的一种方式,而不是自动包含 PHP 文件的一种方式。
如果您正在寻找一种在需要时自动包含 PHP 文件的方法,请查看自动加载。
命名空间在
逻辑上将代码分成不同的...好吧,命名空间。它与包含包含该命名空间代码的文件无关。所以是的,除了命名空间之外,您还需要以某种方式(例如自动加载器)include
文件。
另一种方法是使用自动加载器 (http://php.net/manual/en/language.oop5.autoload.php)。你可以在那里找到一些好的开源自动加载机。