Strona 1 z 1

[PHP/SQL][Szukam] Framework

: pn maja 09, 2005 8:07 am
autor: viraptor
Witam.
Szukam jakiegoś ładnego frameworka w php do abstrakcji bazy (a raczej samych rekordów). Bardzo podoba mi się podejście z ruby on rails, ew. cake'a, czyli żeby framework zawierał przynajmniej:
klase, którą można dziedziczyć dla każdej tablicy
- w klasie lista obsługiwanych pól, lista pól, które nie są automatycznie wypełniane, typy pól
- funkcje typu
new klasa(array('pole1'=>'wartość', 'pole2'=>2))
klasa::get_all();, klasa::get_all('pole = wart');
sprawdzanie poprawności ułatwione makrami
$obiekt->insert(), $obiekt->update(), $obiekt->delete() (czyli cały CRUD)
- fajnie byłoby jeszcze wiązać tabele właściwościami 'należy do', albo 'ma wiele'.
Znacie coś takiego? Cake mi się podoba i ma to wszystko, ale wymaga mod_rewrite i stawiania vhosta, co nie zawsze mogę zrobić.
Chodzi oczywiście o rozwiązanie GPL / PD / wiadomo o co chodzi :)

Re: [PHP/SQL][Szukam] Framework

: pn lut 13, 2006 1:52 am
autor: splatch
Myślę, że w tym wypadku warto iść o krok dalej - zamiast wzorca ActiveRocord zastosować bardziej rozbudowany, ale podatniejszy na rozbudowę TableDataGateway. Rozwiązanie to implementuje Propel. Sam z niego korzystam i muszę przyznać, że zaoszczędza sporo pracy - odpada zbędna zabawa z pisaniem modeli (którą cake trochę upraszcza), co ważniejsze można w zupełności zapomnieć o zapytaniach SQL.

Re: [PHP/SQL][Szukam] Framework

: pn lut 13, 2006 9:05 am
autor: viraptor
Hehe - miło się doczekać odpowiedzi po roku :D
Tak czy inaczej narazie jade na Cake'u, bo całkiem ciekawie się rozwija. Chociaż, jeśli opublikujesz swój frame na jakiejś fajnej licencji, to na pewno przemyślę go ze wzgl. na te moduły przede wszystkim..
A TableDataGateway to całkiem ciekawy przykład... przypomina coś z pogranicza DataAdapter i DataSet z .NET'u - tam całkiem przyjemne w użyciu - w php nie stosowałem. Tam adapter robi update, insert, i fill(DataSet), a w samym DataSet jest find(), więc troche to jest pamięicożerne rozwiązanie.
Czy ty ładujesz w tym stylu całą tablice od razu, czy dajesz jakiś interfejs enumeratorów / foreach?

Re: [PHP/SQL][Szukam] Framework

: pn lut 13, 2006 9:47 am
autor: splatch
Mój framework jest na LGPL.

Korzystając z propela masz możliwość użycia LazyLoad to znaczy - dane są dociągane automatycznie - jeśli masz związek powidzmy 1:N (article z author) to przy pobraniu autora:
[php]<?php

$author = AuthorPeer::retrieveByPK($id);

foreach($author->getArticle() as $article) { // w tej chwili sa doczytywane powiazane teksty
echo $article->getTitle() .'<br />';
}

?>[/php]

Oczywiście korzystanie z LazyLoad jest uzależnione od sytuacji, ale osobiście wolę mieć już przygotowane wyniki:
[php]<?php
$c = new Criteria();
$c->add(AuthorPeer::AUTHOR_ID, $id, Criteria::EQUAL);
$results = AuthorPeer::doSelectJoinArticle($c);
foreach($user[0]->getArticle() as $article) {
echo $article->getTitle() .'<br />;
}
?>[/php]