0

私の会社 (私も) の製品は PHP 5.2 を使用していました。

5.4 に切り替えたいので、初めて 5.4 でいくつかの基本的なテストを行っています。

PSR 0 に従って、簡単なテストのために次のフォルダー構造に従いました。

Projectfolder
   |
   + index.php
   |
   + lib
      |
      + vendor
          |
          +  mylib
               |
               + MyClass.php (Having namespace \mylib )

と呼ばれるコードは次のMyClass.phpとおりです。

namespace \mylib;
class MyClass {
    public $testA;
    public function MyClass(){
        $this->testA = "test entry";
    }
}

私の問題は、index.php ファイルで MyClass のインスタンスを取得する方法です。

名前空間の前に、私はこれを行うことができました:

include "lib/vendor/mylib/MyClass.php";
$myClass = new MyClass();
echo $myClass->testA;

名前空間を使用して、次のコードを試します。

<?PHP
use mylib\MyClass
$myClass = new MyClass();
echo $myClass->testA;

ただし、次のエラーが表示されます。

致命的なエラー: クラス 'mylib\MyClass' が見つかりません ...

私の問題は、PHP にフォルダー内の名前空間ファイルを検索するように指示するにはどうすればよいかということですlib\vendor

Java では、通常、クラスパスを定義します。PHPに同様の設定はありますか?

名前空間チュートリアルのいくつかの例に見られるように、使用するすべてのクラスを含むすべての PHP ファイルを含める必要があります (10、20、50 の任意の数)。そうしないと、PHP に名前空間を導入する目的全体が無効になると思います。

4

1 に答える 1

2

WITH 名前空間であっても、ファイルを含める必要があります。名前空間は、それらが含まれた後にそれらのクラスを参照するためのものです。

あなたができるように

include "lib/vendor/mylib/MyClass.php";
use mylib;
\mylib\myClass::myFunction();

それなしnew MyClass();

詳細な例については、 http://php.net/manual/en/language.namespaces.phpを参照してください。

于 2013-02-09T15:26:17.303 に答える