This article describes the precautions related to Zend Framework custom Helper class. Share it with everyone for your reference, the details are as follows:
Writing a custom Helper class
It is easy to write a custom Helper class, as long as you follow the following principles:
① The class name must be Zend_View_Helper_*, * is the name of the helper. For example, if you are writing a class named "specialPurpose", the class name will be at least "SpecialPurpose". In addition, you should also prefix the class name. It is recommended to use "View_Helper" as part of the prefix: "My_View_Helper_SpecialPurpose". (note case) You will need to pass the prefix (without the underscore) to addHelperPath() or setHelperPath().
② There must be a public method in the class, and the method name is the same as the helper class name. This method will be executed when your template calls "$this->specialPurpose()". In our "specialPurpose" example, the corresponding method declaration could be "public function specialPurpose()".
③ Generally speaking, the Helper class should not echo or print or have other forms of output. It just needs to return a value. Returned data should be escaped.
④ The name of the class file should be the name of the helper method. For example, in the "specialPurpose" example, the file should be saved as "SpecialPurpose.php".
Put the helper class file in your helper path, and Zend_View will automatically load, instantiate, persist, and execute.
The three-dot class file name, class name, and helper method in the class should be consistent to a certain extent.
Posted code:
Two helpers, you can see clearly that they are different. . . . .
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"; } }
Use:
<?php echo $this->doctype() ?> <?php echo $this->img() ?> <?php echo $this->testHelper() ?>
to add content, add addHelperPath in initView, and you can change it to load application. Configure the path through the ini file configuration item. As follows
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 = 1 phpSettings.display_errors = 1 includePaths.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 = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1
I hope this article will be helpful to everyone in PHP programming.
For more Zend Framework custom Helper class-related precautions and related articles, please pay attention to the PHP Chinese website!