Pagina 1 din 1

hai sa facem si noi un framework pe sine

Scris: Mar Oct 11, 2005 9:39 pm
de johnny
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...

Scris: Mar Oct 11, 2005 10:25 pm
de aurelian

Scris: Mie Oct 12, 2005 6:19 pm
de aurelian

Scris: Mie Oct 12, 2005 6:54 pm
de aolex
ce este defapt un framework si la ce ajuta ? :)

Scris: Mie Oct 12, 2005 7:07 pm
de johnny
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 ...

Scris: Mie Oct 12, 2005 7:53 pm
de aolex

Scris: Mie Oct 12, 2005 8:07 pm
de johnny
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 ...

Scris: Mie Oct 12, 2005 8:50 pm
de shk

Scris: Mie Oct 12, 2005 9:27 pm
de aurelian
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.

Scris: Mie Oct 12, 2005 10:10 pm
de shk
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)

Scris: Joi Oct 13, 2005 3:48 pm
de aurelian
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

Scris: Lun Ian 23, 2006 4:17 pm
de aurelian

Scris: Lun Ian 23, 2006 5:57 pm
de aurelian

Omule

Scris: Mar Feb 28, 2006 3:22 pm
de copot
Felicitari !
Putina documentatie !

later (to avoid confusion): for aurelian

Re: Omule

Scris: Mar Feb 28, 2006 4:50 pm
de aurelian