php developer & web designer
13 maj 2009
Bardzo szybko wydano pierwszą poprawkę do Zend Framework 1.8, który oficjalnie zaprezentowano dokładnie 13 dni temu.
Co ciekawe, ekipa tworzÄ…ca framework chwali siÄ™, iż w tym czasie zrobiÅ‚a aż 68 poprawek. Nachodzi mnie pytanie – cieszyć siÄ™ czy pÅ‚akać?! Nie bardzo rozumie wydawanie czego co nie jest sprawdzone dwa/trzy razy. Okazuje siÄ™, że błędy byÅ‚y nawet w przykÅ‚adach dokumentacji – Quick Start!.
No ale do rzeczy – z grubszych poprawek wykonano:
Lista wszystkich błędów znajduje siÄ™ w ZF issue trackerze, a najnowszÄ… wersjÄ™ – Zend Framework 1.8.1 można poprać ze strony http://framework.zend.com/download
Właśnie ukazał się Zend Framework w wersji 1.8 Beta 1. jest to kolejna wersja testowa przed finalną zapowiedzianą na koniec miesiąca.
Z głownych nowości:
.
NajnowszÄ… wersjÄ™ można pobrać z oficjalnej strony framework‘a.
Dziś także ukazuje się nowa wersja Ubuntu. Ubuntu 9.04 nazwane Jaunty Jackalope.
4 mar 2009
REST to usÅ‚uga sieciowa używana do dystrybuowania treÅ›ci – głównie – pomiÄ™dzy aplikacjami internetowymi (tzw. web service). REST nie jest jedynym dostÄ™pnym web service; innymi popularnymi usÅ‚ugami sÄ… m.in. XML-RPC oraz SOAP.
Jako że REST jest prostym i lekkim protokoÅ‚em, jest on – obok XML-RPC – najczęściej wykorzystywany we wszelkiego rodzaju API (Application Programming Interface).
Jest lekki, bo wszelkie requesty są standardowymi żądaniami HTTP (wykorzystywane są przy tym metody GET, POST, PUT oraz DELETE). Odpowiedzi są standardowymi odpowiedziami serwera (nagłówki + treść), przy czym status odpowiedzi informuje o błędzie (np. 404 Not Found dla nieznanej metody, 401 Unauthorized w przypadku braku lub błędnej autoryzacji, 200 OK informujący o powodzeniu operacji).
W Zend Framework mamy gotowy komponent do obsługi REST, dzięki niemu możemy łatwo stworzyć zarówno klienta (Zend_Rest_Client), jaki i serwer (Zend_Rest_Server).
Serwer REST zbudowany z wykorzystaniem Zend_Rest_Server:
$rest = new Zend_Rest_Server();
$rest->setClass('MyClass');
$rest->handle();
Komunikujemy się z serwerem REST używając Zend_Rest_Client:
$restClient = new Zend_Rest_Client('http://example.com/api/rest');
$restClientResponse = $restClient->getDate()->get();
if ($restClientResponse->isSuccess()) {
echo $restClientResponse;
}
WydawaÅ‚oby siÄ™, że to kompletne rozwiÄ…zanie – możemy zarówno coÅ› udostÄ™pnić, jak również odpytać. Niestety tak nie jest!
ZF umożliwia obsługę REST tylko z wykorzystaniem formatu XML. Co zatem mamy zrobić jeśli chcemy wykorzystać REST API obsługujące tylko format JSON (obok XML najczęściej stosowany format REST)?
RozwiÄ…zanie jest proste – do odpytania REST API w formacie JSON wykorzystamy Zend_Http_Client, a wynik dekodujemy korzystajÄ…c z Zend_Json.
Przykład odpytania REST API obsługującego format JSON:
$httpClient = new Zend_Http_Client('http://example.com/api/json');
$httpClient->setHeaders('Accept: application/json');
$httpClientResponse = $httpClient->request('get')->getBody();
OK, wiemy już zatem jak odpytać API obsługujące format JSON, wiemy też jak wykorzystać Zend_Rest do budowy/odpytania API wykorzystującego XML.
Co jeśli chcemy utworzyć serwer REST oferujący dane w formacie JSON (oraz XML)?
Musimy wykonać sprawdzenie – nagłówka Accept – i w zależnoÅ›ci, czy znajdzie siÄ™ tam application/json, czy nie, odpowiedzieć w odpowiednim formacie (domyÅ›lnie XML).
$rest = new Zend_Rest_Server();
$rest->setClass('MyClass');
$rest->returnResponse(true);
// informujemy moduł, że chcemy przechwycić dpowiedź Zend_Rest_Server do zmiennej...
$response = $rest->handle();
// ...i to też robimy, wywołują metodę handle()
// domyślny typ danych (xml)
$contentType = 'text/xml';
// sprawdzamy czy zadano danych JSON
if (preg_match('/(application\/json)/', $this->getRequest()->getServer('HTTP_ACCEPT'))) {
// konwertujemy dane XML => JSON
$response = Zend_Json::fromXml($response, true);
// nagłówek dla danych JSON
$contentType= 'application/json';
}
// zwracamy dane ($response) z odpowiednim nagłówkiem Content-type
$responseObject = $this->getResponse()->setBody($response)->setHeader('Content-type', $contentType, true);
// pozostaje jeszcze wysłanie odpowiedniego statusu, zgodnie ze specyfikacją REST
$restHeaders = $rest->getHeaders();
// pobieramy nagłówki (drugi element tablicy - jeśli wystąpił błąd - zawiera status błędu)
if (isset($restHeaders[1])) {
$responseObject->setRawHeader($restHeaders[1]);
}
Gotowe! Teraz możesz udostępnić własne API lub wykorzystać jedno z dostępnych
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.
Zend_Form, mimo że bardzo sÅ‚abo udokumentowany i toporny w konfiguracji, jest przydatnym elementem Zend Framework‘a. Niestety, domyÅ›lnie generuje znaczniki HTML a nie XHTML, co uniemożliwia walidacjÄ™ kodu strony.
Jest na to wyjście.
Wystarczy w pliku bootstrap.php dodać następującą definicję doctype:
$view = new Zend_View();
$view->setEncoding('UTF-8');
$view->doctype('XHTML1_TRANSITIONAL');
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
Metoda doctype (klasa Zend_View_Helper_Doctype) przyjmuje jedną z wartości:
W wigilię wydana została kolejna wersja Zend Framework, oznaczona numerem 1.7.2. Jest to maintenance release, czyli wersja nanosząca jedynie poprawki do znalezionych błędów.
Dostępna jest lista wszystkich naniesionych zmian, których w sumie było 88.
Zgodnie z planem, ukazał się dziś Zend Framework w wersji 1.7.
Sporo zmian zmieściło się w tej mini wersji. Do najważniejszych jednak należą:
Optymalizacji i poprawieniu wydajności poświęcono cały rozdział w manualu.
Zend Framework 1.7 ukaże się 16 listopada. To już oficjalne. Z nowości, jakie znajdą się w nadchodzącym wydaniu, można wyliczyć:
* wsparcie dla jQuery
* możliwość robienia wpisów do plików konfiguracyjnych (Zend_Config_Writer)
* integracja z Adobe Flex (Zend_Amf)
* poprawiona zostanie wydajność
…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
Przed kilkoma dniami oficjalnie ukazał się Zend Framework 1.6.
Dopracowano kilka komponentów, które były zaprezentowane w wersji Release Candidate 1
Nowości i główne zmiany, to:
Dodatkowo poprawiono 287 zgłoszonych błędów (w tym raportowane nowe propozycje).
Co więcej?
UkazaÅ‚ siÄ™ Zend Framework 1.6 Release Candidate 1. DziÅ›, 22 lipca 2008 roku, udostÄ™pniona zostaÅ‚a najnowsza wersja najlepszego frameworku php‘owego.
Co nowego?
Wszystko piÄ™knie, szkoda tylko że wybrano tak maÅ‚o popularnÄ… bibliotekÄ™ jak Dojo (a nie Prototype lub jQuery)…
22 maj 2008
![]()
Matthew Weier O’Phinney podaÅ‚ do publicznej informacji, iż Zend Framework i Dojo zostanÄ… partnerami i opracujÄ… miÄ™dzy innymi kompleksowe rozwiÄ…zanie AJAX’owe dla frameworka. Ale co najważniejsze, autor wpisu zapowiada że ZF dalej bÄ™dzie bardzo łátwo użyć z innymi bibliotekami JavaScrip (jak chociażby Prototype czy jQuery).
Dojo ma być dołączane do każdej dystrybucji Zend Framework, co ma uÅ‚atwić programisom nie posiadajÄ…cym zbyt dużej wiedzy webdesigner’skiej użytwanie bardzo popularnej technologii, jaka jest AJAX (asynchroniczny JavaScript i XML).
WiÄ™cej szczegółów oraz przykÅ‚ady znajdziecie na stronie Matthew oraz na stronie Andy’ego, który zamieÅ›ciÅ‚ FAQ dotyczÄ…ce integracji. Polecam i zapraszam do lektury…
Dziś, z kilkudniowym poślizgiem, ukazała się kolejna wersja Zend Framework. Wersja 1.5.2 wstępnie była przewidziana do wydania w poniedziałek 12 maja.
Co się zmieniło w stosunku do 1.5.1? Tylko tyle, że pozbawiono framework 49. błędów.
Zend Framework, w zawsze najnowszej wersji, można pobrać z http://framework.zend.com/download
Rob Allen przedstawił wspaniały przykład wykorzystania Zend_Form do obsługi uploadowanych plików. Jak wiadomo, Zend_Form nie posiada obsługi pól typu file. Jest to skutkiem nadal trwających prac nad dodaniem takowej obsługi do komponentu odpowiedzialnego za formularze.
W artykule Rob przedstawia wÅ‚asnÄ… klasÄ™ rozszerzajÄ…cÄ… Zend_Form (klasa ma za zadanie stworzyć formularz). NastÄ™pnie przedstawiony zostaÅ‚ przykÅ‚ad napisania klasy odpowiedzialnego za element Form_Element_Input. Kolejnym krokiem byÅ‚o stworzenie klasy walidatora, gdzie znalazÅ‚a siÄ™ obsÅ‚uga błędów uploadu. W koÅ„cu zaprezentowany zostaÅ‚ kontroler, który “spina” wszystko w jednÄ… caÅ‚ość.
Artykuł wraz z przykładowymi kodami źródłowymi można znaleźć na stronie:
http://akrabat.com/2008/04/07/simple-zend_form-file-upload-example/
Najnowsze komentarze