Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

4 Stron V  < 1 2 3 4 >  
Reply to this topicStart new topic
> phiend2: reaktywacja
chmolu
post 20.07.2005, 16:30:38
Post #41





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 8.10.2004

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


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.
Go to the top of the page
+Quote Post
matid
post 20.07.2005, 18:10:12
Post #42





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

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


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. ?>
Go to the top of the page
+Quote Post
squid
post 20.07.2005, 18:11:58
Post #43





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 3.07.2003
Skąd: Szczecin->niebuszewo->*(next to window)

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


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.


--------------------
Jeśli życie to kara to nieźle nabroiłem ;-)
Go to the top of the page
+Quote Post
hawk
post 21.07.2005, 14:05:42
Post #44





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

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


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.
Go to the top of the page
+Quote Post
aleksander
post 26.07.2005, 16:40:50
Post #45





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


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

Ten post edytował aleksander 29.07.2005, 02:06:50
Go to the top of the page
+Quote Post
Neotion
post 5.08.2005, 16:02:24
Post #46





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 13.09.2004

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


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


--------------------
current: nexcite cms (0.2.5) running on top of netsource framework (0.5.3)

workbench: nsapi | php 5.1.2 | mysql 5.0.18 | phpmyadmin 2.9 rc1 | zend studio 5.2.0 | apache/2.2.0 (linux/suse)
Go to the top of the page
+Quote Post
matid
post 5.08.2005, 16:30:39
Post #47





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

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


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?
Go to the top of the page
+Quote Post
aleksander
post 5.08.2005, 16:34:29
Post #48





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


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
Go to the top of the page
+Quote Post
matid
post 5.08.2005, 18:27:49
Post #49





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

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


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ć.

Ten post edytował matid 5.08.2005, 18:41:53
Go to the top of the page
+Quote Post
aleksander
post 5.08.2005, 18:31:10
Post #50





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


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:)
Go to the top of the page
+Quote Post
squid
post 8.08.2005, 16:43:29
Post #51





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 3.07.2003
Skąd: Szczecin->niebuszewo->*(next to window)

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


  1. <?php
  2. class XmlConfiguratorCompiler
  3.  
  4. public function compiler($sPhpFile, $sXmlFile, $useSchema) {
  5. $dom = new DomDocument;
  6. $dom->load($sXmlName);
  7. if ($useSchema) {
  8. $dom->schemaValidate(PHIEND_MVC_DIR . '/schemas/XmlConfigurator.xsd');
  9. }
  10. $rootElement = $dom->documentElement;
  11.  
  12. // PLUGINS
  13. $pluginsRoot = $this->findElement($rootElement, 1, 'plugins');
  14. foreach ($pluginsRoot->childNodes as $pluginNode) {
  15. if ($pluginNode->nodeType != 1) continue;
  16. }
  17.  
  18. }
  19. ?>


wszystko cool tylko mamy linijke:
  1. <?php
  2. $dom->load($sXmlName);
  3. ?>

a w parametrach wejsciowych $sXmlFile i brak $sXmlName.
Czy to blad czy czegos nie zauwazylem??


--------------------
Jeśli życie to kara to nieźle nabroiłem ;-)
Go to the top of the page
+Quote Post
hawk
post 8.08.2005, 21:17:57
Post #52





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

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


Błąd, jak najbardziej błąd. A było to tak: dawno, dawno temu wszystko działało, hmm, standardowo. Tzn. mamy plik XML z configiem, framework sprawdza datę i jak trzeba, to generuje z tego php. Potem framework zaczął ewoluować, a kompilator XML za nim nie nadążał. Poza tym cała konfiguracja sprowadzała się do kilku pluginów i jednej metody addPlugin(). Więc kompilacja XML wyleciała na zewnątrz frameworka - pluginy można tworzyć i dodawać ręcznie, ale można mieć taki "Configurator", który doda te pluginy na podstawie pliku XML. Teoretycznie można mieć inny konfigurator, który będzie to wczytywał z pliku .ini, z nowego formatu Mojavi lub brał z księżyca.
A morał bajki jest taki, że XmlConfigurator generalnie nie działa, ponieważ nie jest potrzebny do działania frameworku.

PS. Dawno tu nie zaglądałem. Odezwę się, jak zdam wreszcie ten egzamin MCP biggrin.gif.
Go to the top of the page
+Quote Post
aleksander
post 31.08.2005, 16:07:36
Post #53





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


czekamy hawk, czekamy...

UPDATED: swoja droga, gdy mamy HttpContext to jest problem przy uzywaniu Smarty, bo ono wywala wsio na ekran a my chcemy do Response->addContent(). nie da sie tego rozwiazac inaczej niz
  1. <?php
  2. $smarty->display();
  3. $res->addContent( ob_get_clean() );
  4. ?>
?

Ten post edytował aleksander 3.09.2005, 22:46:03
Go to the top of the page
+Quote Post
Strzałek
post 11.09.2005, 07:19:19
Post #54





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


Mogę sie oczywiście mylić, ale przecież można zrobić tak:

  1. <?php
  2. $res->addContent($smarty -> fetch('some_file.tpl');
  3. ?>


http://smarty.incutio.com/?page=SmartyFreq...tions#project-5

Ten post edytował Strzałek 11.09.2005, 07:37:47


--------------------
Go to the top of the page
+Quote Post
bela
post 2.10.2005, 22:19:23
Post #55


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


blad w HandleFactory

argument to $mClass, a w tresci metody mamy odwolania do $sClass

[edit]
hawk po co w configu przy pluginach dalej sciezke skoro to tylko autoloader powinien wiedzieć gdzie co jest? i w ogóle w kodzie widzę trochę requerow ;]


--------------------
Go to the top of the page
+Quote Post
hwao
post 3.10.2005, 06:12:35
Post #56


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Cytat(bela_666 @ 2005-10-02 23:19:23)
hawk po co w configu przy pluginach dalej sciezke skoro to tylko autoloader powinien wiedzieć gdzie co jest? i w ogóle w kodzie widzę trochę requerow ;]

Hmm, mi sie po i wydaje ze include bylo by lepsze (skrypt "umiera" jak sie nie uda pliku zalaczyc - zakladam ze kazda zalancza klasa jest niezbeda do dzialania).

Co do sciezek to mysle ze sa one one potrzebne, czasme moze sie zdarzyc ze klasy nazywaja sie tak samo - wtedy autoloader nic nie poradzi.


Pozatym jak mamy podana jasno sciezke to autoloader nie musi sie odpalac, co pozwala zaoszczedzic czasu (przy duzej ilosci klas w mapie, napewno jest to wazne).
Go to the top of the page
+Quote Post
aleksander
post 29.10.2005, 15:12:18
Post #57





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


jest
  1. <?php
  2. class SimpleOutputBuffer implements IOutputBuffer {
  3. protected $aHeaders = array();
  4. protected $sContent = '';
  5.  
  6. public function addHeader($sName, $sValue) {
  7. $aHeaders[$sName] = $sValue;
  8. }
  9. ?>
powinno byc
  1. <?php
  2. class SimpleOutputBuffer implements IOutputBuffer {
  3. protected $aHeaders = array();
  4. protected $sContent = '';
  5.  
  6. public function addHeader($sName, $sValue) {
  7. $this->aHeaders[$sName] = $sValue;
  8. }
  9. ?>
pozdrawiam

UPDATE:

w klasie BasicPhpSession znalazlem jeden blad ale nie wiem czemu on wystepuje i czy czasem tylko u mnie wiec prosze to sprawdzic.

Metoda readSession() gdy jest unset($_SESSION); po refreshu ta zmienna jest pusta gdy tego nie ma, wszystko ok.
Go to the top of the page
+Quote Post
anas
post 8.12.2005, 23:49:13
Post #58





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 22.09.2002
Skąd: Gorzów Wlkp

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


Hej.

Można gdzieś przejrzeć kod phiend'a v2? Bo udostępnione linki nie działają.
To co udało mi się prześledzić w wątku wydaje się interesujące, z tym że temat ucichł.

pozdrawiam

anas
Go to the top of the page
+Quote Post
aleksander
post 9.12.2005, 22:31:19
Post #59





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


prom Cie bardzo:)
www.alek.ltd.pl/phiend2.zip
Go to the top of the page
+Quote Post
hawk
post 14.12.2005, 16:48:08
Post #60





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

4 Stron V  < 1 2 3 4 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.05.2024 - 21:49