Archive

Posts Tagged ‘zend framework’

Zend framework 1.10.0 STABLE wydany

styczeń 28th, 2010

Wczoraj została wydana nowa wersja zenda. Zawiera ona dość dużo poprawek i nowych funkcjonalności. Mimo, że developerzy zapowiadali już nową wersję Zf 2.0 zdecydowali się na wydanie jeszcze jednej wersji z serii 1.x. Na początku wydawało się to dla mnie trochę zaskakujące, ale po zapoznaniu się z nową wersją widzę, że jest to dosyć dobre posunięcie. No i pewnie na ZF 2.0 przyjdzie nam trochę poczekać, a tym czasem możemy cieszyć się nową stabilną wersją.

Read more…

admin PHP , ,

Zend_Tool i przystosowanie aplikacji do korzystania z moduły

wrzesień 11th, 2009

Po pierwszej nie udanej próbie poznania Zend Tool, w końcu znalazłem chwilę żeby spróbować jeszcze raz. Wcześniej instalowałem ZT zanim jeszcze zostało oficjalnie wydane, jednak na próbie instalacji się zakończyło.

Read more…

admin PHP , , ,

Modele w Zend framework

maj 15th, 2009

Czym jest model, a raczej warstwa modelu? Pomaga ona nam oddzielić warstwę danych od pozostałych warstw aplikacji. Ułatwia ona operacje na danych dzięki czemu, wszystkie operacje związane z pobieraniem danych możemy zamknąć w jednym miejscu.

Jednym z kluczowych elementów ZF jest Zend_Db, której funkcjonalność jest podstawą istnienia warstwy modelu ZF. Zend_Db można wykorzystać na wiele sposobów w zależności od tego jak chcemy skonstruować nasze modele.
Read more…

admin PHP , , , ,

Zend framework 1.8

maj 2nd, 2009

Jest już dostępny nowy zend framework 1.8 został opublikowany 30.04.08. Lista zmian jest dosyć długa mi. wprowadzono Zend_Tool czyli CLI dla zend framework, które pozwala nam w łatwy sposób z wiersza poleceń wygenerować aplikację, tworzyć kontrolery, modele czy widoki to czego mi osobiście brakuje to tworzenie modułów. ZT domyślnie nie jest przystosowane do tworzenia aplikacji modułowej, co jest jego wielkim minusem. Wprowadzono Zend_Application narzędzie pomagające tworzyć skrypty uruchamiające aplikację (bootstrap).

Ponadto wprowadzono takie usługi jak integrację z chmurą Amazonu Zend_Service_Amazon_Ec2, Zend_Service_Amazon_S3.

Pełna lista zmian jest Zend Framework 1.8.0 Released

admin PHP , , , ,

Zend_XmlRpc

kwiecień 6th, 2009

Dawno nic nie pisałem, więc teraz kolejny wpis z cyklu opisującego możliwości
Zend Frameworka czyli Zend_XmlRpc (Remote Procedure Call). Zamierzam opublikować jeszcze kilka wpisów z tej serii, do czasu kiedy nie przesiądę się na symfony (z czym noszę się już od kilku miesięcy).
Read more…

admin PHP , , ,

Wyszukiwarka z Zend_Search

listopad 26th, 2008

Zend_search czyli Zend_Search_Lucen to phpowa implemnetacja popularnej Javowej wyszukiwarki Lucen. Lucen jest pełnotekstową wyszukiwarką opartą na plikach, więc do jej obsługi nie potrzebujemy bazy danych.

Główne zalety to mi. Zwracanie wyniku według trafności wyszukiwania, możliwość tworzenie różnego rodzju zapytań, czy wyszukiwanie po polach tekstowych(np. autor, title, content).

Wyszukiwarkę możemy zaimplementować na różne sosoby w zaleźności od tego czego potrzebujemy.
Ja stworzyłęm sobie dodatkowy model, w którym stworzyłem 4 metody: search(), addSearch(), updateSearch(), delSeaarch(). Dodatkowo stworzyłem sobie skrypt, który indeksuje rekordy już znajdujące się w bazie (nie będę go tutaj opisywał, powstał na potrzeby projektu).

Tego co robią metod chyba nie trzeba opisywać, nazwy mówią wszystko. metoda updateSearch() słada się tak naprawdę z dwóch metod poniewasz Lucen nie obsługuje aktualizacji rekordów. więc trzeba najpierw usunąć stary rekord a później dodać nowy.
Read more…

admin PHP , , , ,

Dlaczego Zend framework ?

październik 20th, 2008

Po przeczytaniu kilku artykułów na temat ZF postanowiłem napisać kilka słów od siebie o tym tzw pseudo frameworku.

Dlaczego pseudo?

Zend framework jest zestawem klas które przy odrobinie wysiłku z naszej strony może stać się doskonałym narzędziem do twonenia aplikacj webowych. Klasyczne frameworki oferują kompletne rozwiązania nie musimy wszystkiego łaczyć samodzielnie tak by tworzyły aplikację.
Wynika to z tego że programiści zenda nie chcą narzucać (swoich) gotowych rozwiązań użytkownikom w kwestii kształtu aplikacji dają użytkownikowi wolną rękę. Jest to jedna z nielicznych wad ZF, ja osobiście wolałbym mieś jedno docelowe rozwiązanie co wyjaśniło by mi pewne niejasności. No ale cóż nie jest to aż taka duża wada no i wystarczy raz napisać pewne rzeczy i później możemy wielokrotnie je wykorzystywać. (Zagorzałym przeciwnikom po prostu chyba nie chce się podjąć wysiłku przy tworzeniu bazowej aplikacji, wolą mieć wszystko podane na tacy…)

Dlaczego warto go używać?

Poza dużymi możliwościami które daje cały czas powiększający się zestaw klas głównymi zaletami ZF (jak dla mnie) są szybkość i łatwość tworzenia aplikacji. W porównaniu np. do symfony, zend bywa czasem dwa a nawet trzy razy szybszy (nawet z podłączonymi szablonami smarty). Natomiast jeśli chodzi o samo tworzenie aplikacji to jest to dość banalne.
Oczywiście najpierw trzeba zbudować sobie jakąś aplikację bazową co może zająć trochę czasu szczególnie mniej doświadczonym programistom, ale zawsze można posłużyć się gotowcami ściągniętymi z netu.

Jak już mamy swoją bazową aplikację to żeby wygenerować jakiś prosty widok wystarczy nam stworzyć odpowiednią strukturę modułu, domyślny kontroler, domyślny widok, umieścić jakąś treść w widoku i już gotowe. Jeśli chcemy czegoś więcej np.zaciągnąć dane z bazy to też jest to proste. wystarczy właściwie stworzyć model i w odpowiednim miejscu go wywołać. Do tworzenia prostych aplikacji wystarczy nam minimalna wiedza na temat modeli i controlerów (Zend_Db i Zend_Controller) nie musimy nawet specjalnie wiele wiedzieć na temat widoków.

Poza tym ZF ma bardzo dobrą dokumentację co pomaga w szybkim poznawani pozostałych bardziej zaawansowanych komponentów frameworka, które mogą się nam przydać przy tworzeniu bardziej rozbudowanych aplikacji (Zend Cache, Zend_Feed, Zend_Pdf).

A i jeszcze jedna ważna zaleta, Tworząc aplikacje od początku, to my decydujemy co w niej umieścimy nie musimy się zastanawiać jak wyłączyć niepotrzebne opcje.

Właściwie staram się szukać zalet niż wynajdować nowe wady, jak dla mnie praca z ZF jest bardzo wygodna i dzięki niemu mogę zaoszczędzić wiele czasu mimo że niektóre rzeczy trzeba napisać sobie samemu. Od jakiegoś czasu staram się przekonać do symfony ale na razie jeszcze wydaje mi się zbyt kobylasty, kto wie może w przyszłości będę musiał pracować na symfony.

admin PHP , ,

Zend Layout

wrzesień 22nd, 2008

Od wersji 1.5 Zend framwork wyposarzony jest w zend layout, wzorzec który umożliwia nam proste zarządzanie layoutami.
Do uruchomienia layoutów nie potrzebujemy zbyt wiele kodu, na dobrą sprawę wystarczy nam tylko jedna linijka

1
$layout = Zend_Layout::startMvc();

Layout inicjujemy w “bazowym kontrolerze” po którym dziedziczą wszystkie kontrolery u mnie jest to My_Controller_Action który dziedziczy po Zend_Controller_Action.

Jako że kożystam ze smarty ustawiam sufix dla szablonów i kilka innych opcji

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$options = array(
                'layout'     => 'main', //nazwa głównego layout'u
                'layoutPath' => './frontend/templates/', // ścieżka
                'contentKey' => 'content', //klucz do którego zostaną przypisane zrenderowane szablony poszczególnych akcji
                );
 
$layout = Zend_Layout::startMvc($options);
$layout->setViewSuffix('tpl');
 
//Przypisujemy $layout do właściwości głównego kontrolera 
//$this->layout dzięki czemu $layout będzie dostępny 
//we wszystkich potomnych kontrolerach
$this->layout = $layout; 
 
//pzrzypisujemy $layout do szablonu
$this->view->assign( 'layout', $layout );

I właściwie całą pracę związaną z konfiguracją mamy już za sobą, teraz możemy już korzystać z layoutów.

Layouty możemy bardzo łatwo zmieniać w zależności od tego jakiego potrzebujemy dla danej akcji. Możemy to zrobić na dwa sposoby wpisując w akcji:

public function indexAction() 
{
        //Wywołujemy layout foobaz.tpl
	$this->_helper->layout->setLayout('foobaz');
        //lub
	$this->layout->setLayout('foobaz');
}

Wywołanie $this->layout… jest o tyle “lepsze”, że dostajemy jedynie obiekt layoutu zamiast obiektu helper z layoutem.

Zend layout jest o tyle wygodny, że możemy przypisać do niego zmienne tak samo jak przypisujemy zmienne do szablonów akcji poprzez $this->view->zmienna1 = ‘Bla bla bla’;, oczywiście mozemy to też zrobić poprzez obiekt layoutu $this->layout->zmienna2 = ‘La la la’;

Z mojego doświadczenia wynika, że rzadko używam innych layautów niż główny (wcześniej musiałęm sobie symulować coś w rodzaju laya), ale bez tego wzorca ciężko jest się obejść w niektórych sytuacjach, a jak się go już ma trzeba z niego korzystać.

admin PHP , ,

Zend Cache

sierpień 19th, 2008

Ostatnio dużo myślę o optymalizacji moich stronek i ulepszeniu mojego cms’a, stąd kolejny art o cachowaniu tym razem będzie mowa o Zend Cache.

Jako że pracuje na Zend framework z podłaczonym systemem szablonów Smarty rozpatruje użycie jednego z dwóch dostępnych dla mnie rozwiązań czyli Zend Cache i Cache smarty.

Wcześniej nie widziałem potrzeby buforowania szablonów, nie było mi to raczej potrzebne ale w miarę wzrastania cmsa i projektów którymi się zajmuje postanowiłem to zmienić.

Ale do rzeczy …

Zend cache można zainicjować w bardzo prosty sposób i ustawiając na początek kilka opcji

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
//includujemy plik z klasą Zend_Cache
require_once 'Zend/Cache.php';
 
//ustawiamy opcje frontend 
$frontendOptions = array(
   'lifetime' => 7200,     // czas życia cacha
   'automatic_serialization' => true    //włączmy automatyczną serializacje domyśnie ustawiona jest na false
);
 
//ustawiamy opcje backend
$backendOptions = array(
    'cache_dir' => './tmp/' // folder gdzie będziemy przechowywać pliki cacha
);
 
//frontend  czyli to co chcemy cachować
//dostępne opcje: Core, Output, Class, File, Function, Page
$frontend = 'Core';
 
 //backend czyli to gdzie chcemy cachować
//dostępne opcje: File, Sqlite, Memcached, Apc, ZendPlatform
$backend = 'File';
 
// odpalamy cacha za pomocą metody factory
$cache = Zend_Cache::factory($frontend, $backend, $frontendOptions, $backendOptions);

Opcję $frontend = ‘Core’ możemy zastosować do buforowania zapytań do bazy danych np.

1
2
3
4
5
6
7
8
9
10
11
12
 
if(!$result = $cache->load('myresult')) {
 
    // gdy nie macacha pobieramy dane z bazy
    $result = $db->fetchAll('SELECT * FROM huge_table');
 
    // i zapisujemy cache
    $cache->save($result, 'myresult');
 
}
//dane możemy dalej przetwarzać lub wydrukować
print_r($result);

Do cachowania wyjścia używamy trochę innych metod (start i end):

1
2
3
4
5
6
7
8
9
10
11
12
 
//ustawiamy opcję Output w metodzie factory
$cache = Zend_Cache::factory('Output', 'File', $frontendOptions, $backendOptions);
 
// do metody start musimy przekazać unikalny identyfikator
if(!$cache->start('mypage')) {
    echo 'Hello world! ';
    echo 'This is cached ('.time().') ';
 
    $cache->end(); // zapisujemy wyjście i wysyłąmy do przegklądarki
 
echo 'This is never cached ('.time().').';

Tagi

Zend Cache ma przydatną opcję tagowania cacha, pomocne jest to do kategoryzowania buforów i przydatne przyczyszczeniu określonych grup (kategorii) cachy.

1
2
 
$cache->save($dane, 'uniqueID', array('tagA', 'tagB', 'tagC'));

Czyszczenie cachy

Zeby usunąć cache o określonym id wystarczy użyć metody

1
2
 
$cache->remove('idDoUsuniecia');

Żeby usunąć większą ilość zbuforowanych danych można się posłużyć metodą clean(), przyczym metoda ta może przyjmować różne przydatne opcje.

Do usunięcia wszystkich buforów użyjemy opcji Zend_Cache::CLEANING_MODE_ALL.

1
2
 
$cache->clean(Zend_Cache::CLEANING_MODE_ALL);

Do usunięcia starych (wygasłych) buforów użjemy clean() z opcją Zend_Cache::CLEANING_MODE_OLD

1
2
 
$cache->clean(Zend_Cache::CLEANING_MODE_OLD);

Do usunięcia buforów oznaczonych tagami Zend_Cache::CLEANING_MODE_MATCHING_TAG

1
2
 
$cache->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('tagA', 'tagC'));

Do usunięcia buforów nie oznaczonych danymi tagami CLEANING_MODE_NOT_MATCHING_TAG (podajemy również tablicę tagów)

1
2
 
$cache->clean(Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG, array('tagA', 'tagC'));

Zend Cache posiada jeszcze kilka ciekawych opcji, ale te opisane powyżej w zupełności wystarczą by używać tego narzędzia.

admin PHP , ,

agencja reklamowa lublin ślub i wesele senniki