Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przepisanie pluginów Symfony dla Propel 1.3
Forum PHP.pl > Inne > Hydepark
Cysiaczek
Witam,

Ci, którzy korzystają z Symfony i próbowali w tym farmeworku przejść na Propel 1.3 wiedzą, że większość pluginów najzwyczajniej w świecie przestanie działać. Winne temu jest API Creole, które różni się od API PDO. Nie zgadza się m.in. Wymuszanie typów.
np.
  1. <?php
  2. function (Criteria $c, $con){}
  3. ?>

Musi dla Propela 1.3 wyglądac następująco
  1. <?php
  2. function (Criteria $c, PDO $con){}
  3. ?>


Pętle operujące na wynikach z bazy też się różnią budową i sposobem pozyskania danych
np. w Creole
  1. <?php
  2. $id=$rs->getInt('id');
  3. ?>

w PDO po prostu
  1. <?php
  2. $id=$row['id'];
  3. ?>

Takich zmian dostosowujących API jest wiele. Wystarczająco dużo, aby zablokować przejście na nowszego Propela w nieco większym projekcie.
Propel 1.3 jest dużo wydajniejszy, co miałem okazję sam sprawdzić (zarówno mniejsza konsumpcja pamięci jak i szybsze przebiegi). Jego użycie jest zalecane przez developerów Symfony, tymczasem autorzy pluginów pokpili trochę sprawę i nie zanosi się na to, aby miel ochotę je przepisywać. Z tego, co widzę, to sprawdzają tylko zgodność z SF 1.1 i publikują jako "SF 1.1 Ready"

Chciałbym zatem zapytać, czy znajdą się ochotnicy chcący pomóc przy przepisywaniu tych pluginów? Jeśli tak, to porozmawiałbym z developerami SF w sprawie przygotowania jakiejś infrastruktury (gałęzie SVN), nazewnictwa (np. sfPropel13ActAsNestedSetBehaviorPlugin) i innych spraw organizacyjnych.

Zapraszam do wymiany opinii smile.gif

Pozdrawiam.

--up
Naprawdę nie ma ochotników? sad.gif
mike
No właśnie zastanawiałem się co Ci odpisać. Z jednej strony bardzo chciałbym się zaangażować. Przepisanie kilku najważniejszych pluginów byłoby super inicjatywą.
Niestety mogę nie miaeć czasu. W zasadzie to wiem nawet na pewno, że nie za bardzo będe miał czas na to sad.gif

Poza tym pomysł super.
Cysiaczek
Powiem Ci, że napotkałem pewien opór ze strony kogoś, kto zdaje się być jednym z devów SF - odrobinę mnie zdenerwował, gdy stwierdził, że bez sensu jest umieszczać tyle powtarzającego się kodu. Rozumiem, że to wprowadza jakiś element chaosu, ale osobiście doświadczyłem problemów z tymi pluginami, bo mimo chęci, musiałem zrezygnować z ich zastosowania w projekcie. Z 10 pluginów, które wpisałem na listę, 50% było tylko dla SF 1.0, a 100% napisane dla Propela 1.2.
Efekt: Utknąłem z Symfony 1.0 i Propelem 1.2 po raz kolejny. Ciekawe ile projektów miało podobną historię?
Rozbawił mnie też argument, że nie każdy developer wie, jakiej wersji propela używa i nakazanie wybierania pomiędzy 1.2 i 1.3 to za dużo komplikacji.
Powoli zaczyna się robić to sam, co z PHP - próba zachowania kompatybilności wstecznej tak długo, jak się tylko da.

Do przepisania nie jest aż tak dużo, jak by się mogło zdawać. To głównie to, co napisałem wyżej - zamiana Creole-like na PDO-like. Sam bym to pewnie był w stanie zrobić, ale trzeba najpierw wyodrębnić pluginy, które muszą zostać przepisane (kilkadziesiąt pewnie), przepisać i jeszcze to potem opublikować. Ja też nie mam teraz zbyt wiele czasu (co widać po mojej słabej frekwencji na forum). Na razie jest to luźny pomysł i do tego jeszcze nie wynegocjowany z Symfonianami. Cóż, napiszę prosto do Fabiena.

btw. Przepisanie sfGuard zajęło mi jakieś 15 minut, więc tak źle nie jest smile.gif

Pozdrawiam
pawel_k
ja myślę że najlepiej by było pomyśleć o przepisywaniu innych pluginów nie na propel 1.3 ale na DbFinderPlugin... miałoby to dużo większy sens - brak powtarzania kodu, brak przywiązania do jednego ORM'a (DbFinder już teraz obsługuje Propela 1.2 i 1.3 oraz Doctine), ogólny porządek...
Cysiaczek
O tym nie pomyślałem, ale rzeczywiście to nawet zdaje się być bardziej sensowne:)
Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.