如何在 PHP 中包含命名空间文件


How to Include namespaced Files in PHP?

我在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)。你可以在那里找到一些好的开源自动加载机。