2013-01-25 150 views
0

我正在努力研究如何在以下工作...Zend框架表單幫手

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') 
      ); 
     } 

    } 

這是模型類的某種形式嗎?

+0

'Jobs_Form_Report_Productivity'是 – Sky

+0

類這似乎是一個名稱表格班。通常它會在'application/modules/job/form/report/Productivity.php' –

回答

2

ZF1使用PEAR命名空間(注意下劃線),每個下劃線變成一個目錄分隔符,而類名的最後一部分通常是文件的名稱,通常類似'Productivity.php',所以Jobs_From_Report_Productivity應該位於作業/ Form/Report在一個名爲'Productivity.php'的文件中。 由於您正在查找的類名不是以'Application_'開始的,我的建議是它是一個名爲'jobs'的模塊名稱空間,因此您可能正在尋找'application/modules/jobs/forms/report/Productivity.php , ,否則它可能在庫目錄中爲library/jobs/forms/report/Productivity.php。 當然,它完全可以用ZF1用來定位類的位置做一些奇怪而美妙的事情。

+0

這是部分有效的答案,OP可能會發現它令人困惑。閱讀有關自動加載器和默認名稱空間。路徑可能與目錄結構相對應,但在這種情況下,目錄名稱是「窗體」。 –

0

Zend Framework使用Zend_Loader_Autoloader加載在腳本scoope中調用但未找到的類。當一個沒有找到的類被稱爲自動加載器時,只需幾個簡單的步驟就可以找到幷包含類文件。

1)將所有_(下劃線符號)轉換爲類名稱中的/(斜槓)。 實施例:Zend_Loader_Autoloade變的Zend /裝載機/自動裝載機

2)後綴.PHP被附加到轉換後的字符串的末尾,並且變得:Zend的/裝載機/ Autoloader.php如果

3)檢查「 Zend_「名稱空間(名稱空間作爲類前綴而不是PHP5.3名稱空間)在自動加載器中註冊。如果名稱空間已註冊,則自動加載器將發出:include Zend/Loader/Autoloader.php。

4)如果找到類,則返回它並繼續執行腳本。如果沒有根據配置找到類拋出異常或錯誤。

前提條件:Zend/Loader/Autoloader.php文件應位於當前腳本的PHP包含路徑中。

因此,Jobs_Form_Report_Productivity將對應於Jobs/Form/Report/Productivity.php,它將在一個(或多個)包含路徑中找到。用PHP查找包含路徑:get_include_path()。大部分時間(在ZF1中)包含路徑都是在Zend Framework應用程序公共目錄的index.php文件中設置的。

參見:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md從PHP-圖的傢伙使這個自動裝填接近一個標準的「PSR-O」

希望這有助於:)