2

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」が見つかりません!

私が今追加するとき:

include_once 'Models/TestModel.php'index.phpで、
そして それで動作します...
include_once '..Controllers/TestController.php'TestModel.php

フォルダ構造:

Project
|-Models
|  TestModel.php
|-Controllers
|  TestController.php
|index.php

しかし、ファイルが存在するすべての時間を本当に指定する必要がありますか?

4

3 に答える 3

1

はい、クラスを定義するファイルを常に含める必要があります。

名前空間は、クラスを一緒にパッケージ化する方法であり、PHPファイルを自動的に含める方法ではありません。

必要に応じてPHPファイルを自動的に含める方法をお探しの場合は、autoloadをご覧ください。

于 2012-05-09T08:18:03.733 に答える
0

もう1つのアプローチは、オートローダー(http://php.net/manual/en/language.oop5.autoload.php)を使用することです。あなたはそこにいくつかの良いオープンソースオートローダーを見つけることができます。

于 2012-05-09T09:13:50.340 に答える
0

名前空間は、コードを論理的に異なるものに分離します...まあ、名前空間。その名前空間のコードを含むファイルを含めることとは何の関係もありません。そうです、名前空間に加えてinclude、何らかの方法(オートローダーなど)でファイルを作成する必要があります。

于 2012-05-09T08:17:31.710 に答える