dominik bułaj

php developer & web designer

Archiwum kategorii ‘Zend Framework’ Category

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:

  • zamieniono wersjÄ™ Dojo dołączonÄ… do frameworka (1.2 na 1.3)
  • Zend_Loader::registerAutoload() jest aliasem do Zend_Loader_Autoloader
  • poprawiono i udoskonalono Zend_Application
  • dodano generowanie modułów i elementów wewnÄ…trz modułów (Zend_Tool) — w koÅ„cu!
  • dodano usprawnienia do Zend_Amf

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:

  • Zend_Application (wsparcie dla bootstrapu)
  • Zend_Tool (generowanie projektów i komponentów)
  • Zend_CodeGenerator (IMHO narzÄ™dzie nieprzydatne)
  • Zend_Navigation (generowanie sitemap’ów i drzew linków)
  • Zend_Reflection (rozszerzenie możliwoÅ›ci php’owego reflection)
  • Zend_Tag (praca z tagami (etykietami))
  • dodatki i usprawnienia w Zend_Validate i Zend_Filter
  • usprawnienia w Zend_Search_Lucene i Zend_Pdf
  • nowa obsÅ‚uga uploadowanych plików w Zend_Form_Element_File

.

NajnowszÄ… wersjÄ™ można pobrać z oficjalnej strony framework‘a.

Dziś także ukazuje się nowa wersja Ubuntu. Ubuntu 9.04 nazwane Jaunty Jackalope.

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 :)

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 i XHTML

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:

  • XHTML11
  • XHTML1_STRICT
  • XHTML1_TRANSITIONAL
  • XHTML1_FRAMESET
  • XHTML_BASIC1
  • HTML4_STRICT
  • HTML4_LOOSE
  • HTML4_FRAMESET
  • HTML5
  • CUSTOM_XHTML
  • CUSTOM

Zend Framework 1.7.2

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żą:

  • Zend_Amf z obsÅ‚ugÄ… protokołów AMF0 oraz AMF3
  • wsparcie dla edytora dijit (Dojo Toolkit)
  • dostÄ™p do usÅ‚ug Twittera (Zend_Service_Twitter)
  • ZendX_JQuery w dodatkowych bibliotekach (extras)
  • metadata API (Zend_Cache)
  • Google book search API (Zend_Gdata)
  • poprawiona wydajność w Zend_Loader, Zend_Controller oraz komponentach serwerowych
  • Zend_Tool trafiÅ‚ do inkubatora
  • Zend_Text_Table – formatowanie tabel przy użyciu tekstu
  • Zend_ProgressBar – tworzenie pasków postÄ™pu (konsole)
  • Zend_Config_Writer – edycja plików konfiguracyjnych
  • ZendX_Console_Unix_Process – kolejna extra biblioteka

Optymalizacji i poprawieniu wydajności poświęcono cały rozdział w manualu.

Zend Framework 1.7

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).

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 ;-)

Zend Framework 1.6

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:

  • Zend_Tool (generowanie projektu, kontrolerów z linii poleceÅ„ – wiÄ™cej)
  • Lucene 2.3 Index File Format Support
  • Zend_Session bazodanowy save handler
  • Paginator Component (stronicowanie)
  • Figlet (ASCII art – wiÄ™cej — wg mnie bez sensu)
  • ReCaptcha Service
  • Captcha Form Element
  • Zend_Config_Xml (obsÅ‚uga atrybutów XMLowych)
  • Zend_File_Transfer Component (upload plików)
  • File Upload Form Element
  • Zend_Wildfire Component with FireBug Log Writer (wypluwanie informacji debug do konsoli FireBug)

Dodatkowo poprawiono 287 zgłoszonych błędów (w tym raportowane nowe propozycje).

Co więcej?

  1. Dokumentacja ZF jest dostępna w postaci PDF (dostępna ze strony zend.com).
  2. Zmieniła się także strona pobierania.
    Teraz do wyboru mamy 2 wersje – peÅ‚nÄ… (wszystkie pakiety, wraz z Dojo) i minimal (tylko podstawowe komponenty ZF). Co wiÄ™cej download także jest realizowany ze strony zend.com, co oznacza że trzeba zaÅ‚ożyć (darmowe) konto w zend.com Pobieranie ze strony zend.com tylko jeÅ›li klikniemy na link opisujÄ…cy wersje.

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?

  • integracja z Dojo (w tym m.in. JSON-RPC, Dojo View Helper, Dijit zintegrowane z Zend_Form i Zend_View oraz oczywiÅ›cie dołączona biblioteka Dojo)
  • rozszerzenia SOAP (nareszcie!), w tym klient i serwer oraz bardzo prosty w obsÅ‚udze WSDL Generator (coÅ› czego brakowaÅ‚o w PHP od zawsze !!))
  • przeglÄ…d nowych “ficzerów” – katalog /laboratory w Å›ciaganym archiwum, a w nim m.in. CLI – Command Line Interface i Project Asset Management
  • najnowsza Lucyna (Zend_Search – Lucene 2.3)
  • przechowywanie sesji (Zend_Session) w bazie danych
  • obsÅ‚uga stronicowania (komponent Paginator)
  • gotowe api do obsÅ‚ugi ReCaptcha (darmowe zabezpieczanie aplikacji kodem captcha)
  • możliwość definiowania kodowania bazy danych (DB Adapter obsÅ‚uży Character Set) – bardzo pomocne przy MySQL > 4.1)
  • Zend File Transfer Component (genialnie prosta w użyciu obsÅ‚uga uploadu plików)

Wszystko piÄ™knie, szkoda tylko że wybrano tak maÅ‚o popularnÄ… bibliotekÄ™ jak Dojo (a nie Prototype lub jQuery)…

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/

Archiwa