1

Zendアプリ内で、自動読み込みの命名規則に準拠していないクラスを定義し、後で使用しようとしたときに認識されるようにする方法はありますか?クラスを定義して、どういうわけかオートローダーに登録すると思いますが、オートローダーのマンページを読んだ後でも、その方法がわかりません。

私のユースケースはテスト中です(いいえ、この場合はモックやスタブは必要ありません)。テストスクリプトの先頭に新しいクラスを定義しましたが、アプリケーションコードがそのクラスを参照している場合、オートラダーは命名規則に基づいてクラスをロードするのに積極的に疲れます。

<?php 

class Non_Conforming_Dummy_Class 
{
}

// should I register this new class with the autoloader right here? 

class Whatever
{
public function useIt()
    {
        $class = new Non_Conforming_Dummy_Class;
    }
}

Non / Conforming / Dummy/Class.phpを検索する「そのようなファイルまたはディレクトリはありません」を取得します

4

2 に答える 2

1

ZFオートローダーは、PSR-0規則に従ってすべてのクラスをロードします。その規則に従わないクラスは、オートローダーでロードできません。ただし、

オプションで特定の名前空間(または名前空間のグループ)を使用して、任意のオートローダーコールバックを登録します。Zend_Loader_Autoloader内部自動ロードメカニズムを使用する前に、最初にこれらを一致させようとします。

つまり、命名スキームを知っている独自のオートローダーをZFのオートローダーに追加できます。

$autoloader->pushAutoloader(array('myAutoloader', 'autoload'), 'MyPrefix');

http://framework.zend.com/manual/en/zend.loader.autoloader.htmlを参照してください

于 2012-05-07T16:20:21.200 に答える
0

オートローダーは、PHPが登録されていないクラスを検出した場合のフォールバックメカニズムです。したがって、コードが一番上のコードのようであれば、クラスは同じスクリプトejに登録されているため、失敗することはありません。

class foobar{}
class demo
{
    public function foo()
    {
         $bar = new foobar();
    }
}

問題なく動作します。クラスが別のファイルにある場合は、それをinclude()するか、require()することができます。オートローダーは、クラスが見つからないときに呼び出される最後の関数になります。

于 2012-05-07T18:28:35.117 に答える