Technologie i narzędzia: język PHP 5, Java, JavaScript, Python, system Zend Framework, Django, biblioteka jQuery, Smarty, platforma Eclipse, MySQL, SVN, CVS, UML, Firefox.
WebProgramming - wszystko o serwisach internetowych
O serwisach internetowych.
[php|zend] Nowa biblioteka dla plików CSV (wersja 0.96)
Przyszedł czas na dojrzalszą wersję znanej już Wam biblioteki obsługującej pliki CSV (Fasic_Csv). Dojrzewając pozbyła się kilku błędów i niedoskonałości oraz uzyskała nowe ciekawe funkcjonalności (przyznam się że trochę jej w tym pomogłem).
Przykład użycia biblioteki Fasic CSV (wraz z nowymi funkcjonalnościami):
-
// Pobierz plik CSV
-
// nazwa pliku, załaduj cały plik, rozpoznaj automatycznie separator
-
$file = new Fasic_Csv(‘1.csv’, true, true);
-
// Zmień kodowanie, plik jest w kodowaniu UTF-8 natomiast my chcemy ISO
-
$file->setEncoding(‘UTF-8′, ‘ISO-8859-2′);
-
// Ustaw mapowanie dla obiektów
-
// nazwa_pola => ['numer_kolumny:typ_danych' | 'funkcja anonimowa']
-
‘price’ => ‘2:round2′,
-
));
-
// Pobierz 3 linie (nie zwiększając wskaźnika), linie liczone są od 0
-
$line = $file->line(2);
-
// Stwórz obiekt na podstawie wcześniej zdefiniowanego mapowania
-
$obj = $line->asObject();
-
// Dla linii: "Nazwa Produktu;nieuzywana kolumna;13.008"
-
// Wyświetli: "stdClass Object ([price] => 13.01 [name] => ‘nazwa produktu’)"
Programista Zend Framework - poziomy wtajemniczenia.
System Zend Framework stał się ostatnimi czasy bardzo popularny, w związku z czym jego znajomość jest bardzo mile widziana wśród pracodawców (czasami wręcz wymagana)… zastanawia mnie jednak co się kryje pod pojęciem “umiejętność ZF”.
Osoby, które chociaż trochę liznęły systemu Zend Framework wiedzą, iż serwisy oparte na ZF mogą być stworzone na 1001 sposobów (co w tym przypadku jest dużym plusem), przy czym każdy z nich będzie inny.. jedynie co może być stałe to zbiór podstawowych klas, takich jak Zend_Controller_Front, Zend_Controller_Action, itp…
[php|zend] Biblioteka obsługi plików CSV.
Już ładne kilkanaście miesięcy temu pracowałem nad projektem, w którym ważną częścią był import plików CSV (zapis z plików Excel). Przyznaje się bez bicia, iż wówczas zrobiłem to dość “nieładnie” - pomieszałem logikę importu z samym parsowaniem pliku i walidacją. Postanowiłem, więc że napiszę taki parser jeszcze raz - tym razem wg zasad naszego rzemiosła (standardowo bazuję na języku PHP i systemie Zend Framework).
[php|zend] Prosta klasa do konwertowania/sprawdzania typu.
Na potrzeby biblioteki obsługi plików CSV w Zend Framework (i ogólnie w języku PHP) stworzyłem prostą klasę, która miała służyć do konwertowania i sprawdzania typu napisu (ang string). Z racji, że implementuje ona odrębną funkcjonalność postanowiłem przedstawić ją osobno, zanim przejdę do omawiania wspomnianej biblioteki Fasic_Csv.
[php|zend] Przykłady dla biblioteki Fasic_Mail + nowa wersja biblioteki.
Dwa miesiące temu przedstawiłem system szablonów e-maili oraz najprostszy przykład jego użycia. Tym razem chciałbym podać bardziej zaawansowane przykłady (niektóre z nich były już wspomniane) wraz z kodem źródłowym, w tym: obsługa wielu managerów, wielojęzyczność, treść e-maili w formacie HTML i obsługa załączników.
[php|zend] Szablony emaili.
Biblioteka wysyłania e-maili w systemie Zend Framework jest bardzo fajnie zaprojektowana i zaimplementowana (patrz Zend_Mail). Niestety brakowało mi w niej obsługi szablonów, które spełniałyby następujące kryteria:
- Treść e-maila jest poza kodem PHP (patrz też pkt 3)
- Sparametryzowanie e-maili, czyli możliwość wysyłania tych samych e-maili różniących się tylko niektórymi wartościami (np e-mail aktywacyjny może różnić się tylko adresem aktywacyjnym)
- Wybór między źródłem treści szablonów (na przykład pliki xml, baza danych)
- Możliwość ustawiania domyślnych wartości dla pól takich jak: temat, adresat, załączniki.
Tak bardzo mi tego brakowało, iż postanowiłem tą ideę przelać na kod.. oto wynik.
[php] Prosta obsługa stronicowania - część 1.
W artykule “[sql] Trik w MySQL” przedstawiłem sposób na obsługę stronicowania w SQL. Teraz chciałbym przedstawić pozostałe części aplikacji - czyli Model, Controller i View - które z tego korzystają. W tej części opisze sam model, w części drugiej skupie się na kontrolerze i widoku.
[php|zend] Sprytne tłumaczenie adresów url.
Przyglądając się wielojęzycznym serwisom zauważyłem, iż żaden z nich nie tłumaczy adresów url (oczywiście treść samej strony jest ładnie przetłumaczona). Innymi słowy niezależnie od wyboru języka adresy stron są takie same - na przykład dostęp do wiadomości kryje się pod adresem /messages/show/1/, a przecież mogłoby to wyglądać tak /wiadomosci/wyswietl/1/ - czyż nie bardziej czytelnie (szczególnie dla osób nie znających języka angielskiego).
Zamiast rozmyślać wziąłem się za implementacje - tak też narodziła się wtyczka do Zend Framework o nazwie Fancyurl.
[php] Wzorzec MVC
O korzyściach wykorzystywania wzorca MVC w aplikacjach internetowych (i nie tylko) nie muszę mówić - to nie podlega dyskusji. Jego definicja nie określa jednak dokładnie jak należy go zaimplementować, w związku z czym możliwości realizacji tego wzorca są duże - nawet w miejscach, które wydawałoby się bez znaczenia. Zapraszam do krótkiego omówienia tej kwestii.
[zend] Bardziej funkcjonalne autoload.
Każdy programista PHP 5 zna i lubi magiczną funkcję __autoload(). Z jej dobroci korzysta oczywiście system Zend Framework, który według mnie bardzo ciekawie rozwiązał problem ładowania plików/klas PHP. Dla niewtajemniczonych napisze tylko, iż w/w system określa ścieżkę na podstawie nazwy klasy według wzoru: klasa Zend_Db_Select jest przekształcana na ścieżkę /Zend/Db/Select.php - naszym zadaniem jest tylko ustawić odpowiednio ścieżki przeszukiwań (include_path).
Nie o tym jednak chciałem pisać. Moim celem na dzisiejszy wieczór jest przedstawienie rozszerzenia klasy Zend_Loader umożliwiającą “dorzucanie” nowych bibliotek, które nie są dostosowane do systemu Zend Framework (czyli nazwy klas nie są w odpowiednim formacie), a chciałyby skorzystać z dobroci funkcji __autoload().