Nadelen event dispatcher en listener

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ger van Steenderen
Tutorial mod

Ger van Steenderen

19/02/2014 18:58:36
Quote Anchor link
Zijn er qua perfomance nadelen verbonden aan het dispatchen van een event en daar een listener(observer) aan verbinden?
 
PHP hulp

PHP hulp

24/12/2024 04:25:48
 
Wouter J

Wouter J

19/02/2014 19:09:34
Quote Anchor link
Vaak heb je meerdere listeners opgeslagen in een array. Dat betekend dat PHP een array moet doorzoeken wanneer je een event triggered, aangezien arrays niet PHP's sterkste kant is kan dat voor een klein performance nadeeltje zorgen.

Maar het weegt naar mijn mening niet op voor de voordelen. Ik gebruik eigenlijk altijd events. (zie ook mijn minimale kleine frameworkje http://github.com/WouterJ/shift-php)
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

19/02/2014 19:29:47
Quote Anchor link
Dat idee had ik ook al ;-)
Ik ben van plan om daarvoor Symfony/Component/EventDispatcher voor te gaan gebruiken.
Of kan ik beter jouw frameworkje gebruiken?
 
Wouter J

Wouter J

19/02/2014 19:36:31
Quote Anchor link
Het ligt eraan wat je wilt.

Mijn framework is gebouwd om het MOVE principe: http://cirw.in/blog/time-to-move-on.html En voornamelijk gebaseerd op FlightJS: http://flightjs.github.io/ Het is behoorlijk basic.

De Symfony EventDispatcher is weer een heel stukje uitgebreider, maar eigenlijk hou ik er niet heel erg van. Ik ben meer fan van Zend's EventManager component. Deze heeft namelijk targets (wat ik ook heb), waarmee je events kunt schrijven voor een bepaalde doelgroep. Ook heeft het een globale event manager die perfect samenwerkt met een lokale event manager.

Offtopic:
En als je echt basic wilt (hoewel deze ong. hetzelfde doet als mijn dispatcher), kun je ook nog mijn Mediator in 226 characters proberen: (nog niet getest)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
class Mediator{private $l;function trigger($m,$a){foreach($this->l[$m]as$l){call_user_func($l[1],$a[0]);}}public function add($e,$l,$p=0){$this->l[$e][]=$l;usort($this->l[$e],function($a,$b){return $a<$b?-1:($a==$b?0:1);});}}
?>
Gewijzigd op 19/02/2014 19:39:55 door Wouter J
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.