Zend Framework自訂Helper類相關注意事項總結_php執行個體

來源:互聯網
上載者:User
本文講述了Zend Framework自訂Helper類相關注意事項。分享給大家供大家參考,具體如下:

編寫自訂的Helper類

編寫自訂的Helper類很容易,只要遵循以下幾個原則即可:

① 類名必須是 Zend_View_Helper_*,*是helper的名稱。例如,你在寫一個名為“specialPurpose”的類,類名將至少是"SpecialPurpose",另外你還應該給類名加上首碼,建議將“View_Helper”作為首碼的一部份:“My_View_Helper_SpecialPurpose”。(注意大小寫)你將需要將首碼(不包含底線)傳遞給addHelperPath() 或 setHelperPath()。
② 類中必須有一個public的方法,該方法名與helper類名相同。這個方法將在你的模板調用"$this->specialPurpose()"時執行。在我們的“specialPurpose”例子中,相應的方法聲明可以是 “public function specialPurpose()”。
③ 一般來說,Helper類不應該echo或print或有其它形式的輸出。它只需要傳回值就可以了。返回的資料應當被轉義。
④ 類檔案的命名應該是helper方法的名稱,比如在"specialPurpose"例子中,檔案要存為“SpecialPurpose.php”。

把helper類的檔案放在你的helper路徑下, Zend_View就會自動載入,執行個體化,持久化,並執行。

三點類檔案名稱,類名稱,類中helper方法,保持某種程度上的一致。

貼代碼:

兩個helper,看清楚了,他們的不同啊。。。。。

version zf 1.10

Bootstrap.php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {  protected function _initDoctype() {    $this->bootstrap ( 'view' );    $view = $this->getResource ( 'view' );    $view->doctype ( 'XHTML1_STRICT' );  }  protected function _initView() {    $view = new Zend_View ();    $view->setEncoding ( 'UTF-8' );    $view->doctype ( 'XHTML1_STRICT' );    $view->addHelperPath('../application/views/helpers', 'My_View_Helper');    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);    $viewRenderer->setView($view);    return $view;  }}

application/views/helpers

Img.php:

class Zend_View_Helper_Img extends Zend_View_Helper_Abstract{  public function img()  {    return "this is a img";  }}

TestHelper.php:

class My_View_Helper_TestHelper extends Zend_View_Helper_Abstract{  public function testHelper()  {    return "this is a TestHelper";  }}

action中使用:

<?php echo $this->doctype() ?><?php echo $this->img() ?><?php echo $this->testHelper() ?>

附加內容,在initView中添加addHelperPath,可以改成採用載入application。ini檔案配置項的方式把路徑進行配置。如下

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initDoctype() { $this->bootstrap ( 'view' ); $view = $this->getResource ( 'view' ); $view->doctype ( 'XHTML1_STRICT' ); } protected function _initView() { $view = new Zend_View (); $view->setEncoding ( 'UTF-8' ); $view->doctype ( 'XHTML1_STRICT' ); $options = $this->getOptions (); $viewOptions = $options ['resources']['view']['helperPath']; if (is_array ($viewOptions)) {  foreach($viewOptions as $helperName =>$path)  {  $view->addHelperPath ( $path, $helperName );  } } $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer (); Zend_Controller_Action_HelperBroker::addHelper ( $viewRenderer ); $viewRenderer->setView ( $view ); return $view; }}
[production]phpSettings.display_startup_errors = 1phpSettings.display_errors = 1includePaths.library = APPLICATION_PATH "/../library"bootstrap.path = APPLICATION_PATH "/Bootstrap.php"bootstrap.class = "Bootstrap"appnamespace = "Application"resources.view[] =resources.view.helperPath.My_View_Helper = "../application/views/helpers"resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"resources.frontController.params.displayExceptions = 1[staging : production][testing : production]phpSettings.display_startup_errors = 1phpSettings.display_errors = 1[development : production]phpSettings.display_startup_errors = 1phpSettings.display_errors = 1resources.frontController.params.displayExceptions = 1

更多關於zend相關內容感興趣的讀者可查看本站專題:《Zend FrameWork架構入門教程》、《php優秀開發架構總結》、《Yii架構入門及常用技巧總結》、《ThinkPHP入門教程》、《php物件導向程式設計入門教程》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》

希望本文所述對大家PHP程式設計有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.