0

私は以下がどのように機能するかを理解しようとしています...

どこJobs_Form_Report_Productivity()から来たの?

public function productivityAction(){
        $this->view->headTitle('Number of Unique Jobs by Portfolio');
        $this->view->form = new Jobs_Form_Report_Productivity();

        if($this->view->form->isValid($_POST))
        {
            $report = new Model_Users();

            $this->view->results = $report->reportProductivity(
                $this->view->form->getStartDate('yyy-MM-dd'), 
                $this->view->form->getEndDate('yyy-MM-dd')
            );
        }

    }

これは、何らかの形式の Model クラスですか?

4

2 に答える 2

2

ZF1 は PEAR 名前空間 (アンダースコアに注意) を使用し、各アンダースコアはディレクトリの区切り記号になり、クラス名の最後の部分は通常、「Productivity.php」のようなファイルの名前になるため、Jobs_From_Report_Productivity は Jobs/Form/Report に配置する必要があります。 「Productivity.php」というファイルに。あなたが探しているクラス名は「Application_」で始まっていないので、「jobs」という名前のモジュールの名前空間ではないかと思います。おそらく、「application/modules/jobs/forms/report/Productivity.php,それ以外の場合は、library/jobs/forms/report/Productivity.php としてライブラリ ディレクトリにある可能性があります。もちろん、ZF1 がクラスを見つけるために使用する場所を使用して、奇妙で素晴らしいことを行うことは完全に可能です。

于 2013-01-25T08:36:37.180 に答える
0

Zend Frameworkは、Zend_Loader_Autoloaderを使用して、呼び出されたがスクリプトスクープに見つからないクラスをロードします。見つからないクラスが呼び出されると、オートローダーが起動し、いくつかの簡単な手順でクラスファイルを見つけてインクルードします。

1)クラス名のすべての_(アンダースコア記号)を/(スラッシュ)に変換します。例:Zend_Loader_AutoloadeはZend / Loader/Autoloaderになります

2)変換された文字列の末尾にサフィックス.phpが追加され、Zend / Loader/Autoloader.phpになります。

3)「Zend_」名前空間(PHP5.3名前空間ではなくクラスプレフィックスとしての名前空間)がオートローダーに登録されているかどうかを確認します。名前空間が登録されている場合、オートローダーは次のように発行します:Zend / Loader/Autoloader.phpをインクルードします。

4)クラスが見つかった場合、クラスはそれを返し、スクリプトは続行します。構成に基づいてクラスが見つからない場合は、例外またはエラーがスローされます。

前提条件:ファイルZend / Loader / Autoloader.phpは、現在のスクリプトのPHPインクルードパスに含まれている必要があります。

したがって、Jobs_Form_Report_ProductivityはJobs / Form / Report / Productivity.phpに対応し、1つ(または複数)のインクルードパスにあります。PHPのget_include_path()を使用してインクルードパスを見つけます。ほとんどの場合(ZF1では)、インクルードパスはZendFrameworkアプリケーションのパブリックディレクトリにあるindex.phpファイルで設定されます。

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.mdを参照してください。PHP-FIGの担当者は、この自動読み込みアプローチを標準の「PSR-O」にしました。

お役に立てれば :)

于 2013-01-25T10:07:21.080 に答える