-1

これが重複していないことを本当に願っていますが、ここに行きます:

Zend のオートローダーを使用してクラスをロードします。Common/TestTest.php に実装されているクラス (Common_TestTest) をインスタンス化するときに、少なくとも正しいファイルをロードします。しかし、次のエラーメッセージが表示されます。

「クラス Common_TestTest が Common/TestTest.php に見つかりませんでした。」

クラス以外の TestTest.php には何もありません。

<?php

class Common_TestTest extends PHPUnit_Framework_TestCase
{
    public function testTesting() {
        $this->assertTrue(true);
        $this->assertFalse(true);
    }
}

ファイルの最後にダンプしようとget_declared_classesしましたが、すべて問題ないように見えますCommon_TestTestが、宣言されたクラスの 1 つですが、ファイルを離れるときに例外がスローされます。

最もおもしろいのは、クラスの名前を から に変更するCommon_TestTestTestTest、同じことが起こります。エラーメッセージに、欠落しているクラスの名前が"TestTest". したがって、それは間違いなくクラスを認識し、その存在に反応します。

4

1 に答える 1

0

問題の原因については、次の 2 つの可能性が考えられます。

  1. クラス名とファイル名の間に大文字と小文字の不一致があります。例: Testtest.php

  2. 名前空間を登録するときは、「Common_」の代わりに「Common」を使用します。Zend_Loader_Autoloader は、PHP 5.3 スタイルの名前空間と ZF スタイルの名前空間 (むしろ Prefix) を区別しません。アンダースコアを追加することで、名前空間が実際の名前空間ではなくクラス プレフィックスとして解釈されるようになります。

于 2012-01-30T13:43:15.593 に答える