Maison  >  Article  >  développement back-end  >  Connaissances connexes sur la classe Helper personnalisée de Zend Framework

Connaissances connexes sur la classe Helper personnalisée de Zend Framework

不言
不言original
2018-06-15 17:04:151471parcourir

Cet article présente principalement les précautions liées à la classe Helper personnalisée de Zend Framework, résume et analyse les principes pertinents et les techniques d'implémentation de l'écriture de la classe Helper personnalisée, les amis dans le besoin peuvent s'y référer

Cet article parle de Zend Précautions liées à la classe Helper personnalisée du Framework. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Écrire une classe Helper personnalisée

Écrire une classe Helper personnalisée est facile, tant que vous suivez les principes suivants : Can :

① Le nom de la classe doit être Zend_View_Helper_*, * est le nom de l'assistant. Par exemple, si vous écrivez une classe nommée "specialPurpose", le nom de la classe sera au moins "SpecialPurpose". De plus, vous devez également préfixer le nom de la classe. Il est recommandé d'utiliser "View_Helper" dans le préfixe : "Mon_View_Helper_SpecialPurpose". (notez le cas) Vous devrez transmettre le préfixe (sans le trait de soulignement) à addHelperPath() ou setHelperPath().
② Il doit y avoir une méthode publique dans la classe et le nom de la méthode est le même que le nom de la classe d'assistance. Cette méthode sera exécutée lorsque votre modèle appelle "$this->specialPurpose()". Dans notre exemple "specialPurpose", la déclaration de méthode correspondante pourrait être "public function specialPurpose()".
③ De manière générale, la classe Helper ne doit pas faire écho, ni imprimer ni avoir d'autres formes de sortie. Il lui suffit de renvoyer une valeur. Les données renvoyées doivent être échappées.
④ Le nom du fichier de classe doit être le nom de la méthode d'assistance. Par exemple, dans l'exemple "specialPurpose", le fichier doit être enregistré sous "SpecialPurpose.php".

Placez le fichier de classe d'assistance dans votre chemin d'assistance et Zend_View se chargera, instanciera, persistera et s'exécutera automatiquement.

Le nom du fichier de classe à trois points, le nom de la classe et la méthode d'assistance dans la classe doivent être cohérents dans une certaine mesure.

Publiez le code :

Deux assistants, voyez bien, leurs différences. . . . .

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";
  }
}

Utilisé en action :

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

contenu supplémentaire, ajoutez addHelperPath dans initView, vous pouvez le modifier pour charger l'application. Configurez le chemin via l'élément de configuration du fichier ini. Comme suit

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
 protected function _initDoctype() {
 $this->bootstrap ( &#39;view&#39; );
 $view = $this->getResource ( &#39;view&#39; );
 $view->doctype ( &#39;XHTML1_STRICT&#39; );
 }
 protected function _initView() {
 $view = new Zend_View ();
 $view->setEncoding ( &#39;UTF-8&#39; );
 $view->doctype ( &#39;XHTML1_STRICT&#39; );
 $options = $this->getOptions ();
 $viewOptions = $options [&#39;resources&#39;][&#39;view&#39;][&#39;helperPath&#39;];
 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

Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

À propos de l'utilisation du contrôleur d'action Zend Framework

À propos de l'analyse de l'utilisation du composant Zend_Registry dans Zend Cadre

Zend Analyse de l'utilisation des classes Bootstrap dans Framework

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:imbrication js et phpArticle suivant:imbrication js et php