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’)"
[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.
[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().
[php|javascript] Walidacja formularzy po stronie klienta dla Fasic_Form.
W poprzednich artykułach opisałem prostą (ale użyteczną) bibliotekę do obsługi formularzy, teraz przedstawię rozwiązanie, które umożliwia walidacje po stronie klienta (za pomocą JavaScript) - reguły walidacji generowane są na podstawie obiektu formularza (czyli Fasic_Form).
Walidacja po stronie klienta oprócz wcześniej wspomnianej biblioteki Fasic_Form została również oparta na komponentach Zend Framework oraz jQuery (jednej z najlepszych bibliotek JavaScriptowych), więc znajomość tych pozycji na pewno się przyda.
[php] Integracja biblioteki Fasic_Form z Zend Framework.
W poprzednim artykule omówiłem jedną z wizji obsługi formularzy - przedstawiłem ją na przykładzie prostego skryptu PHP. Teraz czas na odważniejszy krok - integracja biblioteki z systemem Zend Framework. Tym razem naszym celem jest ładna i prosta integracja Fasic_Form z kontrolerem akcji (klasą typu Controller) .
[php] Obsługa fomularzy w Zend Framework.
Chciałbym Wam przedstawić moją propozycję obsługi formularzy w systemie Zend Framework (i nie tylko), istnieje kilka rozwiązań tego powszechnego problemu (na przykład w dziale proposal), ale niestety nie są wg mnie godne uwagi.
Wg mnie bibliotekę do obsługi formularzy powinno cechować:
- wsparcie dla walidatorów oraz filtrów
- możliwość korzystania z biblioteki poza Zend Framework
- elastyczność rozwiązania oraz prostota
Nie powinna natomiast zawierać:
- generowanie kodu HTML
- elementów dotyczących prezentacji pól formularza oraz jego innych elementów
Kliknij więcej, aby zobaczyć wynik - bibliotekę Fasic_Form.