Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM    Subskrybuj kanał ATOM dla tagu framework Kanał ATOM (tag: framework)

Autor wpisu: Athlan, dodany: 21.01.2007 21:54, tagi: framework

Ostatnio nurtował mnie problem, jak mają być ułożone pliki we frameworku, tak aby można było je bardzo łatwo ładować poprzez __autoload(). Rozmyślałem nad sposobem zastosowanym w Zend Framework oraz moim - rzucić pliki niezależnie od ich nazw. Dwa linki, gdzie publikowałem swe przemyślenia, wyciągłaem wnioski, porównywałem wyniki:

Ostatecznie wygrał mój sposób. Kładę pliki tam, gdzie chcę, niezależnie od nazwy klasy. Zend Framework ma sztywno ustalone ścieżki klas, w zlaeżności od jej nazwy. Ci co mnie znają wiedzą, że nie lubię się ograniczać :)

No tak… wygrał sposób dotychczas stosowany w moim frameworku Vframe, ale jak rozwiązałem problem skanowania folderu Core za każdym razem? Hak bardzo prosty: tworzenie tzw. mapy frameworka. Czym jest owa mapa? Zwykłą zaserializowaną tablicą, która tworzona jest po pierwszym skanie zawartości frameworka. Po co tworzyć ją od nowa za każdym odświeżeniem strony, skoro można ją raz zapisać (przykład wypluten przez var_dump() mapy).

Na jakiej zasadzie to działa? Mapa zapisywana jest w pliku Vframe.map, to, co pokazałem w powyższym linku to jeden z elemetów mapy (wartość indeksu tablicy “files”). Są jeszcze dwa indexy: “date” oraz “version”. Jeżeli wersja frameworka zmieni się, lub minie dzień od wygenerowania mapy, wówczas jest ona tworzona raz jeszcze. Mapa frameworka trzymana jest bezpośrednio w jego folderze. Dlaczego? Ponieważ zawiera mapę samego siebie.

Podsumowywując:

  • zaoszczędziłem czas działania aplikacji
  • nie zmieniłem nazewnictwa klas
  • nie jestem uzależniony od nadawania nazw klas w stosunku do ich położenia
  • mapa aplikcaji jest na bieżąco aktualizowana, lub przy zmianie wersji ulega automatycznej zmianie

Myślę, że publikując wyniki “badań” rozwieje wiele wątpliwości “przeciwnikow” układu plików w Zend Framework.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Athlan, dodany: 20.01.2007 09:08, tagi: php, framework

Wprawdzie mój framewoek ma jak widać finalny układ plików, ale zaczyna mnie gryźć… przed startupem cały core jest skanowany, dzięki czemu mogę rzucać sobie klasy w katalogu core gdzie popadnie, moge stworzyć 5 folderów i potem dać klase. Mnie się on coraz to mniej podoba. Ostatnio przeglądałem Zend Framework dziesiąty raz, postanowiłem zebrać w kupę plusy i minusy mojego sposobu oraz sposobu wykorzystamyn w Zendzie.

Układ plików w Vframe:

(+) skanowanie core zapewnia porządek i elastyczność, mogę rzucić klasę gdzie popadnie (+) stosowanie nazw klas jest niezależne od ich położenia (-) czas działania nieznacznie się wydłuża

Układ plików w Zend Framework:

(+) nie trzeba skoanować core (-) nazwy klas są ściśle uzależnione od ich położenia (-) robi się mase folderów, w ktorych jest zazwyczaj po jednym pliku

Mimo tego, że moim zdaniem Zend ma więcej minusów przeze mnie wykrytych, jestem mu jakoś bardzie przychylny. Nie podoba mi się nazwa typu Zend_Folder_Klasa. Nie mam symapatii do „dolnych podkreśników”. Wymyśliłem sobie, że w moim fw mogę zastosować inny sposób oddzielania ukladu pliku w nazwie klasy. Odpowiednikiem Zend_Folder_Klasa byłoby wówczas VfolderKlasa lub VfolderPodfolderKlasa, lub po prostu Vklasa. Aby nie robić bałaganu, wszystkie wyjątli miałyby nazwę np. VexceptionCache, dzięki czemu nie tworze nowego folderu Cache, w którym jest tylko wyjątek. Tak to mam jeden folder z wyjątkami. To samo tyczy się interfejsów. Nazwa nie byłaby oddzielana podkreślnikiem, tylko kolejną wielką literą.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: WojciechNaruniec, dodany: 20.01.2007 01:22, tagi: php, framework

Pojawiła się nowa wersja Zend Framework o numerze 0.7.0. W tym wydaniu głównymi zmianami jest wprowadzenie klas do obsługi lokalizacji oraz internacjonalizacji. Została też mocno rozwinięta polska dokumentacja frameworka. Główne zmiany to: Komponent do zarządzania lokalizacjami (L10N) Komponent do obsługi daty i czasu z uwzględnieniem lokalizacji Komponent do obsługi tłumaczeń (I18N) (w inkubatorze) Komponent do obsługi jednostek i ich konwersji Nowa [...]

Autor wpisu: Athlan, dodany: 03.01.2007 18:07, tagi: framework, php

Dziś chciałbym zaprezentować framework, ktory zbudowałem i opieram na nim swoje aplikacje. Jest stale rozwijany, nie ukryję że może spotkać się z gorzkimi słowami krytyki, ale też słodkimi pochwały. Przygotowałem prawie pełną dokumentację, która umieszczona jest na stonie domowej frameworka:

http://framework.vgroup.pl

Wraz z działem download oraz manualem na stronie na bieżąco będę publikował przykłady użycia jakiś komponentów, na dzisiejszy czas są to: upload pliku, caching działania zapytania do bazy danych oraz zmniejszenie pliku graficznego. Najlepszym przykładem będzie aplikacja napisana na frameworku, dlatego zmieściłem kod swojego portfolio http://www.vgroup.pl. Repozytorium plików możecie znaleźć pod adresem http://source.vgroup.pl

Download frameworka oraz przykładowego szkieletu katalogów aplikacji: http://framework.vgroup.pl/download.html

Instalacja: http://framework.vgroup.pl/read-instalacja.html

Repozytorium plików frameworka wraz z podstawowymi bibliotekami (mojego autorstwa): http://framework.vgroup.pl/repository.html

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Athlan, dodany: 27.12.2006 15:20, tagi: framework, php

Kiedyś napisałem klasę ModRewriteString, którą opublikowałem na łamach forum.php.pl, która ma sprowadzić polskie, niemieckie i czeskie znaki do zwykłych liter, na przykład ą do a, ż i ź do z, itd. Na potrzeby jednego z moich projektów (portalu) została ona użyta na kodowaniu UTF-8. Okazało się, że klasa akceptuje tylko kodowania WINDOWS-1250 i ISO 8859-2. Ze znaków zakodowanych przez UTF robił się znak nieodczytywalny, potocznie zwany "krzak". Problem został oznaczony jako bug najwyższego stopnia, klasa trafiła natychmiastowo do analizy. Z pomocą przyszła dokumentacja na temat Multibyte String Functions (rozdział LXXXV) dostępna w podstawowych rozdziałach oficjalnej dokumentacji języka PHP: http://pl2.php.net/manual/pl/ref.mbstring.php Ponadto cały dokument z klasą był zakodowany w formie ASCII, co jest niedorzeczne w tego typu działaniach. Plik zawierający klasę został ujęty w formie UTF-8 - uniwersalnego kodowania, które można bez problemu odkowodać.

Zmiany objęły tylko metodę Rewrite(), przyjmuje ona dodatkowy, nieobowiązkowy drugi parametr, który ustawia tryb pracy klasy na podane kodowanie. Gdy parametru nie podamy, lub otrzyma wartość null, wówczas kodowanie zostanie ustawione automatycznię poprzez analizę podanego ciągu znaków przez funkcję mb_detect_encoding(). Kodowanie jest o tyle ważnym elementem, gdyż zostaje podane wewnątrz klasy w funkcjach mb_strtolower() oraz mb_strlen(), odpowiedzialnych za poprawne wykonanie zadania metody.

Dodana została linijka odpowiedzialna za przerwania działania klasy juz na samym początku. Sprawdzane zostaje załadowane rozszerzenie "mbstring", odpowiedzalne za Multibyte String Functions. Gdy rozszerzenie nie zostanie załadowane, konstruktor wyrzuca wyjątek pierwotnej klasy Exception:

PLAIN TEXT PHP:
  1. if(!extension_loaded("mbstring"))
  2. throw new Exception('MbString has not been enabled yet!');

Wersja klasy została oficjalnie uznana za stabilną, nadany jest jej numerek 0.0.5.

Zastosowanie klasy:

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Athlan, dodany: 25.12.2006 17:31, tagi: php, framework

Dyzo rozmyślam o kanałach informacyjnych. Świetna sprawa, jeżeli wiem, że na mojej ulubionej stronie pojawiła sie nowa notka lub wpis, mogę zostawić sobie go do przeczytania na później wiedząc o tym, że jest. Mowię tutaj o kanałach RSS, XML i Atom. Specjalnie z tej okazji założyłem sobie na bloga OperaWidget. Teraz mój kanał RSS importowany jest do widżetu. Uruchomienie jest napradę proste. Teraz w pasku adresu macie nowy, niebieski przycisk, po jego uaktywnieniu na Operze możecie korzystać z widżeta mojego RSS.

Odnośnie samych kanałów RSS, w wigilijną noc zacząłem kodzić, gdyż będą stanowić część mojego frameworka. Stworzyłem trzy klasy, odpowiedzalne kolejno za kanały: RSS, Atom i XML. Powstała nowa notka na forum php.pl:

http://forum.php.pl/klasy-php5-Generator-kanalow-informacyjnych-Feeds-t59071.html

Może dział nie jest trafny co do mojego celu zamieszczenia tych klas, ale po części chodzi mi o ocenę. Ostatnio dużo myślałem nad obsługą kanałów informacyjnych w moim fameworku (ang. Feeds). Sprawa wygląda bardzo kontrowersyjnie, bowiem RSS nie cieszy się już taką dobrą opinią, jednak większość użytkowników używa właśnie tej wersji kanałów informacyjnych. Według ekspertów jego miejsce ma zastąpić kanał Atom, który stał się trendem i już rok temu liczba jego użytkowników znacznie wzrosła. Pomyślałem również o udostępnianiu naszych informacji w formie czystego arkusza XML.

Vfeed 0.1 - download

Powstały kolejne klasy:

Feed.Class.php – klasa abstrakcyjna, a zarazem rodzic wszystkich innych klas kanałów informacyjnych. FeedRSS.Class.php – kanał informacyjny w formie RSS FeedAtom.Class.php – kanał informacyjny w formie Atom FeedXML.Class.php – czysty arkusz Tagów XML, nie przedstawiany jako kanał, ale jako dostępne źródło informacji, zaliczyłem go jako kanał, gdyż można z niego pobierać informacje poprzez różne dostępne metody takie jak SimpleXML, czy SAX.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: WojciechNaruniec, dodany: 23.12.2006 23:13, tagi: php, framework

Jeśli chcemy aby aplikacja korzystająca z podstawowych bibliotek Zend Framework w wersji 0.2.0 działała po aktualizacji frameworka do wersji 0.6.0 musimy wprowadzić kilka zmian. Wprawdzie w dokumentacji został opisany sposób migracji, ale tylko dla komponentów kontrolera. Poniżej kilka porad. Zmiana sposobu ustawienia ścieżki bazowej Dodanie drugiego parametru w wywołaniach konstruktora Zend_Filter_Input Zamiana konstruktorów __construct() w klasach kontrolerów na [...]
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.