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

如何在PHP中包含名称空间文件?,php,apache2,doctrine-orm,xampp,Php,Apache2,Doctrine Orm,Xampp,我在PHP开发中遇到了一个问题。首先我必须说,我不是这个星球上经验丰富的PHP开发人员 我的代码/问题如下: 在文件Controllers\TestController.php中: <?php namespace My\Test\Controllers; class TestController { public function HelloTest() { echo 'Hello!'; } } ?> <

我在PHP开发中遇到了一个问题。首先我必须说,我不是这个星球上经验丰富的PHP开发人员

我的代码/问题如下:

在文件
Controllers\TestController.php
中:

  <?php
  namespace My\Test\Controllers;

  class TestController
  {
     public function HelloTest()
     {
          echo 'Hello!';
     } 
  }
?>
<?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();
  ?>

但我真的必须每次指定文件的位置吗?

名称空间从逻辑上将代码分隔为不同的。。。嗯,名称空间。它与包含包含该名称空间代码的文件无关。因此,是的,除了给文件命名外,您确实需要以某种方式(例如自动加载器)包含文件。

是的,您必须始终包含定义类的文件

名称空间只是将类打包在一起的一种方式,而不是自动包含PHP文件的方式


如果您正在寻找一种在需要时自动包含PHP文件的方法,请查看。

另一种方法是使用autoloader()。你可以在那里找到一些好的开源自动加载器。

如果你一次只问一个问题,这个网站效果最好。请仔细阅读。另一个强烈建议的阅读是:。-顺便说一句,您的代码对于名称空间看起来不错,但请记住,在使用它之前,您需要先将文件包含在类中。“但请记住,在使用它之前,您需要先将文件包含在类中”意味着我必须始终编写一次include_?通常Doctrine2应该自动处理这一问题(这称为自动加载)。我对Doctrine2不太熟悉,我不能直接告诉你你的情况有什么问题(或先看哪里),但我编辑了你的问题,希望它更清晰,吸引更多用户。不要过早接受答案。如果你接受一个,你就不会得到更多(正确/完整)一个。谢谢你的提示。但是anwser beyond对于这个问题已经足够好了。我想我必须为这个问题写另一个问题。
Project
|-Models
|  TestModel.php
|-Controllers
|  TestController.php
|index.php