国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
Yii框架組件和事件行為管理詳解,yii行為管理
Maison développement back-end tutoriel php Yii框架組件和事件行為管理詳解,yii行為管理_PHP教程

Yii框架組件和事件行為管理詳解,yii行為管理_PHP教程

Jul 12, 2016 am 08:50 AM
yii événement Composants

Yii框架組件和事件行為管理詳解,yii行為管理

本文實例講述了Yii框架組件和事件行為管理。分享給大家供大家參考,具體如下:

Yii是一個基于組件、用于開發(fā)大型 Web 應用的高性能 PHP 框架。CComponent幾乎是所有類的基類,它控制著組件與事件的管理,其方法與屬性如下,私有變量$_e數(shù)據(jù)存放事件(evnet,有些地方叫hook),$_m數(shù)組存放行為(behavior)。

組件管理

YII是一個純oop框架,很多類中的成員變量的受保護或者私有的,CComponent中利用php中的魔術方法__get(),__set()來訪問和設置屬性,但這些方法的作用遠不指這些。下面用__get()來說明

public function __get($name)
{
  $getter='get'.$name;
  if(method_exists($this,$getter))
    return $this->$getter();
  else if(strncasecmp($name,'on',2)===0 && method_exists($this,$name))
  {
    // duplicating getEventHandlers() here for performance
    $name=strtolower($name);
    if(!isset($this->_e[$name]))
      $this->_e[$name]=new CList;
    return $this->_e[$name];
  }
  else if(isset($this->_m[$name]))
    return $this->_m[$name];
  else if(is_array($this->_m))
  {
    foreach($this->_m as $object)
    {
      if($object->getEnabled() && (property_exists($object,$name) || $object->canGetProperty($name)))
        return $object->$name;
    }
  }
  throw new CException(Yii::t('yii','Property "{class}.{property}" is not defined.',
    array('{class}'=>get_class($this), '{property}'=>$name)));
}

當CComponent或者其子類對象實例$obj->name的時候,__get($name)方法:

1、首先判斷實例中是否有getName()方法,如果有則返回 ,如果沒有執(zhí)行第2步

2、判斷是否是以on開頭的,以on開頭的一般都是CComponent子類中預留的事件,用與掛在事件,通過method_exists($this,$name)判斷該name是否存在類的實例中,如果存在,返回事件,否則執(zhí)行第3步

3、如果name存在行為數(shù)組中,返回改行為,如果不存在,執(zhí)行第4步

4、遍歷行為數(shù)組,數(shù)組中行為是CBehavior子類的實例,而CBehavior又是CComponent中子類,所以用遞歸的方法獲取行為中的方法,如果沒有,執(zhí)行第5步

5、拋出異常:請求的屬性不存在。

在CComponent子類中可以重載__get()方法,如在CModule中加入了獲取組件的判斷。這就注意一個問題了屬性和組件名最好不要重名,因為程序會優(yōu)先加載組件,可能得到的不是我們想要的屬性,如果必須重名的話,就要用getter獲取屬性。

public function __get($name)
{
  if($this->hasComponent($name))
    return $this->getComponent($name);
  else
    return parent::__get($name);
}

關于組件的加載與創(chuàng)建,上篇YII框架分析筆記1:YII執(zhí)行流程中的第3點中有個疑問:注冊框架核心組件的時候一下子加載這么多,是不是影響性能呢?其實沒有,注冊的時候只是把組件和其對應的配置用鍵值對的形式保存在數(shù)組中(預加載的除外),當用到時候才像上面那樣去創(chuàng)建組件,會通過YIIBase中的createComponent()方法創(chuàng)建,并初始化。通過CModule或其子孫類(如CWebApplication)調用__get()或getComponent()獲取組件時,CModule通過$_components數(shù)組建立對象池,確保每個組件在一次請求中只實例化一次。

事件行為管理

事件相當于對一個組件的擴展或者插件,以組件中預留的鉤子實現(xiàn)組件內(nèi)部調用外部、外部對組件部分控制。在CComponent子類中可以定義以on開頭的方法為事件,類似于js中的onclick、onchange等,其實原理差不多。所有事件是與CComponent在同一文件中CEvent的子類。

/**
* Raised right BEFORE the application processes the request.
* @param CEvent $event the event parameter
*/
public function onBeginRequest($event)
{
  $this->raiseEvent('onBeginRequest',$event);
}
/**
* Runs the application.
* This method loads static application components. Derived classes usually overrides this
* method to do more application-specific tasks.
* Remember to call the parent implementation so that static application components are loaded.
*/
public function run()
{
  if($this->hasEventHandler('onBeginRequest'))
    $this->onBeginRequest(new CEvent($this));
  $this->processRequest();
  if($this->hasEventHandler('onEndRequest'))
    $this->onEndRequest(new CEvent($this));
}

比如在CApplication中調用run()方法在處理請求之前先判斷外部是否傳人onBeginRequest事件的句柄,如果有則通過onBeginRequest($event)方法調用CComponent中的raiseEvent()方法執(zhí)行句柄中的函數(shù)或者方法。

行為是事件的升級版,所有的行為都是CBehavior的子類。分析上面的__get()方法分析第4步可以看出來行為的作用是完全擴展組件的特性,可以是屬性、方法、事件甚至行為,這樣使程序開發(fā)更加靈活。

行為的另一個作用是將相似事件句柄放在一起,在行為執(zhí)行attach()方法的時候會將events()方法中返回的事件句柄綁定,這樣做達到方面管理和擴展的目的。比如CModelBehavior中將model相關的事件集中起來,便于其子類的復用,當我們需求為model添加行為的時候可以繼承它。

PS:小編在這里推薦一款本站的php格式化美化的排版工具幫助大家在以后的PHP程序設計中進行代碼排版:

php代碼在線格式化美化工具:http://tools.jb51.net/code/phpformat

更多關于Yii相關內(nèi)容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優(yōu)秀開發(fā)框架總結》、《smarty模板入門基礎教程》、《php日期與時間用法總結》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1133126.htmlTechArticleYii框架組件和事件行為管理詳解,yii行為管理 本文實例講述了Yii框架組件和事件行為管理。分享給大家供大家參考,具體如下: Yii是一個...
Déclaration de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Composants angulaires et leurs propriétés d'affichage?: comprendre les valeurs par défaut non bloquantes Composants angulaires et leurs propriétés d'affichage?: comprendre les valeurs par défaut non bloquantes Mar 15, 2024 pm 04:51 PM

Le comportement d'affichage par défaut des composants du framework Angular ne concerne pas les éléments au niveau du bloc. Ce choix de conception favorise l'encapsulation des styles de composants et encourage les développeurs à définir consciemment la manière dont chaque composant est affiché. En définissant explicitement l'affichage des propriétés CSS, l'affichage des composants angulaires peut être entièrement contr?lé pour obtenir la mise en page et la réactivité souhaitées.

Comment créer des applications basées sur des événements en utilisant PHP Comment créer des applications basées sur des événements en utilisant PHP May 04, 2024 pm 02:24 PM

Les méthodes de création d'applications basées sur des événements en PHP incluent l'utilisation d'EventSourceAPI pour créer une source d'événements et l'utilisation de l'objet EventSource pour écouter les événements c?té client. Envoyez des événements à l'aide de Server Sent Events (SSE) et écoutez les événements c?té client à l'aide d'un objet XMLHttpRequest. Un exemple pratique consiste à utiliser EventSource pour mettre à jour les inventaires en temps réel sur un site Web de commerce électronique. Ceci est réalisé c?té serveur en modifiant l'inventaire de manière aléatoire et en envoyant des mises à jour, et le client écoute les mises à jour d'inventaire via EventSource et les affiche dans. temps réel.

Comment implémenter la liaison d'événement de changement d'éléments sélectionnés dans jQuery Comment implémenter la liaison d'événement de changement d'éléments sélectionnés dans jQuery Feb 23, 2024 pm 01:12 PM

jQuery est une bibliothèque JavaScript populaire qui peut être utilisée pour simplifier la manipulation du DOM, la gestion des événements, les effets d'animation, etc. Dans le développement Web, nous rencontrons souvent des situations dans lesquelles nous devons modifier la liaison d'événements sur des éléments sélectionnés. Cet article explique comment utiliser jQuery pour lier des événements de modification d'éléments sélectionnés et fournit des exemples de code spécifiques. Tout d'abord, nous devons créer un menu déroulant avec des options utilisant des étiquettes?:

Quelle est la différence entre PHP Framework Laravel et Yii Quelle est la différence entre PHP Framework Laravel et Yii Apr 30, 2025 pm 02:24 PM

Les principales différences entre Laravel et YII sont les concepts de conception, les caractéristiques fonctionnelles et les scénarios d'utilisation. 1.Laravel se concentre sur la simplicité et le plaisir du développement, et offre des fonctions riches telles que Elognentorm et des outils artisanaux, adaptés au développement rapide et aux débutants. 2.YII met l'accent sur les performances et l'efficacité, convient aux applications à haute charge et fournit des systèmes activecord et de cache efficaces, mais a une courbe d'apprentissage abrupte.

Yii avec docker: conteneurisation et déploiement de vos applications Yii avec docker: conteneurisation et déploiement de vos applications Apr 02, 2025 pm 02:13 PM

Les étapes de conteneris et de déploiement des applications YII à l'aide de Docker incluent: 1. Créez un DockerFile et définissez le processus de création d'images; 2. Utilisez DockerCose pour lancer les applications YII et la base de données MySQL; 3. Optimiser la taille et les performances de l'image. Cela implique non seulement des opérations techniques spécifiques, mais aussi de comprendre les principes de travail et les meilleures pratiques de Dockerfile pour assurer un déploiement efficace et fiable.

Une plongée approfondie dans les événements du bouton de fermeture dans jQuery Une plongée approfondie dans les événements du bouton de fermeture dans jQuery Feb 24, 2024 pm 05:09 PM

Compréhension approfondie de l'événement du bouton de fermeture dans jQuery Au cours du processus de développement front-end, nous rencontrons souvent des situations où nous devons implémenter la fonction du bouton de fermeture, comme la fermeture des fenêtres contextuelles, la fermeture des bo?tes de dialogue, etc. Lorsque vous utilisez jQuery, une bibliothèque JavaScript populaire, il devient extrêmement simple et pratique d'implémenter l'événement du bouton de fermeture. Cet article expliquera comment utiliser jQuery pour implémenter des événements de bouton de fermeture et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et ma?triser cette technologie. Tout d’abord, nous devons comprendre comment définir

Comment créer des composants réutilisables en utilisant PHP Comment créer des composants réutilisables en utilisant PHP May 01, 2024 pm 04:57 PM

Les composants PHP fournissent des blocs modulaires pour la réutilisation du code. La création d'un composant implique la création d'une classe contenant la logique et les fonctionnalités et son enregistrement auprès du chargeur automatique. Les composants sont utilisés via leurs classes, comme un composant qui calcule la taxe de vente. Un exemple pratique démontrant l'utilisation de composants pour calculer la taxe de vente basée sur l'adresse dans une application de commerce électronique. Les composants permettent à l'application de simplifier les calculs fiscaux et de gérer de manière centralisée les changements de taux d'imposition.

Ma?triser le mécanisme de bouillonnement d'événements commun en JavaScript Ma?triser le mécanisme de bouillonnement d'événements commun en JavaScript Feb 19, 2024 pm 04:43 PM

événements de bouillonnement courants en JavaScript?: Pour ma?triser les caractéristiques de bouillonnement des événements courants, des exemples de code spécifiques sont nécessaires. Introduction?: En JavaScript, le bouillonnement d'événements signifie que l'événement se propagera de l'élément ayant le niveau d'imbrication le plus profond vers l'élément externe jusqu'à ce qu'il se propage vers. L'élément parent le plus externe. Comprendre et ma?triser les événements bouillonnants courants peut nous aider à mieux gérer l'interaction des utilisateurs et la gestion des événements. Cet article présentera quelques événements de bouillonnement courants et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. 1. Cliquez sur événement (cliquez sur

See all articles