Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: phiend2: reaktywacja
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
Stron: 1, 2
hawk
Jak niektórzy zapewne wiedzą, od dłuższego czasu pracuję nad phiendem 2. Niestety, po n-tym refactoringu i pisaniu wszystkiego od nowa jestem tym trochę zmęczony i raczej nie wydam tego kiedykolwiek o własnych siłach. Za to kod, który jest już napisany, bardzo mi się podoba i szkoda go marnować.

Więc poszukuję ludzi do współpracy.

Główne założenia:
  • Napisany pod PHP5 i bardzo, bardzo obiektowo. Znacznie bardziej niż stary phiend. Co oznacza, że jest więcej klas, ale mniejszych.
  • Oparty o interfejsy. Prawie wszystko można sobie wymienić na własnoręcznie napisaną klasę, jeżeli tylko ma taki sam interfejs.
  • Rozwijany metodą małych kroczków. Zamiast wielkiego frameworka wg zasady wszystko-albo-nic, zbiór komponentów, z których większość jest opcjonalna albo może być używana niezależnie.
Poza samym MVC trzonem projektu są 3 kawałki kodu:
  • phiend.autoloader: autoloader winksmiley.jpg
  • phiend.handle: zestaw klas do obsługi handles (trochę jak w WACT, służy do przekazywania referencji do obiektu bez tworzenia samego obiektu, kiedy nie jest jeszcze potrzebny)
  • phiend.context: zbiór klas do obsługi całego request, response i sesji, trochę podobne do rozwiązania z Jav
Oprócz tego napisałem jeszcze bardzo fajny error handler, ale w odróżnieniu od phiend1 nie jest on częścią frameworka. Bo niby dlaczego MVC ma wymagać konkretnego error handlera?
Co do samego MVC, kilka słów:
  • Front Controller (chociaż wymienialny; źródło jego konfiguracji: dowolne)
  • Intercepting Filter (w postaci dekoratora na każdą akcję i w stylu javovym na cały request)
  • żądanie przechodzi przez router, więc schemat URLi jest dowolny
  • bez podziału na akcje i widoki, akcje można łączyć w łańcuch jak w phiendzie 1
  • Akcje mają konfigurację; źródło tej konfiguracji: dowolne
  • Ważne moduły (np. połączenie z DB, autoryzację) można podpiąć jako tzw. pluginy: system sam je skonfiguruje, uruchomi kiedy trzeba i zamknie na koniec
Kogo szukam?
  • Ludzi, którzy sami potrafią zrozumieć kod, bo dokumentacji nie ma
  • Ludzi, którzy lubią pisać dokumentację biggrin.gif, zwłaszcza tutoriale dla newbies, bo ja do tego nie mam serca i nigdy mi nie wychodzi
  • Ludzi, którzy znają się na unit testach (dokładnie: SimpleTest), bo ja niestety nie i bardzo tego żałuję
  • Ludzi, którzy chcą się skupić na jednym komponencie i dopracować go do końca
  • Kogoś, kto mógłby w miarę postępu stworzyć nie przyprawiającą o mdłości stronę na SF
  • Special request: Kogoś, kto np. zna Mojavi i chciałby zrobić w phiend2 jego emulator - IMHO wyjdzie szybciej, prościej i w ogóle lepiej winksmiley.jpg
* więcej informacji w miarę wolnego czasu
** jeżeli temat tutaj nie pasuje, można śmiało przenosić
hwao
Podepne na jakis czas.
bela
No to się zgłaszam biggrin.gif
Cudi
Również się zgłaszam smile.gif
squid
a jakies wymagania czasowe? bo osobiscie nie wiem ile czasu bede mial ale zalozenia mi sie podobaja, chyba tylko weekendy mi zostaja. Interesuje mnie to czy projekt bedzie caly czas rozwijany czy umrze jak phiend1. Jeszcze to co mnie ciekawi to PEAR, jak sie ma do projektu?
hawk
Wymagania czasowe: ja mam czasu mało, niestety. To zależy od was. Akurat ten system można budować stopniowo, dodając kolejne klocki. Bardzo szybko można zmontować działającą wersję i potem dodawać funkcjonalność.
Projekt będzie rozwijany, jeżeli nie zabraknie chętnych do współpracy. Jak zabraknie, to skończy się jak phiend1, bo sam nie dam rady.
Co do PEAR: tfu tfu! Chociaż jak ktoś ma jakiś pakiet z PEAR, który chce używać, to nie ma przeszkód. Podobnie jak phiend1, wersja 2 może współpracować praktycznie z wszystkim.
matid
Ja też się na to piszę.
hawk
Do wszystkich chętnych:
http://barfoo.host.sk/phiend2/phiend2-lib.zip: wiadomo co winksmiley.jpg
http://barfoo.host.sk/phiend2/phiend2-root.zip: nawet jeszcze nie test ani przykład użycia, ale dowód, że to się chociaż parsuje bez błędów
Zasada działania najważniejszego składnika (phiend.mvc) jest z grubsza taka:
PluginLoader jest rejestrem przechowującym pluginy. Plugin to po prostu nazwana klasa; loader go stworzy, kiedy będzie potrzebny, i i usunie pod koniec żądania. Niektóre pluginy są używane tylko wtedy, kiedy akcja po nie poprosi, ale jest kilka szczególnych pluginów, rozpoznawanych po nazwie, które są niezbędne dla działania systemu:
  • controller: wiadomo, kontroler winksmiley.jpg
  • router: też wiadomo...
  • actionFactory: tworzy obiekty akcji
  • configFactory: tworzy konfigurację dla akcji
  • filterChain: zarządza filtrami
Pluginy o takich nazwach muszą być zdefiniowane. A że podać można dowolny obiekt realizujący interfejs... można w prosty sposób wymienić dowolny element systemu, nawet sam kontroler.
Filtry dekorują wywołanie pojedynczej akcji i są dla tego wywołania przezroczyste.
dr_bonzo
Cosik te linki nie dzialaja.
@hawk: moge je zahostowac --> PW.
Bora
Oczywiście jak już piałem z chęcią wspomoge ten projekt.
Podobnie jak Open Power Board jest to jeden z ciekawszych.
squid
mnie tez nie dziala, znaczy pobiera 0 bajtow.
Widze ze wiele osob sie do tego garnie wypadaloby soordynowac jakos proace i podzielic sie nia, co myslicie?
Cudi
Może jakieś spotkanie na IRC'u? Wszystko zależy od hawka, myśle że godzinka wystarczy by nas wprowadzić i jakoś sensowanie rozdzielić pierwsze zadania.
sf
Mam male pytanie OT. Dlaczego zniknol podzial na akcje logiczne i widoku? Czym to zostalo spowodowane? Wydawalo mi sie to rozwiazanie wzorcowe ;\
hawk
Co do linków: ooops, głupi serwer wycina mi pliki zip mad.gif. Ale wpadłem właśnie na genialny w swojej prostocie pomysł: http://phiend.sf.net/misc.

Co do IRC: na razie mam deficyt czasu, i chcę najpierw pokazać kod... ale niedługo zrobię.

Co do akcji logicznych i widoku: i tak, i nie. Nie ma tego w kontrolerze, ale można sobie bardzo szybko sklecić mały filtr, który sprawdzi, czy ($akcja instanceof AkcjaWidoku) i nie pozwoli nic dalej wywołać. A tak jest więcej możliwości. Można nawet przyjąć, że widok jest zupełnie inną klasą wywoływaną przez akcję i zrobić coś w stylu Mojavi, gdzie w ogóle nie ma akcji widoku.
squid
Cytat(NuLL @ 2005-06-06 20:34:13)
Jeśli uda się ustalić jakiś porządek działania smile.gif i kto co ma robić - ja też bym się zgłosił - mam nadzieję, że będzie inaczej niż z THOT'em winksmiley.jpg

Bedzie bo my sie za to bierzemy smile.gif
Coyote
hm... sorki ze moze glupie pytanko ... ale co to wlasciwie jest questionmark.gif
bo nie za bardzo czaje ....
NuLL
@Coyote - Framework czyli swoisty szkielet do budowania aplkacji smile.gif
Coyote
a dzieki ale i tak nie bardzo czaje smile.gif
byl bym wdzieczny za jakis przyklad albo cus winksmiley.jpg (najlepiej polski biggrin.gif)
NoiseMc
Mam już źródła ale prawe mówiąc nie bardzo wiem jak to ugryźć i od czego zacząć. Jest jakiś podział prac ?
squid
Cytat(NoiseMc @ 2005-06-08 23:44:35)
Mam już źródła ale prawe mówiąc nie bardzo wiem jak to ugryźć i od czego zacząć. Jest jakiś podział prac ?

sek w tym ze nie ma
hawk
Dopominacie się podziału prac, więc należy się wam trochę działania z mojej strony.

Phiend2 jest, hmm, modularny, więc idea jest taka, że jedna osoba bierze "na tapetę" jeden komponent, który jest potrzebny i który trzeba napisać, albo - co gorsza - dopiero opracować i zaprojektować.

Na razie zacząłem wrzucać kod do CVS na SourceForge (to samo repozytorium co stary projekt phiend). Docelowo chciałbym mieć repozytorium SVN i serwer z PHP5, na którym można postawić demo. To pierwsze SourceForge ma niedługo wdrożyć, to drugie pozostaje problemem. Jak ktoś ma konto na SF, mogę go przyłączyć do projektu phiend i wtedy można zmieniać kod bezpośrednio. Jak ktoś nie ma i nie chce mieć konta, może mi wysłać kod mailem, a ja wrzucę do CVS.

Tak na marginesie, projekt będzie na LGPL, tak jak stary phiend.

Konkretne zadania do wykonania:

1) Napisanie routera, który implementuje schemat URL typu http://www.example.com/index.php/nazwa/akcji/i/parametry. Zrobienie to tego i do GetParamRouter unit testów. - emilio

2) Dokończenie klasy BasicHttpResponse (kilka źle zaimplementowanych metod, brak tworzenia cookies). Dokończenie BasicHttpSession i ocena, czy to się trzyma kupy (bo ciągle nie jestem zadowolony z tego kodu).

3) Implementacja IHttpRequest, która zrzuca wszystkie dane do pliku XML. Druga implementacja IHttpRequest, która wczytuje wszystkie dane z pliku XML. W ten sposób można - teoretycznie - symulować dowolne żądanie (np. formularz) bez klikania w przeglądarce.

4) Dokończenie klasy wczytującej konfigurację pluginów i filtrów z pliku XML.

5) Rozwój koncepcji ConfigFactory - zwłaszcza XmlConfigFactory, składający konfigurację akcji z hierarchicznej struktury plików XML.

6) Uwierzytelnianie i autoryzacja. Ja się skłaniam ku koncepcji grup użytkowników, którym się nadaje prawa DENY albo ALLOW do akcji albo katalogów (modułów) z akcjami. Uwierzytelnianie powinno być oddzielone od autoryzacji. Warto zobaczyć, co już na ten temat zostało dobrego stworzone, zamiast pisać od zera. Tutaj duże pole do popisu winksmiley.jpg.

7) Niedługo powinienem skończyć szkielet phiend.logger - skrzyżowania error handlera z klasą do obsługi logowania. Wtedy będzie potrzeba napisania klas wyświetlających lub zapisujących błędy i inne komunikaty. Coś jak error-listeners ze starego phienda, ale mając PHP5 i mechanizmy Reflection można zrobić to znacznie lepiej.
NuLL
Lekki OT. A czy nie lepiej jest napisać plug-in prostego Cookie Manager'a który będzie ładowany kiedy użytkownik wpisze w kodzie aplikacji, że go potrzebuje- może napisać jako handler podobny jak do sesji ?
hawk
Hmm... napisać się na pewno da. Myślisz, żeby wywalić obsługę cookies z IHttpResponse? Ale czy warto? Na razie jestem na etapie jednej metody: setCookie, która musiałaby chyba tworzyć headera jakiegoś.

Jak widać, sprawa nie jest prosta, a ja jestem otwarty na propozycje.
kubatron
hawk: mam takie pytanie, czy nie lepiej byłoby pogadać z Administratorami forum.php.pl i poprosić o założenie Grupy phiend2 i jednego działu forum questionmark.gifsmile.gif
Cudi
Jeśli chodzi o serwer z php 5 to na dotgeek.org jest darmowy hosting, nie powinno być problemów z uzyskaniem konta dla projektu.
squid
Cytat(Cudi @ 2005-06-14 16:35:15)
Jeśli chodzi o serwer z php 5 to na dotgeek.org jest darmowy hosting, nie powinno być problemów z uzyskaniem konta dla projektu.

mam tam konto developerskie i nie polecam, mam tam problemy z dzalaniem niektorych skryptow ( PHP5 ), serwer czasem nie dziala czasem dziala "dziwnie" i jest tylko 10 mb c na archoiwa jest troche za malo (chyba ze zmienili). Soureforge.net chyba jest jest lepsiejszy zwlaszcza ze tam chyba byla pierwsza czesc phienda
bela
@squid, tylko czy na sf.net jest php5 smile.gif
dr_bonzo
Ale do przechowywania zip'ow nie potrzeba chyba php5.
Cudi
Na sf.net (jeszcze) nie ma php 5 (i nie wiadomo kiedy będzie). Nie chodzi o przenoszenie całego projektu pod dotgeek'a, tylko o przeniesienie części wymagających php 5, czyli np. pokaz działania phienda, choć pewnie będzie nim poprostu strona projektu. Co do awaryjności dotgeek'a, mam tam konto od samego początku tego hostingu i jeszcze nie miałem problemów. Pamiętajcie, że my raczej nie będziemy korzystać z "niektórych skryptów" tylko ze skryptów napisanych przez nas.
hawk
Hmm, mamy na razie serię postów o hostingu PHP5, który na razie nie jest potrzebny, bo nie ma dema, które możnaby hostować. Nie mamy natomiast postów konkretnych - że ktoś chce zrobić kawałek systemu. Być może to, co napisałem, jest niejasne? Czekacie na jakiś ruch z mojej strony? Nie chcę przydzielać komuś czegoś na siłę... i nie chcę robić zawiłych planów i długich dyskusji, jak w przypadku ś.p. THOTa...
Cudi
W tym tygodniu jestem bardzo zajęty i będzie ciężko mi sie zabrać za phienda. Zgłosze sie do któregoś z zadań w przyszły weeked.
squid
Osobiscie dreczy mnie sesja egzaminacyjna wiec dopiero za kilka dni zaczne sie przygladac temu blizej ale przydalby sie osobny dzial na forum dla developerow phineda (w zasadzie dla wszystkich skoro to ma byc system otwarty). Wciaz jednak doskwiera mi brak synchronizacji.
Diablos
A co to jest ten phiend i do czgo sluzy ?
kubatron
http://www.google.pl/search?hs=AK2&hl=pl&c...btnG=Szukaj&lr=
Proponowałbym pierwsze poszukać na google a potem pytac :/ A tak krótko mówiąc to phiend2 jest frameworkiem.
aleksander
ja mam kilka pytan dot. phienda2:

1. Czy HttpContext to Twoj pomysl hawk, bo jeszcze się z tym nie spotkałem:)

2. Jak się ma HttpRequest do Routera? wg mnie te dwie rzeczy się zazębiają tzn Router jest częścią HttpRequest. Z drugiej strony w Routerze pownien byc URL generator a to nie pasuje do HttpRequest:)
hawk
Mam wrażenie , że reaktywacja zakończyła się totalną klapą, i coraz bardziej mnie to wkurza. Czemu?

Teraz każdy pisze swój framework. Nieważne po co, nieważne w czym ma być lepszy niż inne - ma być i koniec. Z tego powodu przestałem lubić słowo "framework". I phiend2 nie jest frameworkiem. Jest czymś w rodzaju WACT, przynajmniej w teorii. W praktyce WACT jest właśnie frameworkiem. Bardzo dobrym, ale nie rozumiem, dlaczego dlaczego muszę używać ich error handlera razem z ich szablonami. Framework == wszystko w jednym, bierzesz całość albo nic. A nazwa WACT sugeruje coś innego - Component Toolkit, czyli zbiór komponentów do wykorzystania w swoich projektach. W tym i w swoich frameworkach, jeżeli ktoś musi mieć własny.

Ale miało być o phiend2, nie o WACT. To, co na początku było frameworkiem o nazwie phiend2, zostało podzielone na szereg pakietów o nazwach phiend.cośtam. Nie dlatego, żeby więcej razy występowało słowo "phiend", tylko dlatego, żeby nie robić z tego wielkiego frameworka, tylko zbiór praktycznych komponentów. Które pasują do siebie i wykorzystują się nawzajem, ale mogą być stosunkowo łatwo używane w innych projektach.

I co z tego wyszło? Po pierwsze, ludzie, którzy deklarują chęć pomocy, ale nie potrafią zrobić coś konkretnego. OK, zdaję sobie sprawę, że tworzenie takich komponentów to trudna sprawa. Kod własnego frameworka można sobie pisać, jak się komu podoba. Kod wielokrotnie używanej (w zamierzeniu) biblioteki musi być dopracowany i optymalny. Ale jeżeli miałbym najpierw tłumaczyć szczegółówo, o co chodzi, pokazywać jakąś dokumentację, diagramy, itd., to mi się to nie opłaca, bo szybciej sam bym zrobił co trzeba. Tak naprawdę potrzeba mi nowych pomysłów i krytycznego spojrzenia, a nie przypominam sobie, żeby ktokolwiek wskazał jakieś ulepszenie albo wskazał konkretny fragment, który mu się nie podoba.

Po drugie, najważniejsze, mam wrażenie że nikt nie chce brać w tym udziału. Dostałem już sporo PW w stylu "podoba mi się pakiet phiend.cośtam, czy mogę wykorzystać twój kod w swoim frameworku?". Przecież to jest bez sensu! Gdyby ktoś mi napisał, że podoba mu się pewne rozwiązanie, ale nie może zastosować całości, ponieważ ma inne (jakie?) wymagania, to rozumiem. Ale jak komuś się podoba jakiś komponent, to należy go wykorzystać, a nie przepisywać od nowa. Na tym polega istota komponentu. Reużywalność, a nie copy-paste.

W php najbardziej zniechęca mnie to, że bardzo mało jest reużywalności. Każdy framework jest niezależny. Każda biblioteka niekompatybilna z innymi. No prawie. Ręce mi opadają, jak widzę, że np. Mojavi zawiera własny driver do bazy danych, WACT też, itd, itd. Ja mogę o swoim kodzie powiedzieć, że albo jest wymyślony od początku przeze mnie, albo zaczerpnąłem pomysł od kogoś innego, ale przynajmniej mogę uzasadnić, dlaczego musiałem napisać go od nowa. Np. phiend.handle inspirowany jest klasą Handle z WACT, ale po pierwsze implementacja jest inna, a po drugie autorzy uparli się, że nie można używać klasy Handle bez ich szablonów. A cała ta reaktywacja phiend2 skończy się pewnie tym, że phienda2 jak nie było, tak nie będzie, ale za to będziemy mieli kilkanaście frameworków zawierających przypadkowo wyrwane fragmenty kodu, nijak nie pasujące do siebie nawzajem.
aleksander
ok więc moja pierwsza uwaga co do phienda2: mianowicie autoloader

U Ciebie jest tak, że do autoloadera dodaje się mape. Moim zdaniem klasa Autoloader powinna sama dbac o swoją mapę. Wtedy jest hermetyzacja, kontroler czy cośtam innego nie musi martwi się o załadowanie mapy, autoloader jest wymienialny.

Napisałem taki interfejs klasy Autoloader, który obrazuje mój pomysł:
  1. <?php
  2. interface IAutoloader
  3. {
  4. /**
  5.  * Ładuje mapę do pamięci
  6.  */
  7. protected function loadMap();
  8. /**
  9.  * Generuje mape dla podanego folderu i jego podfolderów.
  10.  *
  11.  * @param string $sDirName Ścieżka do katalogu, który ma by zmapowany
  12.  * @param bool $bDeleteOldMap Jeżeli true, nadpisuje stara mapę, jeżeli fal
  13. e dopisuje do starej.
  14.  */
  15. public function generateMap( $sDirName, $bDeleteOldMap );
  16.  
  17. /**
  18.  * Metoda wywoływana przez __autoload(), ładuje plik z wymagana klasą.
  19.  *
  20.  * @param string $sClassName Nazwa klasy
  21.  */
  22. public function load( $sClassName );
  23. }
  24. ?>
matid
A IMO brakuje temu wszystkiemu trochę organizacji.
Po pierwsze przydaloby się jakieś spotkanie na IRC lub rozmowa konferencyjna na Jabberze, aby ustalić podzial prac, zalożenia systemu, itp.
aleksander
hawk napisał już co trzeba zrobic, zrodła są to na co czekacie?tongue.gif napisz ktoś do hawka że chcesz robi to a to i juz;)

Ja mam rozterke czy też nie pomaga przy phiendzie2, bo robie (doh) swój własny fw:D:D

Póki co to rozgryzam cały phiend.context, nie moge tych sesji skumac;)
squid
Cytat(aleksander @ 2005-07-20 16:25:29)
hawk napisał już co trzeba zrobic, zrodła są to na co czekacie?tongue.gif napisz ktoś do hawka że chcesz robi to a to i juz;)

Ja mam rozterke czy też nie pomaga przy phiendzie2, bo robie (doh) swój własny fw:D:D

Póki co to rozgryzam cały phiend.context, nie moge tych sesji skumac;)

no przegladam kod i jetem pod wrazeniem autolowadera ale inne czesci kodu nie sa juz dla mnie tak jasne. Przydalby sie jakis ogolnikowy diagram UML ( diagram klas albo przeplywu ) ale napisac co co robi albo ma robic, nie widzialem komentarzy w kodzie co znaczy ze trzeba analizowac linijka po linijce a niektore pliki wygladaja na generowane przez inne wiec to wszystko trzeba przejzec.

Ja wiem ze Hawk chce zajac sie kodem a nie sprawami organizacyjnymi z uwagi na bardzo maly budzet czasowy ( kazdy z nas ma ten problem ) ale wprowadzenie jasnosci w to jak to dziala moze zachecic kilka osob do zajecia sie tym na serio co moze dac wieksze rezultaty.

Mozemy pisac w php etc. ale nie mozemy sie w nim komunikowac, kod to za malo!
Co nie zmienia faktu ze caly czas przegladam zrdelka i jestem zainteresowany wspolpraca.
chmolu
Hawk: Phiend to naprawdę świetny kawałek kodu, dobrze zaprojektowany, ładnie napisany, ale... przekombinowany. Uważam, że dla php to za duży balast.

Dla mnie Phiend2 jest typowym przykładem frameworka, nad którym pracuje się latami, co chwila poprawiając jakiś kawałeczek, żeby ładniej wyglądało. IMO to się mija z celem. Pierwsza wersja Phienda była prosta i umożliwiała ci skupienie się na budowaniu aplikacji. Teraz zamiast skupić się na apikacji budujesz idealny framework.

Kod php udostępniony na użytek publiczny nigdy nie zostanie wykorzystany przez ludzi w całości. Każdy woli napisać coś swojego. Przykładem jest mnogość systemów szablonów, driverów do baz danych, czy frameworków. Zgadzam się w 100%, w php pojęcie 'reusable' chyba nie istnieje. Choć przyznam, że osobiście też wolę w php napisać wszystko samemu, gdy widzę jaki śmietnik jest w danej bibliotece. Dlatego coraz poważniej rozważam dokładniejsze poznanie Ruby'ego, albo Javy.

Jak tylko napisałeś ten temat i ochoczo zgłaszali się pierwsi do pomocy wiedziałem, że nic z tego nie będzie. Jeśli masz wizję, wszystko zaprojektowałeś i napisałeś od początku to lepiej będzie, gdy nadal sam będziesz się tym zajmował. Naprawdę trudno znaleźć w takim wypadku ludzi, którzy zrealizują tylko twoją ideę. Dlatego nie proszę nikogo o dołączenie się do prac nad moim "wymarzonym" skryptem. Nawet jeśli ktoś się zgłosi, to nie chcę później poprawiać każdej linii kodu napisanej przez inną osobę. Wiem, że nikt nie zrobi tego zgodnie moją wizją.

Inną sprawą jest, gdy projekt od początku jest tworzony przez grupę ludzi, którzy wspólnie ustalają założenia i piszą kod. Tutaj zazwyczaj udaje się dojść do porozumień co do stylu kodowania, projektu i samego kodu.
matid
A co do innych zastrzeżeń:

phiend.context
Przy tworzeniu instancji klasy BasicHttpRequest usuwane są wszystkie tablice zawierające zmienne superglobalne ($_GET, $_POST, $_COOKIE, itd.).
Klasa BasicHttpSession jako argument do konstruktora wymaga klas implementujących interface IHttpRequest i IHttpResponse, czyli np. BasicHttpRequest i BasicHttpResponse. Teraz przejdźmy do sedna sprawy.
Chodzi o metodę BasicHttpSession::start(), która wywoluje funkcję session_start(). Tylko pojawia się problem - ta funkcja będzie za każdym razem tworzyla nową sesję, bo nie może znaleść Id poprzedniej sesji (tablice superglobalne są usunięte). Więc przez session_start() brakuje takiego kawalka kodu:
  1. <?php
  2. if( $this->getMethod() != 0 )
  3. {
  4. session_id( $this->request->getParameter( $this->getName(), $this->getMethod() ) );
  5. }
  6. ?>
squid
wg mnie nie jest tak zle winksmiley.jpg

Oczywiscie ze nie wszystko jest pieknie i rozowo ale tak jest zawsze, zeby framework byl czms wiecej niz przelotnym pomyslem jednej osoby trzeba pracujacej grupy a nie jednej osoby bo ona (ta osoba) narzuca swoje rozwiazania nie widza problemu z innych perspektyw, to jest ANTI-REUSEABLE. Moze i nie monza zbudowac takiego kodu w php ale moze warto by sie skupic nad samamym szkieletem frameworka (wiem ze to gluio brzmi). Chyba kazy kto przegladal zrodelka chcialby dodac cos od siebi, uzyc czegos innego itd. Moze wiec wypracowac jakies wspolne API i jak ma to wszystko dzialac aby bylo maksymalnie elastycznie. Idea budowania aplikacji z klockow bardzo mi sie podoba ale bez szkieletu klocki sie posklejaja. Interfejsy mysle ze tu duzo daja ale to za malo. Mysle ze dobrze byloby zrobic taka wyliczanke, podzielic wszystkie zadania na fragmenty i napisac taka klasa ma takie wlasciwosci i metody, takie argumenty (zgodnie z idea programowania defensywnego sprawdzac czy all jest ok) i na tej podstawie zaczac pisac bo bedzie to o wiele leastyczniejsze kiedy bedziemy wiedziec czym ma sie dany kawalek kodu zajac a to jak to sie zaimplementuje to rzecz gustu.
hawk
Uff! Ale przynajmniej coś się ruszyło w temacie winksmiley.jpg.

@chmolu: Masz sporo racji. Zwłaszcza, jeżeli pamiętać, jak skończył THOT. A przecież gdyby nie THOT, nie ruszyłbym phiend2.
Niestety, doba nie jest z gumy, a ja już mam doświadczenia z phiend1 i wiem, że nie będzie mi się chciało znowu robić strony, pisać dokumentacji, odpowiadać na maile użytkowników, itd, itd. Ja się nadaję na projektanta. Na kodera już mniej, a na testera i support w ogóle. Odechciewa mi się sad.gif. Zresztą, ja nawet nie zajmuję się zawodowo php, więc robię to tylko dla przyjemności.

@NULL:
Cytat
Czemu - może jest lepszy ? Potrzebna matką wynalzku - gdyby wszyscy myśleli jak Ty ( @Hawk )to Jargon i Creole by nie powstały bo jest AdoDB
...
A to phiend jest super spójny i idealny  Wszystko w nim pasuje do siebie  A mi coś w tym kodzie co napisałeś może nie pasować bo nie jestem Tobą...

Problem z Mojavi polega na tym, że to jest framework MVC, a nie driver do bazy danych. Nie mam nic przeciwko Creole (tego drugiego nie znam) - robi konkretną rzecz, możesz wybrać pomiędzy różnymi bibliotekami. Ale nie ma żadnego powodu, dla którego wybierając framework MVC musisz się dodatkowo przebijać przez ich warstwę do DB - to są nie związane ze sobą rzeczy. Gdyby twórcy Mojavi wypuścili osobno bibliotekę do DB, nie byłoby problemu.
A phiend2 pewnie wcale nie jest spójny i idealny. Raz, że on nawet nie do końca na razie działa. Dwa, że ideału nie ma. I ja nie twierdzę, że jest super. Jak Ci się nie podoba, to nie mam pretensji. Jak Ci się częściowo podoba, a częściowo zrobiłbyś coś inaczej, to daj znać - może Twój pomysł jest lepszy i będziesz miał to co chcesz w kodzie phienda?

@matid: Przyznaję się bez bicia, że phiend.context nie jest jeszcze sprawny. Słuszna uwaga.

CDN.
aleksander
Cytat(hawk)
Intercepting Filter (w postaci dekoratora na każdą akcję i w stylu javovym na cały request)

Zrobiłem właśnie taki IF, jeżeli chcesz hawk, prześlę Ci go, obejrzysz i może włączysz do projektu:)

pozdrawiam

--
UPDATE: BasicHttpSession już tez właściwie działa.
hawk: po co metoda Session::getMethod()? Ona w ogólne jest nieużywana.
Dodałem do klasy BasicHttpSession interfejs ArrayAccess więc można robic $oSession['bla'] :]

Widze jednak ze nikt sie juz phiendem nie interere tongue.gif nie to nie:P
Neotion
moge się dołączyć jako dokumentator i torche moge kodu napisać albo poprawić ale raczej wolałbym cos na prace w domciu bez neta bo nie mam stałki sad.gif ale tutoriale mógłbym napisać pozatym mógłbym się tym w szkole pochwalić - ide do technikum informatycznego
matid
Cytat(aleksander @ 2005-07-26 17:40:50)
UPDATE: BasicHttpSession już tez właściwie działa.

Jak rozwiązałeś problem tworzenia nowej sesji przy usuniętych $_COOKIE?
aleksander
Cytat(matid @ 2005-08-05 17:30:39)
Cytat(aleksander @ 2005-07-26 17:40:50)
UPDATE: BasicHttpSession już tez właściwie działa.

Jak rozwiązałeś problem tworzenia nowej sesji przy usuniętych $_COOKIE?

yyyyy ... to przynajmniej juz wiem po co przekazywane było do konstruktora HttpRequest...

BTW nie wierze, że temat odżył smile.gif
matid
Cytat(aleksander @ 2005-08-05 17:34:29)
yyyyy ... to przynajmniej juz wiem po co przekazywane było do konstruktora HttpRequest...

BTW nie wierze, że temat odżył smile.gif

Już o tym pisałem tutaj. Nie wiem, czy znajdziesz inne rozwiązanie i czy w ogóle warto, ale moje wydaje się działać.
aleksander
ja pomyslalem o czym takim:
  1. <?php
  2. $oHttpRequest = new BasicHttpRequest();
  3.  
  4. $oHttpContext( $oHttpRequest, new BasicHttpContext, new BasicHttpSession( $oHttpRequest ) );
  5. ?>

chodzi o to, zeby do HContext i HSessionprzekazac referencje do tego samego obiektu. A HSession p[otem wyciaga z cookie sessionid:)
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.