Events support

PEAR, Smarty, ADOdb, OOP, PHP 5, XML, UML, Şabloane de proiectare, PHP-GTK.

Moderatori: coditza, Emil, Moderatori

cezar.lucan
Average Member
Mesaje: 83
Membru din: Joi Mar 11, 2010 2:18 pm

Events support

Mesajde cezar.lucan » Mie Apr 22, 2015 12:43 pm

Salutare!

Am un framework create de mine si de curand i-am adaugat suport pentru evenimente insa abia acum m-am gandit sa intreb lumea care ar fi cea mai buna abordare.

Pentru ca lucrez mult cu jquery, am implementat o abordare asemanatoare insa observ ca Zend, Cake, Yii au o abordare diferita, adica folosesc un asa numit event manager.

Intrebarea mea este: sunteti in favoarea unei abordari de genul jquery sau mai clasica php - asemanator Zend,....?

Multumesc!



nevvermind
Senior Member
Mesaje: 1241
Membru din: Mar Iun 22, 2010 3:17 pm

Re: Events support

Mesajde nevvermind » Mie Apr 22, 2015 1:53 pm

Si jQuery are event managers (daca te referi la $.trigger()): orice element pe care atasezi evenimentul, fie ca-i document sau span sau div.
Acele librarii PHP lucreaza intr-un mod asemanator. Au fie un manager central, fie poti crea mai multi - de care poti atasa evenimente ofc.

Deci ce consideri tu ca este diferit intre ele ("de genul jquery sau mai clasica php")? Poate te referi la alt aspect, fiindca pana acum mai mult se asemana decat sa difere.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

cezar.lucan
Average Member
Mesaje: 83
Membru din: Joi Mar 11, 2010 2:18 pm

Re: Events support

Mesajde cezar.lucan » Mie Apr 22, 2015 3:04 pm

Corect...probabil ce am vazut in documentatia Zend m-a facut sa cred ca este un obiect separat EventManager (http://framework.zend.com/apidoc/2.4/na ... nager.html)

Oricum, cel putin in Zend mi se pare putin cam greu... poate ca nu am lucrat eu cu el.

In varianta mea cand fac trigger pe un obiect, se creaza o instanta a unui eveniment care executa handlerii asociati apoi se propaga automat in functie de parametrii instantei.

Cod: Selectaţi tot

$DOMElement_instance->on("someEvent",function($evt){
//doSomething
});

$DOMElement_instance->on("someEvent",function($evt){
//doSomething else
});

$DOMElement_instance->on("before","someEvent",function($evt){
//doSomething else
});

$DOMElement_instance->on("after","someEvent",function($evt){
//doSomething else
});

//default se propaga catre parent node
$otherDOMElem->trigger("someEvent");
//sau
//se propaga catre child nodes
$anotherDOMElem->trigger("someEvent",array("some","data"),XMS_EVENT::BUBBLE_CHILDS);
//sau doar la elem pe care a fost invocata metoda trigger
$anotherDOMElem->trigger("someEvent",[],XMS_EVENT::BUBBLE_CANCEL);

nevvermind
Senior Member
Mesaje: 1241
Membru din: Mar Iun 22, 2010 3:17 pm

Re: Events support

Mesajde nevvermind » Mie Apr 22, 2015 4:09 pm

Observ ca ai evenimente nominale - adica nu fac nimic, doar ca ancore pt alti listeners - "before", "after". Ma refer la $DOMElement_instance->on("before","someEvent",function($evt).
Nu stiu exact ce sa spun despre asta. De obicei evenimentul este cel care actioneaza ca un interceptor.
Tu faci interceptie la evenimente - care ele insele se comporta precum niste interceptori - deci interceptezi interceptorii wat?

Spun asta fiindca, in general, logica unei aplicatii este considerata punct de interes pt "listeners", nu un eveniment. Poti declansa un eveniment din interceptorul unui alt eveniment, dar atat.

Din nou, nu sunt convins ca-i o idee rea sa ai evenimente after si before atasate unui eveniment original, doar ca e putin neortodox si poate mareste complexitatea fara avantaje. Sau ai gasit?

De asemenea, care-i faza cu "default se propaga catre parent node" si "se propaga catre child nodes"? Vorbim despre un sistem pub/sub in PHP sau tu faci wrapping la elemente DOM din php?

Poate poti da un link catre cod.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

cezar.lucan
Average Member
Mesaje: 83
Membru din: Joi Mar 11, 2010 2:18 pm

Re: Events support

Mesajde cezar.lucan » Mie Apr 22, 2015 4:37 pm

Intocmai! Evenimentul in sine nu intercepteaza nimic ci ce propaga prin document si executa handlerii asociati obiectului pt acel eveniment.

Cat despre before si after nu complica deloc codul, nici nu il incarca, ofera doar putin mai multa flexibilitate - ideea am preluat-o de la ceea ce numesc eu in framework-ul meu observable properties and methods.

Cat despre link, nu stiu daca e permis sa dau aici - daca nu e probabil un admin va sterge.
Vezi aici: http://aws-dms.com/?use=templates/downl ... ms-5.0-rc2

nevvermind
Senior Member
Mesaje: 1241
Membru din: Mar Iun 22, 2010 3:17 pm

Re: Events support

Mesajde nevvermind » Mie Apr 22, 2015 5:08 pm

"ideea am preluat-o de la ceea ce numesc eu in framework-ul meu observable properties and methods." - Mai degraba "around advice" din AOP. Sau doar decorator pattern. Btw, ai preluat ideea dintr-o creatie de-a ta? :P

Vezi ca nu vei avea succes cu xml si php. Daca nu esti in java sau c#, o sa-ti pice lumea-n cap cu xml.

Asa, unde eram? Care era intrebarea pana la urma?
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

cezar.lucan
Average Member
Mesaje: 83
Membru din: Joi Mar 11, 2010 2:18 pm

Re: Events support

Mesajde cezar.lucan » Mie Apr 22, 2015 5:58 pm

Scuze de exprimare....știi asemănarea intre un câine și un inginer... Sufăr și eu!

Php și xml? Greu, de acord dar se pare ca mai mult pentru ca lumea prefera sa stea cu ce este cerut, adică fframework-urile mari.

Deci, unde am rămas?

nevvermind
Senior Member
Mesaje: 1241
Membru din: Mar Iun 22, 2010 3:17 pm

Re: Events support

Mesajde nevvermind » Mie Apr 22, 2015 6:17 pm

re XML: "se pare ca mai mult pentru ca lumea prefera sa stea cu ce este cerut, adică fframework-urile mari." - nu, ci fiindca scrii si parsezi prea mult pt prea putin. Frameworkurile mari ofera suport pt alternative (json, yml, php array, ini etc.), nu impun xml. Fiindca a) nu-i o idee buna sa impui un anumit format daca vrei sa fw-ul tau sa fie generic si folosit de multi si b)... e xml.

"Deci, unde am rămas?" - acu ma intrebi pe mine? Nu stiu. Ti-a fost destul ce-am spus? Mai vrei ceva? Tu ai facut postul asta, nu eu.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

cezar.lucan
Average Member
Mesaje: 83
Membru din: Joi Mar 11, 2010 2:18 pm

Re: Events support

Mesajde cezar.lucan » Mie Apr 22, 2015 6:23 pm

Pai cam aici am rămas.. Cautam părerile unor pprogramatori cu experienta asa ca mulțumesc!

nevvermind
Senior Member
Mesaje: 1241
Membru din: Mar Iun 22, 2010 3:17 pm

Re: Events support

Mesajde nevvermind » Mie Apr 22, 2015 6:33 pm

Muta-te pe github/bitbucket si fa-ti fw-ul public, ca oricum oricine il poate descarca. Nu te mai ascunde si pune-l in "salbaticie". Si vei primi feedback mai bun/rapid/mult.

Fiindca, din cate vad pe-acolo, sistemul de events e ultimul lucru care ar trebui sa te ingrijoreze. Stiu, n-ai cerut feedback despre fw, dar m-am simtit dator sa-ti spun.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

cezar.lucan
Average Member
Mesaje: 83
Membru din: Joi Mar 11, 2010 2:18 pm

Re: Events support

Mesajde cezar.lucan » Mie Apr 22, 2015 6:47 pm

M-am gândit de multe ori însă nu am avut timp sa lucrez, sa îl întrețin în mod curent ca sa nu mai zic sa fac de documentatie, site care sunt de cacao.... Dar îl țin acolo public pt alte proiecte mai vechi

Da-mi PM te rog cu cele altele, mi-ar fi de folos. Scriu de pe tel și pana fac un al thread ca sa cer părerea...


Înapoi la “PHP Avansat”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 2 vizitatori