php developer & web designer
Dokładnie 15 lat temu, 8 czerwca 1995, Rasmus Lerdorf na grupie dyskusyjnej comp.infosystems.www.authoring.cgi ogłosił pierwszą wersję Personal Home Page Tools (PHP Tools), protoplasty dzisiejszego PHP.
Oficjalne ogłoszenie dostępne jest do dziś na grupie, pod tym linkiem.
Tomasz “Zyx” JÄ™drzejewski na swoim blogu opisaÅ‚ bardzo dokÅ‚adnie i rzeczowo temat Domknięć w PHP5 zwanych też anonimowymi funkcjami.
W tekście znajdziemy mnóstwo przykładów oraz naprawdę dogłębnie wyjaśnione zagadnienie. Polecam ten wpis wszystkim osobom szukającym informacji o nowościach dostępnych począwszy od PHP 5.3.
Nowy projekt (a wÅ‚aÅ›ciwie dwa) majÄ… zostać oparte o Zend Framework. Niby wszystko piÄ™knie – no bo mamy “zajefajny” framework, który zrobi niemal wszystko (brakuje tylko faktu, że kawy nie parzy
).
Chcąc mieć projekty pięknie od początku wykonane z użyciem Zend_Tool i Zend_Application generuje strukturę dokumentu. Przy czym, w ZF 1.8 zaleca się trzymanie wszystkich ustawień w konfiguracyjnym pliku INI (w celu odchudzenia klasy Boostrap).
WracajÄ…c do projektu – od razu zakÅ‚adam panel administracyjny – tworzÄ™ osobny moduÅ‚.
Moduł ten będzie obsługiwał kontrolę dostępu i autentyfikację opartą o bazę danych. Żeby nie powielać kodu dziesiątki razy chcę stworzyć plugin kontrolera, który sprawdzi czy a. user jest zalogowany; b. ma dostęp do zasobu. I tu zonk.
W dokumentacji jest napisane, że w pliku INI można podać listę pluginów:
plugins: array of front controller plugin class names. The resource will instantiate each class (with no constructor arguments) and then register the instance with the front controller.
W przykładzie wygląda to tak:
resources.frontController.plugins.foo = "My_Plugin_Foo" resources.frontController.plugins.bar = "My_Plugin_Bar"
Niby wszystko jasne, tworzÄ™ dwie klasy dziedziczÄ…ce po Zend_Controller_Plugin_Abstract… Teoretycznie powinienem mieć możliwość wywoÅ‚ania metody preDispatch(), która może sprawdzić czy użytkownik jest zalogowany i czy ma prawa do zasobu. JeÅ›li nie to, w zależnoÅ›ci od sprawdzenia, albo przekierować go na formularz logowania, albo wyÅ›wietlić stronÄ™ z informacjÄ… o braku dostÄ™pu.
Teoretycznie – bo ten kod nie dziaÅ‚a (błąd Å‚adowania klasy, mimo że jest ona w include_path)!
Co wiÄ™cej straciÅ‚em dziÅ› 2 godziny na znalezienie “obejÅ›cia”. ObejÅ›cie to nic innego jak stworzenie metody _initPlugins() w Bootstrap i po staremu dodanie pluginów do front kontrolera:
protected function _initPlugins()
{
$front = $this->bootstrap('frontController');
$front->registerPlugin(new My_Plugin_Foo());
}
Przy okazji przejrzałem dokładniej dokumentację ZF i takie oto wnioski przyszły mi do głowy:
Do kolejnego razu! (oby można byÅ‚o powiedzieć coÅ› in-plus…)
23 wrz 2009
Rozumiem, że rozwój najpopularniejszego frameworka dla php, wymusza aktualizacje co jakiś czas. Nie rozumiem jednak dlaczego one są robione tak często! Czy nie można core framworka udostępnić oddzielnie a całą resztę (mało ważne moduły) wydawać jako dodatek. W ten sposób dodanie nowych dwóch Zend_Services_XXX nie powodowałoby konieczności zmiany numeracji całego frameworka?
Inna sprawa, że wiecznie poprawiane są błędy z poprzednich wydań. Czy nie można wydać czegoś dobrze sprawdzonego? Byłoby mniej kłopotów, a tak co miesiąc trzeba aktualizować framework (i nanosić poprawki w kodzie aplikacji, jeśli zmiany nie są kompatybilne wstecznie). CakePHP jest dostępny na dzień dzisiejszy w wersji 1.2.5, Symphony (do wyboru branche) 1.0 i 1.2.
A Zend Framework?
Wydana wczoraj wersji 1.9.3 po kilkudziesięciu minutach była już przeszłością. Szybko udostępniono 1.9.3PL1.
Rozumiem, że znaleziono błąd krytyczny, ale gdzie byli beta-testerzy?!
Wszystko to powoduje, że coraz bardziej jestem rozczarowany produktem firmowanym jako “w peÅ‚ni przetestowany” (Fully Tested – Extend Safely and Easily).
31 lipca, wydano nową wersję Zend Framework, oznaczoną 1.9.0. Jest to kolejna wersja wydana w ostatnim kwartale. Tempo ogromne, o czym świadczy fakt, iż wersji 1.8 (wydanej w maju) poprawiono około 700 zgłoszonych błędów!
Lista nowości jest długa, poniżej ważniejsze z nich:
Framework można pobrać, jak zawsze, z oficjalnej strony (lista zmian).
24 czerwca wydano oficjalni kolejnÄ… wersjÄ™ platformy Eclipse. Wersja 3.5 nosi nazwÄ™ Galileo.
Wraz z wydaniem Galileo, ukazało się aż 33 nowych wersji projektów bazujących na Eclipse. Oczywiście jednym z nich jest PDT (PHP Development Tools), które zostało zaktualizowane do wersji 2.1.
Oto co nowego zyskamy instalujÄ…c PDT 2.1:
* wsparcie dla PHP 5.3 (swojÄ… drogÄ… – wydanego wczoraj)
** ustawienie projektu do obsługi najnowszej wersji PHP
** walidacja i kolorowanie kodu PHP 5.3 (w tym przestrzeni nazw)
** obsługa przestrzeni nazw w podpowiadaniu kodu (Code Assist)
* poprawiono wiele błędów z wersji 2.0.x
* przyśpieszono działanie (start, build projektu)
* usprawniono PHP Explorer (usability)
Z pierwszych wrażeÅ„ – widzÄ™, że błąd z obsÅ‚ugÄ… svn (czy to Subclipse, czy Subversive) nadal jest obecny. Ale to raczej sprawa maÅ‚o ważna, nie przeszkadzajÄ…ca w kodowaniu. Ciekawie prezentuje siÄ™ dostÄ™pny z Galileo i PDT 2.1 – Mylyn. Jest to plugin do zarzÄ…dzania taskami. Można przez odpowiednie connectory podpiąć siÄ™ do systemów Jira lub Trac. Bardzo fajnie dziaÅ‚a w połączeniu z klientem svn (Subversive lub Subclipse).
PDT 2.1 dziaÅ‚a zdecydowanie szybciej od poprzednika co jest najwiÄ™kszym plusem, bo do PHP 5.3 na razie nie planujÄ™ siÄ™ “zabierać”
19 lut 2009
Użycie komponentu Zend_Form_Element_Captcha do generowania obrazków z kodem nie jest takie proste jak przedstawiono w dokumentacji frameworka.
Okazuje się, że najpierw musimy stworzyć obiekt Zend_Captcha_Image, który następnie podajemy jako parametr konstruktora Zend_Form_Element_Captcha.
// tworzymy obiekt Zend_Captcha_Image
$captchaImage = new Zend_Captcha_Image('captchaImg');
$captchaImage->setFont('...') // pełna ścieżka do czcionki, jaka ma zostać użyta
->setImgDir('...') // pełna ścieżka do katalogu gdzie ma zostać wygenerowany obrazek
->setWordlen(5) // ilość znaków w kodzie captcha
->setWidth(100) // szerokość obrazka
->setHeight(60) // wysokość obrazka
->generate();
// tworzymy właściwy element formularza
$captcha = new Zend_Form_Element_Captcha('captcha', array(
'captcha' => $captchaImage));
$captcha->setLabel('Przepisz kod z obrazka widoczny poniżej:');
W roli wyjaÅ›nienia: Zend_Captcha_Image generuje obrazek (PNG – stÄ…d wymagana jest włączona obsÅ‚uga rozszerzenia GD w PHP) i zapisuje w katalogu podanym w metodzie setImgDir(). DomyÅ›lnie jest to katalog ./images/captcha. Zend_Form_Element_Captcha natomiast wstawia do formularza elementy input oraz img ze Å›cieżkÄ… do tegoż obrazka.
Dostępne są nowe buildy (wersje przeglądowe) PDT (IDE do programowania w PHP bazujące na platformie Eclipse).
Mamy do wyboru aktualizację PDT 2.0.1 oraz najnowszą wersję, właśnie przygotowywanego, PDT 2.1.0. Aktualizacja 2.0.1 pochodzi z 5. lutego, natomiast uaktualnienie 2.1.0 wydano 12. lutego.
Miłego użytkowania
Cóż, ciężko się przyznać, że dopiero kilka dni temu odkryłem możliwości drzemiące w PHP Search dostępnym w PDT 2.0.
PHP Search to dodatkowa wyszukiwarka dostÄ™pna w projektach PHPowych. Umożliwia ona wyszukanie definicji, odwoÅ‚aÅ„ lub dowolnego wystÄ…pienia ciÄ…gu znaków – nazwy metody/funkcji, typu lub zmiennej/wÅ‚aÅ›ciwoÅ›ci obiektu. Jest to naprawdÄ™ bardzo przydatne narzÄ™dzie.
Aby skorzystać wystarczy otworzyć szukanie (Ctrl+H) i wybrać ostatnią zakładkę (PHP Search) *(mając otwarty w edytorze plik php, zakładka ta otworzy się automatycznie).

Po wprowadzeniu szukanej frazy oraz opcji w wyniku otrzymujemy listę obiektów, które spełniają nasze kryteria:
Ciekawi mnie, czemu nie wykorzystano (w pewnym sensie gotowego) rozwiązania w widoku Call Hierarchy. Jest to jeden z widoków dostępnych w PDT 2.0, ale niestety nie działający (dostarcza go platforma Eclipse w pluginie WSDL, który jest wymagany do uruchomienia PDT w wersji 2.0).
Wydanie PDT (PHP Development Tools), środowiska IDE dla PHP napisanego na platformie Eclipse, planowane jest na 26 czerwca 2009. Niemniej od 6. stycznia można pobrać już pobrać (stabilne) wersje Milestone Release.
Aktualnie projekt jest w fazie M4 (planowane trzy kolejne M-ki, po nich ukazać ma się pięć wersji kandydujących (Release Candidate) a dopiero później oficjalna 2.1.0).
Dziś, 30 stycznia, udostępniono tzw. Integration Build, czyli kolejną wersję gotową do przetestowania.
Co nowego w PDT 2.1.0
Na razie brakuje szczegółów, wiadomo natomiast że będzie oferowane wsparcie dla PHP 5.3 (swoją drogą wczoraj ukazała się wersja 5.3.0 Beta 1).
Pierwsze wrażenia
Po pobieżnym sprawdzeniu 2.1.0 I200901300153 (wspomniany powyżej Integration Build) mogÄ™ powiedzieć, że PDT jest dużo szybsze niż aktualnie dostÄ™pna wersja 2.0.0. Ponadto możemy wybrać wersjÄ™ Interpretera PHP z jakiego bÄ™dziemy korzystać – do wyboru mamy trzy pozycje: PHP 4, PHP 5.1 & 5.2 oraz PHP 3.
Po Å›wiÄ…tecznej przerwie kilka newsów. Zaczynam od dÅ‚ugo oczekiwanej, nowej wersji, PDT. PDT (PHP Development Tools) to open-source’owy IDE do programowania w PHP (uÅ‚atwia pracÄ™ także z HTML, CSS, JavaScript). Wersja 2.0 ukazaÅ‚a siÄ™ dosÅ‚ownie przed chwilÄ… (zatem jest to prawdziwie hot-news). Bazuje ona na najnowszym Eclipse (wersja 3.4.1).
Nowości w wersji 2.0 (wyliczam z głowy):
Aby móc od razu pracować, powinniśmy ściągnąć paczkę All-in-one (ok. 105 MB). W tym wypadku pobierzemy Eclipse z PDT i wszystkimy zależnymi pluginami. Jeśli natomiast korzystaliśmy wcześniej z wersji beta lub RC możemy dokonać aktualizacji samego PDT (niecałe 10 MB).
Aktualizacja (05.01.2009)
Oficjalna lista zmian jest dostępna w release notes (ang).
Bardzo ciekawy artykuÅ‚ zamieÅ›ciÅ‚ wczoraj IBM – opisuje pięć nawyków dobrego programowania w PHP.
W tekście przeczytamy między innymi o roli nazewnictwa, dzieleniu kodu na jak najmniejsze części, dokumentowaniu (phpDoc), obsłudze błędów oraz o tym jak złym nawykiem jest kopiowanie-i-wklejanie z jednego miejsca do drugiego. W zamieszczonych przykładach skonfrontowano zachowania dobre i złe przyzwyczajenia.
Tekst (w jÄ™zyku angielskim) polecam wszystkim programistom PHP, zarówno poczÄ…tkujÄ…cym, jak i zaawansowanym – ci notorycznie nie dokumentujÄ… kodu
…od ostatniego wpisu na blogu. TrochÄ™ zabiegany byÅ‚em tu i tam. DziÅ› przygotowaÅ‚em porcjÄ™ lików do bardzo ciekawych artykułów / tematów.
Zacznijmy od Ubuntu – nowa wersja (8.10) ukaże siÄ™ już jutro. NajnowszÄ… wersjÄ™ bÄ™dzie można Å›ciÄ…gnąć z sieci, zakupić na dvd lub zamówić na cd (za darmo). Ja już zamówiÅ‚em, pozostaje oczekiwanie na listonosza
Drugim tematem wedÅ‚ug mnie jest wartym poruszenia jest Zend Framework. Otóż kilkanaÅ›cie dni temu ukazaÅ‚a siÄ™ nowa wersja (1.7.0). Uwaga jest to “tylko” Preview Release. Nie należy stosować jej w Å›rodowisku produkcyjnym. Do ZF dodano komponent Zend_AMF, zaktualizowano Dojo Toolkit, dodano nowy komponent ZendX_JQuery (cokolwiek to jest brzmi nieźle z jQuery w nazwie) i najważniejsze – poprawiono wydajność. Jest też kilka innych zmian, o których przeczytacie na Zend Developer Zone.
Kilka dni temu, przypadkowo, natrafiÅ‚em na AntyWeb – blog Grzegorza Marczaka. Autor porusza ciekawe tematy – web 2.0, zwiÄ…zane z usÅ‚ugami Google, nowymi technologiami. Jednym sÅ‚owem to co mnie interesuje najbardziej
PostanowiÅ‚em uruchomić drugi blog – rowerowy – jako że, bardzo lubiÄ™ jeździć jednoÅ›ladem napÄ™dzanym siłą wÅ‚asnych mięśni.
Planuję przepisanie (w końcu) mojego portfolio na ZF w wersji 1.6.x lub nowszej (aktualnie działa na 1.0.4).
W międzyczasie chcę się bliżej zapoznać z Pythonem, który ostatnio mnie urzekł. Tym razem chyba wciągnie mnie na dobre (to moje 3. podejście do tego języka programowania).
17 wrz 2008
Zend z Adobe poinformowały o rozpoczęciu współpracy, która ma na celu umożliwić łatwą kreację aplikacji w technologii Flex (flash) czy desktopowych w Air.
ObsÅ‚uga obu technik zostanie wprowadzona do Zend Frameworka oraz Zend’owskiego edytora php Studio for Eclipse. Jak informuje portal gazeta.pl: Zgodnie z podpisanÄ… umowÄ…, Zend Framework bÄ™dzie teraz obsÅ‚ugiwaÅ‚ Action Message Format (AMF) Flex’a, protokół który pozwala aplikacjom Flash/Flex na wymianÄ™ informacji z serwerami. Dodatkowo Zend Studio for Eclipse bÄ™dzie generowaÅ‚o pliki projektowe dla Adobe Flex Buildera.
Jak dla mnie, to bardzo dobra informacja (jak kolwiek zaimplementują to do frameworka). Budowanie aplikacji w Air (tylko tym sie `bawiłem` jak narazie) jest niemalże dziecinnie proste. Bardzo dobry edytor do tworzenia aplikacji Air udotępnia Aptana.
Niestety, edytor aplikacji Flex – Flex Builder, jest komercyjny. Koszt licencji wynosi 249 lub 699 USD. Dlatego nie miaÅ‚em okazji poznać bliżej tej technologi. Teraz może to siÄ™ zmieni
18 sie 2008
Postanowiłem podzielić się bardzo ciekawym zbiorem tablic czy ściągawek, tak zwanych Cheat Sheets. Zbiór nie tylko ciekawy, ale i dość pokaźny. Na stronie www.addedbytes.com zamieszczono aż 19 ściągawek, m.in. z takich tematów jak:
Polecam dodać do zakładek adres http://www.addedbytes.com/cheat-sheets/, napewno kiedyś się przyda
Najnowsze komentarze