Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

hai sa facem si noi un framework pe sine
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Proiecte
Subiectul anterior :: Subiectul următor  
Autor Mesaj
johnny



Data înscrierii: 31/Iul/2004
Mesaje: 904
Locație: Bucuresti

Trimis: Mar Oct 11, 2005 8:39 pm    Titlul subiectului: hai sa facem si noi un framework pe sine  

Si pentru ca pana acum avem

cake
biscuit

si alte prajituri...

(si mai e TaniPHP)
,
toate bazate pe super, ultra, mega, ( si alte superlative) RAD framework

Ruby On Rails

Mi-a placut cakePHP, pentru ca modelul era similar cu cel folosit de mine, dar ca eu nu aveam o implementare generalizata (ce face ego-ul asta)...

Studiez de ceva timp frameworkuri si arhitectura MVC, dar pana acum nu am gasit un rad framework potrivit...

am invatat si ceva Ruby ca sa pot sa-mi formez o idee despre Rails, si mai mult m-am uitat la cake...

Un alt framework care imi place este PRADO, are probleme de viteza, dar se pare ca se lucreaza la asta...

Ok, enough talking...

Deci, hai sa facem un framework romanesc, inspirat din Rails, dar nu numai...

Ce asteptari ati avea de la un RAD framework?
Ce necesitati ati vrea sa acopere?
Credeti ca e potrivita o abordare MVC?
Cine ar vrea sa participe si ce experienta are? (ar fi util si niste oameni cu un background de JAVA)

Sa vedem daca sunt doritori/interesati si dupa aia discutam probleme tehnice si analiza...
Sus  
aurelian



Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti

Trimis: Mar Oct 11, 2005 9:25 pm    Titlul subiectului:  

@see my post de la php avansat.
http://www.phpromania.net/forum/viewtopic.php?p=20689#20689

citesc de sus in jos.
Sus  
aurelian



Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti

Trimis: Mie Oct 12, 2005 5:19 pm    Titlul subiectului:  

Am continuat discutia de la php avansat aici:

In medick:

shk a scris:
eu vad urmatoarele aspecte :
1. abstractizare pe 2 layere a accesului la RDBMS (unul care sa se ocupe efectiv de accesul la baza de date - eventual facuta o interfata care va fi implementata de diverse clase - pentru mysql, mssql, pg, oracle etc , si unul care in care se vor defini data access objects pentru lucrul efectiv cu tabelele)

Done:
level 1 -> creole
level 2 -> asemanator cu ActiveRecord din RoR

shk a scris:
2. un front controller si generare dinamica a linkurilor , pentru ca acestea sa fie schimbate usor (de ex in cazul in care ne hotaram mai tarziu sa facem url rewritng)
3. un template engine care sa fie designer friendly (adica nu smarty...)


Done.

shk a scris:
4. o structura care sa permita implementare rapida si debugging usor


debugging in php cam greu insa se face un logging (care ar mai trebui lucrat putin).

shk a scris:
5. un sistem de gestiune al paginilor si permisiunilor bine pus la punct


se lucreaza intensiv, momentan am scris testele urmeaza sa le fac sa treaca.

shk a scris:
6. Sa fie bine separat bussiness logic-ul de data-tier si de presentation-tier (aici totusi ma gandeam ca s-ar putea sa se schimbe situatia in cazul in care cineva s-ar decide sa scrie un framework orientat pe AJAX .. dar asta e o alta discutie)


Am reusit sa fac request/response cu AJAX cu ajutorul prototype.js si scriptaculous. Nu pot spune insa ca medick este orientat pe AJAX. Din contra, se poate folosi si in linie de comanda.

De ex:
outputul din browser de la o adresa http://example.com/blog/recent poate fi obtinut si prin rularea unui script in linie de comanda, ceva de genul:
php cli.dispatcher.php blog/recent
dar mai trebuie lucrat la aceasta parte.

shk a scris:
7. sa fie usor extensibil


Asta este discutabil si tine si de skill-urile celor care il extind.

johnny a scris:
cred ca se poate realiza si o versiune de php4, dar nu stiu cat este de rentabil...


S-ar putea "porta" si in php 4, din pacate nu am timpul necesar pentru asa ceva, oricum cine este intesat o poate face.

O sa incerc in seara asta sau maine dimineata sa postez si un link catre o arhiva cu o mica aplicatie dezvoltata cu medick pentru a va face o idee.
Un ckeckout de pe svn si un README foarte "bine pus la punct" si "foarte recent" descurajeaza :)
Sus  
aolex



Data înscrierii: 17/Dec/2004
Mesaje: 662

Trimis: Mie Oct 12, 2005 5:54 pm    Titlul subiectului:  

ce este defapt un framework si la ce ajuta ? :)
Sus  
johnny



Data înscrierii: 31/Iul/2004
Mesaje: 904
Locație: Bucuresti

Trimis: Mie Oct 12, 2005 6:07 pm    Titlul subiectului:  

4. o structura care sa permita implementare rapida si debugging usor

imi place cum trateaza PRADO erorile, adica partea de trace...

Zend Platform pune la dispozitie mai multe tooluri utile pentru debugging, dar cred ca se pot emula anumite optiuni (in Zend Platform banuiesc ca sunt hard coded), printr-un sistem de logging, pentru un mod debuggind definit ...
Sus  
aolex



Data înscrierii: 17/Dec/2004
Mesaje: 662

Trimis: Mie Oct 12, 2005 6:53 pm    Titlul subiectului:  

adica un set de clase , functii si alte chestii care lucreaza impreuna pentru a
usura munca in programele cuiva ?
Sus  
johnny



Data înscrierii: 31/Iul/2004
Mesaje: 904
Locație: Bucuresti

Trimis: Mie Oct 12, 2005 7:07 pm    Titlul subiectului:  

sorry, postul meu, nu iti raspundea la intrebare ci se referea la cele scrise mai sus...

Un framework ar insemna, prin traducere aproximativa, un "cadru de lucru".
Acesta ar trebui sa-ti puna la dispozitie mijloacele pentru a dezvolta rapid o aplicatie (RAD - Rapid Application Development), unelte pentru a dezvolta unitar o aplicatie, clase, plugin-uri etc... "gata-facute" pentru diverse utilizari..
poti sa te uiti putin pe blueshoes ca sa vezi ce contine... (blueshoes e si cms, bazat pe framework) ...

IMO, framework-ul ideal ar trebui sa aiba un simplu fisier de configurare si in baza acestuia sa ruleze aplicatia, fara ca persoana respectiva sa aiba prea multe cunostinte de programare ...
Sus  
shk



Data înscrierii: 10/Oct/2005
Mesaje: 8

Trimis: Mie Oct 12, 2005 7:50 pm    Titlul subiectului:  

IMHO un framework si un RAD sunt doua lucruri complet diferite. Un framework in viziunea mea este un cadru de lucru , o colectie de cod care formeaza o structura de baza de la care poti pleca pentru a dezvolta o aplicatie. Menirea lui este nu numai sa-ti furnizeze multe lucruri gata facute ci si sa iti impuna o anumita structura in programare pentru a-ti fi mai usor sa modifici/extinzi ulterior aplicatia. RAD din cate stiu eu se refera mai mult la o interfata care genereaza cod automat (stil Visual Basic). Nu am incercat multe frameworkuri existente, eu am unul prorpiu , facut in php4 (din pacate proiectele care se lucreaza la mine la firma .. desi sunt in proportie de 99% pentru afara.. sunt inca pe php4).
Citat: level 2 -> asemanator cu ActiveRecord din RoR

nu stiu exact cum arata acest ActiveRecord. Eu folosesc pentru fiecare tabel din baza de date cate o clasa derivata dintr-o clasa "abstracta" , care are drept membri chiar campurile tabelului. Mi se pare o abordare destul de comoda.
Sus  
aurelian



Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti

Trimis: Mie Oct 12, 2005 8:27 pm    Titlul subiectului:  

exmplu ActiveRecord, implementat in medick.
1. schema.sql:
an style="color: #000000"><?php CREATE TABLE `authors` (   `id` int(11) NOT NULL auto_increment,   `name` varchar(255) NOT NULL default '',   PRIMARY KEY  (`id`) ) ENGINE=InnoDB; CREATE TABLE `todos` (   `id` int(11) NOT NULL auto_increment,   `author_id` int(11) NOT NULL default '0',   `description` varchar(255) default NULL,   `done` int(1) NOT NULL default '0',   PRIMARY KEY  (`id`),   KEY `ibfk_1` (`author_id`) ) ENGINE=InnoDB; ALTER TABLE `todos`   ADD CONSTRAINT `ibfk_1` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`); 

2. Modele:
an style="color: #000000"><?php class Todo extends ActiveRecordBase {   private $has_one = array('author'); } class Author extends ActiveRecordBase {         } 

3. Accesarea si Modificare datelor:

an style="color: #000000"><?php $todos= Todo::find(); foreach ($todos as $todo) {     echo $todo->id . $todo->description . $todo->done . $todo->author->name; } // cunoscand id-ul todo-ului $todo = Todo::find($id); echo $todo->id . $todo->description . $todo->done . $todo->author->name; // modificare camp done: $todo->done = 0; $todo->save(); // adaugare: $todo = new Todo(); $todo->done=0; $todo->description = 'TODO'; $todo->author_id = 0; // momentan ptr. foreign key accesul este doar read-only $todo->insert(); // $todo->save() face acelasi lucru 

Modelele mele sunt mai mult formale, pentru ca toata magia o face ActiveRecordBase. Un dezavantaj este faptul ca se pierde din viteza de executie a scriptului, care se va compensa cu mici optimizari ale codului + un sistem de caching bine pus la punct. Avantajele sunt evidente.

Totusi mai sunt multe lucruri ce trebuiesc puse la punct. De ex. has_one este singura asociere pe care am implementat-o: pentru ca inca nu am avut nevoie de altceva. Dezvoltarea o fac dupa modelul feature-driven, adica nu am avut nevoie sa implementez o anumita cerinta, nu am implementat-o concentrandu-ma pe alte lucruri.
Sus  
shk



Data înscrierii: 10/Oct/2005
Mesaje: 8

Trimis: Mie Oct 12, 2005 9:10 pm    Titlul subiectului:  

da e interesant modelul, dar e deja php5. eu am clase separate pentru fiecare tabela. avantjul la modelul tau este ca scrii mai putin cod (nu trebuie sa scrii clasele pentru tabele). avantajul la mine este ca pot sa implementez in clase functii specifice obiectului respectiv (adica de fapt functii care fac sql-uri mai complexe)
Sus  
aurelian



Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti

Trimis: Joi Oct 13, 2005 2:48 pm    Titlul subiectului:  

aplicatia demo:
http://29dots.com/medick/eltodo.tar.gz
se dezarhiveaza si se copiaza folderul sample in document root.
am scris si un mic fisier readme.eltodo

pentru nelamuriri nu ezitati sa puneti intrebari :)

Daca doresti sa contribui la proiectul medick, am deschis aseara si o lista de discutii (ca orice proiect open source care se respecta) medick-devel, la care te poti abona aici:

http://lists.berlios.de/mailman/listinfo/medick-devel
Sus  
aurelian



Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti

Trimis: Lun Ian 23, 2006 4:17 pm    Titlul subiectului:  

ionescu.raul a scris: Incercati si http://www.phpromania.net/proiect/rc4php/download/
mare agitat mai esti.
Sus  
aurelian



Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti

Trimis: Lun Ian 23, 2006 5:57 pm    Titlul subiectului:  

ionescu.raul a scris: ....anyway...cum as putea sa capat niste feed-back-uri altfel?
pai deschizi un topic nou in sectiunea asta, si cam atat.
daca nu iti raspunde nimeni, inseamna ca totul este perfect.

// later, am vazut ca ai deschis topic in cod php, scuze.
Sus  
copot



Data înscrierii: 06/Apr/2005
Mesaje: 233
Locație: Undeva departe

Trimis: Mar Feb 28, 2006 3:22 pm    Titlul subiectului: Omule  

Felicitari !
Putina documentatie !

later (to avoid confusion): for aurelian
Sus  
aurelian



Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti

Trimis: Mar Feb 28, 2006 4:50 pm    Titlul subiectului: Re: Omule  

copot a scris: Felicitari !
Putina documentatie !

later (to avoid confusion): for aurelian

Foarte putina documentatie, foarte multe taskuri pentru un singur dezvoltator (sau 1+1/2 incluzandu-l si pe Andrei Panaitescu -- aka, apann)
So anyone, help?

Apropos, pe saptamana viitoare am planuit primul alpha release (0.1), acum stadiul este planning.

Later:
Merci pentru felicitari :)
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Proiecte
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community