hai sa facem si noi un framework pe sine

Ai un proiect pe care l-ai realizat în PHP? Doreşti să propui un proiect pe care să îl realizăm în cadrul comunităţii?

Moderatori: cristi, icsfails, Moderatori

johnny
Senior Member
Mesaje: 904
Membru din: Sâm Iul 31, 2004 12:22 pm
Localitate: Bucuresti
Contact:

hai sa facem si noi un framework pe sine

Mesajde johnny » Mar Oct 11, 2005 9:39 pm

Si pentru ca pana acum avem




si alte prajituri...

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



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...



aurelian
Senior Member
Mesaje: 833
Membru din: Dum Iun 01, 2003 7:54 pm
Localitate: Bucuresti
Contact:

Mesajde aurelian » Mar Oct 11, 2005 10:25 pm


aurelian
Senior Member
Mesaje: 833
Membru din: Dum Iun 01, 2003 7:54 pm
Localitate: Bucuresti
Contact:

Mesajde aurelian » Mie Oct 12, 2005 6:19 pm


aolex
Senior Member
Mesaje: 662
Membru din: Vin Dec 17, 2004 11:08 pm

Mesajde aolex » Mie Oct 12, 2005 6:54 pm

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

johnny
Senior Member
Mesaje: 904
Membru din: Sâm Iul 31, 2004 12:22 pm
Localitate: Bucuresti
Contact:

Mesajde johnny » Mie Oct 12, 2005 7:07 pm

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 ...

aolex
Senior Member
Mesaje: 662
Membru din: Vin Dec 17, 2004 11:08 pm

Mesajde aolex » Mie Oct 12, 2005 7:53 pm


johnny
Senior Member
Mesaje: 904
Membru din: Sâm Iul 31, 2004 12:22 pm
Localitate: Bucuresti
Contact:

Mesajde johnny » Mie Oct 12, 2005 8:07 pm

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 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 ...

shk
PHPRomania Supporter
Mesaje: 8
Membru din: Lun Oct 10, 2005 10:39 pm

Mesajde shk » Mie Oct 12, 2005 8:50 pm


aurelian
Senior Member
Mesaje: 833
Membru din: Dum Iun 01, 2003 7:54 pm
Localitate: Bucuresti
Contact:

Mesajde aurelian » Mie Oct 12, 2005 9:27 pm

exmplu ActiveRecord, implementat in medick.
1. schema.sql:
[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`);

[/php]

2. Modele:
[php]
class Todo extends ActiveRecordBase {
private $has_one = array('author');
}
class Author extends ActiveRecordBase { }
[/php]

3. Accesarea si Modificare datelor:

[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
[/php]

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.

shk
PHPRomania Supporter
Mesaje: 8
Membru din: Lun Oct 10, 2005 10:39 pm

Mesajde shk » Mie Oct 12, 2005 10:10 pm

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)

aurelian
Senior Member
Mesaje: 833
Membru din: Dum Iun 01, 2003 7:54 pm
Localitate: Bucuresti
Contact:

Mesajde aurelian » Joi Oct 13, 2005 3:48 pm

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

aurelian
Senior Member
Mesaje: 833
Membru din: Dum Iun 01, 2003 7:54 pm
Localitate: Bucuresti
Contact:

Mesajde aurelian » Lun Ian 23, 2006 4:17 pm


aurelian
Senior Member
Mesaje: 833
Membru din: Dum Iun 01, 2003 7:54 pm
Localitate: Bucuresti
Contact:

Mesajde aurelian » Lun Ian 23, 2006 5:57 pm


Avatar utilizator
copot
Senior Member
Mesaje: 233
Membru din: Mie Apr 06, 2005 2:22 pm
Localitate: Undeva departe
Contact:

Omule

Mesajde copot » Mar Feb 28, 2006 3:22 pm

Felicitari !
Putina documentatie !

later (to avoid confusion): for aurelian
The Power of Christ Compels You.

aurelian
Senior Member
Mesaje: 833
Membru din: Dum Iun 01, 2003 7:54 pm
Localitate: Bucuresti
Contact:

Re: Omule

Mesajde aurelian » Mar Feb 28, 2006 4:50 pm



Înapoi la “Proiecte”

Cine este conectat

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