Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> phiend2: reaktywacja
hawk
post
Post #1





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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ę (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
* więcej informacji w miarę wolnego czasu
** jeżeli temat tutaj nie pasuje, można śmiało przenosić


Ten post edytował hawk 30.05.2005, 20:02:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hawk
post
Post #2





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

Ostrzeżenie: (0%)
-----


Jak zapewne zauważyliście, długo mnie tutaj nie było i ten stan rzeczy nie ulegnie radykalnej zmianie. Po prostu przestało mnie to bawić. Programistą php nie jestem i nie będę, nie wiążę z tym przyszłości zawodowej, a w ramach spędzania wolnego czasu wolę wyżywać się na worku albo pić wódkę.

Projekt informatyczny, żeby był zauważony, musi żyć. Musi być aktywnie rozwijany. Trzeba reagować na zgłoszenia błędów i propozycje zmian. Trzeba robić ogólnie pojęty support. A tego akurat mi się całkowicie nie chce - w konkurencji spędzania wolnego czasu support plasuje się daleko, daleko za programowaniem. Natomiast bez supportu projekt staje się niszowy. Dla mnie niepotrzebny, bo ja i tak php w pracy używać nie będę.

Natomiast lubię projektować, i dlatego zostałem z rozgrzebanym kodem, który - sądząc po zainteresowaniu - jest dobrze pomyślany, ale którego sam nie doprowadzę do stanu używalności. Phiend2, jak pewnie zauważyliście, nie jest tak naprawdę frameworkiem. Jest zbiorem komponentów, na szczycie których jest co prawda framework MVC, ale nie jest on (dla mnie) najważniejszy. Teraz każdy ma własny framework, a ich porównywanie nie ma sensu. Natomiast mały komponent napisany w konkretnym celu może być znacznie łatwiej używany w różnych projektach.

Sytuacja jest więc taka: jest kilka mniej lub bardziej dokończonych komponentów i praktycznie martwa strona na SF. Na dole jest krótki opis tych komponentów. Jeżeli są zainteresowani, to chętnie przekażę je w dobre ręce, na zasadzie, że dalej jest to phiend, tylko autorów ma wielu. Na SF jest CVS, na którym można to rozwijać. Jest forum, jest cała infrastruktura. Alternatywnie można się przenieść. Kiedyś na tym forum krążył pomysł stworzenia własnego repozytorium dobrego kodu, ale chyba umarł.

Lista komponentów:
phiend.proxy
Pierwotnie nazywało się phiend.handle, ale słowo handler używane jest często i w różnych kontekstach, więc zmieniłem. Rozwinięcie klasy Handle obecnej w WACT, zapewnia lazy loading obiektów. Przekazuje się w kodzie proxy do obiektu, a samo stworzenie obiektu (łącznie z includowaniem pliku z kodem) odbywa się dopiero przy pierwszym użyciu. Kod ukończony, sa nawet unit testy (SimpleTest).

phiend.log
Zestaw klas do obsługi błędów. Inspirowany log4php, ale bez tego strasznego przerostu kodu. Z jednej strony bardzo obiektowy, co zapewnia elastyczne filtrowanie błędów i łatwe dodawanie nowych sposobów obsługi/zapisu błędów. Z drugiej strony najlepsza konsola prezentująca na ekranie informacje o błędzie, jaką do tej pory widziałem. Listing kodu wywalającego błąd i debug_backtrace to standard. Ale podawanie definicji każdej metody z tego backtrace, włącznie z miejscem definicji, nazwami i typem argumentów... mając do dyspozycji Reflection można dużo zrobić. Kod działa, ale na pewno można go dopracować, dopisać nowe handlery, poprawić wygląd konsoli, itd.

phiend.autoload
Prezentowany już tutaj na forum autoloader. Prosty, elastyczny, działający. Bardzo by się do niego przydał (jako osobny projekt) system do mergowania plików z kodem php, ponieważ sam mechanizm autoload w php jest czasochłonny. Ale być może coś takiego da się wykonać przy pomocy Phing...

phiend.auth
Prosty system uwierzytelniania oparty o zagnieżdżone grupy. Na tyle nieskomplikowany, że można go użyć wszędzie, i na tyle rozszerzalny, że można go oprzeć o dowolne źródło (DB, pliki ini, pliki passwd, LDAP, pliki Samby...) tworząc nowy handler. Zainspirowany Solarem i PEAR::Auth, ale znacznie mniejszy i łatwiejszy do dopasowania. Częściowo działa, ale kod jest niedopracowany i niedokończony.

phiend.context
Implementacja request, response i sesji. Temat znany, ale kontrowersyjny, ponieważ trudno ocenić jest obiektywnie, jaki sposób implementacji jest lepszy. Gdyby php miał w tym zakresie jakiś standard... W każdym razie uważam, że jakaś implementacja jest potrzebna, aby można było później rozwijać framework. Kod jest, ale nie jestem do niego przywiązany i z racji skomplikowania tematu nigdy nie byłbym z niego chyba zadowolony.

phiend.registry
Implementacja wzorca Registry. Do rejestru wrzuca się tzw. pluginy, a rejestr zapewnia dostęp do nich, lazy loading oraz prostą implementację Intercepting Filter. Prosty, działający kawałek kodu wydzielony kiedyś z MVC.

phiend.mvc
Framework MVC. Wykorzystuje większość z tego, co opisałem powyżej. Główne cechy:
- cała nie-corowa funkcjonalność wypchnięta do pluginów wrzuconych do rejestru
- przed i po akcjach wykonywane są filtry, implementujące wzorzec Intercepting Filter w postaci dekoratorów
- każda akcja ma konfigurację przekazywaną do filtrów
- akcje można dowolnie dzielić na moduły, a moduły zagnieżdżać w sobie, przy czym konfiguracja jest dziedziczna
- fragmenty corowej funkcjonalnośći również wypchnięte są do pluginów, żeby można było łatwo podmienić (np. router, odczyt konfiguracji dla akcji)
- źródło konfiguracji dla akcji teoretycznie dowolne, chociaż pozostaje implementacja plugina
Całość działała i przechodziła testy, ale potem zacząłem ostro przerabiać/optymalizować kod i skończyłem mniej więcej w połowie.
Go to the top of the page
+Quote Post

Posty w temacie
- hawk   phiend2: reaktywacja   30.05.2005, 18:49:47
- - hwao   Podepne na jakis czas.   30.05.2005, 19:29:00
- - bela_666   No to się zgłaszam   30.05.2005, 20:01:23
- - Cudi   Również się zgłaszam   30.05.2005, 21:49:11
- - squid   a jakies wymagania czasowe? bo osobiscie nie wiem ...   30.05.2005, 21:51:29
- - hawk   Wymagania czasowe: ja mam czasu mało, niestety. To...   31.05.2005, 09:56:48
- - matid   Ja też się na to piszę.   2.06.2005, 17:45:41
- - hawk   Do wszystkich chętnych: http://barfoo.host.sk/phie...   5.06.2005, 20:49:23
- - dr_bonzo   Cosik te linki nie dzialaja. @hawk: moge je zahost...   5.06.2005, 21:04:00
- - Bora   Oczywiście jak już piałem z chęcią wspomoge ten pr...   5.06.2005, 21:15:16
- - squid   mnie tez nie dziala, znaczy pobiera 0 bajtow. Widz...   5.06.2005, 21:17:32
- - Cudi   Może jakieś spotkanie na IRC'u? Wszystko zależ...   6.06.2005, 16:47:57
- - sf   Mam male pytanie OT. Dlaczego zniknol podzial na a...   6.06.2005, 18:25:55
- - hawk   Co do linków: ooops, głupi serwer wycina mi pliki ...   6.06.2005, 19:26:45
- - squid   Cytat(NuLL @ 2005-06-06 20:34:13)Jeśli uda si...   6.06.2005, 19:35:10
- - Coyote   hm... sorki ze moze glupie pytanko ... ale co to w...   7.06.2005, 23:03:44
- - NuLL   @Coyote - Framework czyli swoisty szkielet do budo...   7.06.2005, 23:37:48
- - Coyote   a dzieki ale i tak nie bardzo czaje byl bym wdzie...   8.06.2005, 22:36:12
- - NoiseMc   Mam już źródła ale prawe mówiąc nie bardzo wiem ja...   8.06.2005, 22:44:35
- - squid   Cytat(NoiseMc @ 2005-06-08 23:44:35)Mam już ź...   9.06.2005, 09:04:01
- - hawk   Dopominacie się podziału prac, więc należy się wam...   12.06.2005, 22:05:12
- - NuLL   Lekki OT. A czy nie lepiej jest napisać plug-in pr...   12.06.2005, 22:57:33
- - hawk   Hmm... napisać się na pewno da. Myślisz, żeby wywa...   13.06.2005, 08:26:21
- - kubatron   hawk: mam takie pytanie, czy nie lepiej byłoby pog...   14.06.2005, 11:34:59
- - Cudi   Jeśli chodzi o serwer z php 5 to na dotgeek.org je...   14.06.2005, 15:35:15
- - squid   Cytat(Cudi @ 2005-06-14 16:35:15)Jeśli chodzi...   14.06.2005, 20:58:32
- - bela_666   @squid, tylko czy na sf.net jest php5   14.06.2005, 21:11:34
- - dr_bonzo   Ale do przechowywania zip'ow nie potrzeba chyb...   14.06.2005, 21:40:21
- - Cudi   Na sf.net (jeszcze) nie ma php 5 (i nie wiadomo ki...   15.06.2005, 20:24:47
- - hawk   Hmm, mamy na razie serię postów o hostingu PHP5, k...   20.06.2005, 11:47:18
- - Cudi   W tym tygodniu jestem bardzo zajęty i będzie ciężk...   20.06.2005, 17:23:38
- - squid   Osobiscie dreczy mnie sesja egzaminacyjna wiec dop...   20.06.2005, 19:01:19
- - Diablos   A co to jest ten phiend i do czgo sluzy ?   22.06.2005, 23:07:32
- - kubatron   http://www.google.pl/search?hs=AK2&hl=pl&c...btnG=...   23.06.2005, 10:11:05
- - aleksander   ja mam kilka pytan dot. phienda2: 1. Czy HttpCont...   20.07.2005, 11:56:10
- - hawk   Mam wrażenie , że reaktywacja zakończyła się total...   20.07.2005, 12:52:56
- - aleksander   ok więc moja pierwsza uwaga co do phienda2: mianow...   20.07.2005, 14:38:07
- - matid   A IMO brakuje temu wszystkiemu trochę organizacji....   20.07.2005, 15:07:17
- - aleksander   hawk napisał już co trzeba zrobic, zrodła są to na...   20.07.2005, 15:25:29
- - squid   Cytat(aleksander @ 2005-07-20 16:25:29)hawk n...   20.07.2005, 15:39:49
- - chmolu   Hawk: Phiend to naprawdę świetny kawałek kodu, dob...   20.07.2005, 16:30:38
- - matid   A co do innych zastrzeżeń: phiend.context Przy tw...   20.07.2005, 18:10:12
- - squid   wg mnie nie jest tak zle Oczywiscie ze nie wszys...   20.07.2005, 18:11:58
- - hawk   Uff! Ale przynajmniej coś się ruszyło w temaci...   21.07.2005, 14:05:42
- - aleksander   Cytat(hawk)Intercepting Filter (w postaci dekorato...   26.07.2005, 16:40:50
- - Neotion   moge się dołączyć jako dokumentator i torche moge ...   5.08.2005, 16:02:24
- - matid   Cytat(aleksander @ 2005-07-26 17:40:50)UPDATE...   5.08.2005, 16:30:39
- - aleksander   Cytat(matid @ 2005-08-05 17:30:39)Cytat(aleks...   5.08.2005, 16:34:29
- - matid   Cytat(aleksander @ 2005-08-05 17:34:29)yyyyy ...   5.08.2005, 18:27:49
- - aleksander   ja pomyslalem o czym takim: [PHP] pobierz, plainte...   5.08.2005, 18:31:10
- - squid   [PHP] pobierz, plaintext <?phpclass XmlConfigur...   8.08.2005, 16:43:29
- - hawk   Błąd, jak najbardziej błąd. A było to tak: dawno, ...   8.08.2005, 21:17:57
- - aleksander   czekamy hawk, czekamy... UPDATED: swoja droga, gd...   31.08.2005, 16:07:36
- - Strzałek   Mogę sie oczywiście mylić, ale przecież można zrob...   11.09.2005, 07:19:19
- - bela_666   blad w HandleFactory argument to $mClass, a ...   2.10.2005, 22:19:23
- - hwao   Cytat(bela_666 @ 2005-10-02 23:19:23)hawk po ...   3.10.2005, 06:12:35
- - aleksander   jest[PHP] pobierz, plaintext <?phpclass SimpleO...   29.10.2005, 15:12:18
- - anas   Hej. Można gdzieś przejrzeć kod phiend'a v2? ...   8.12.2005, 23:49:13
- - aleksander   prom Cie bardzo:) www.alek.ltd.pl/phiend2.zip   9.12.2005, 22:31:19
- - hawk   Jak zapewne zauważyliście, długo mnie tutaj nie by...   14.12.2005, 16:48:08
- - chfast   Na CVS są chyba jedynie pliki sprzed pół roku? Moż...   14.12.2005, 18:12:57
- - aleksander   proponowałbym przeniesienie kodu pod patronat php....   14.12.2005, 20:16:04
- - chfast   Cytat(aleksander @ 2005-12-14 20:16:04)propon...   14.12.2005, 20:36:01
- - aleksander   chodzi mi o to żeby np hawk przekazał projekt jedn...   14.12.2005, 22:32:46
- - ..:: pingu ::..   ja sie zapoznaje z tym projektem: jedno mi jest ...   7.01.2006, 14:17:30
- - bela_666   pingu, popatrz na interfejs IHttpRequest   7.01.2006, 14:50:38
- - ..:: pingu ::..   hehe, no patrz nie sadzilem ze tak mozna Mi sie ...   7.01.2006, 15:00:25
- - Strzałek   Stuk, puk? Czy projekt jeszcze żyje?   11.03.2006, 20:41:51
- - HaRy   chyba nie, a szkoda...   31.03.2006, 07:40:38


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 06:58