Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: batman, dodany: 05.10.2009 19:10, tagi: zend_framework

Zend Framework dostarcza bardzo proste i łatwe w użyciu narzędzie do tworzenia projektów – Zend_Tool. Dzisiaj pokażę jak w kilku prostych krokach je uruchomić. Opis ten jest skierowany do użytkowników systemów operacyjnych Windows. Run zf.bat, run! By móc skorzystać z dobrodziejstw wiersza poleceń, musimy użyć polecenia zf. Niby nic wielkiego, ale dla wielu stanowi to duży problem. Najpierw

Autor wpisu: Vokiel, dodany: 03.10.2009 11:43, tagi: css, jquery, javascript

Przepraszamy, ten wpis dostępny jest wyłącznie w językach: English.

Autor wpisu: batman, dodany: 01.10.2009 18:09, tagi: javascript

Każdy kto miał okazję wycinać skomplikowany layout, zawierający dużo gradientów, zaokrąglonych rogów i nakładających się na siebie elementów, stosował przeźroczyste png. Nie ważą wiele i oferują ogromne możliwości. Jedynym minusem stosowania przeźroczystości w plikach png jest brak ich obsługi w zmorze programistów -  IE6. Wszystkie hack-i, fix-y i okrętki działały jedynie w określonych

Autor wpisu: thejw23, dodany: 30.09.2009 19:02, tagi: framework, php

przeczytalem ostatnio wypowiedz MajareQ na temat frameworkow i juz sam wstep zrobil na mnie piorunujace wrazenie:"Jeśli się pytasz: “Który framework powinienem wybrać?” to popełniasz błąd logiczny. Zakładasz, że w ogóle potrzebujesz jakikolwiek framework."moim zdaniem nie. bledem logicznym jest zakladanie, ze piszac w php nie potrzebuje frameworka :)1) startna dzien dzisiejszy osoba szukajaca frameworka, ktora nie zadala sobie juz wczesniej pytan zadanych przez MajareQ, to na 99% jest osoba, ktora nigdy nie pisala na prawde duzej strony i na 99% w najblizszym czasie jej bedzie robila. wiec nie szuka frameworka do pisania klonu Twittera, czyli bardzo, bardzo wysoka wydajnosc nie jest dla mniej priorytetem. i tu dochodzimy do punktu drugiego2) pomijanie calkowicie roli w ktorej frameworki sprawdzaja sie najlepiejrola polegajaca na szybszym, latwiejszym i przyjemniejszym pisaniu kolejnych aplikacji. frameworki pozwalaja zaoszczedzic duzo czasu, odwalaja za nas brudna robote zwiazana z autoryzacja, formularzami, walidacji itd. jesli 99% (ok, niech bedzie 90%) wykorzystania frameworkow to nie sa strony potrzebujace porad z High Scalability, to dlaczego mam nie uzywac frameworka, aby lepiej mi sie pracowalo? dlaczego mam pisac wlasne rozwiazania od podstaw i samemu dokonywac zmian na miare wlasnej wiedzy, skoro moge siegnac po cos co jest rozwijane przez osoby co najmniej, a zazwyczaj lepiej, orientujace sie w php? dlaczego nie mam skorzystac z faktu, iz bledy same sie poprawia, nowe funkcje same sie dodadza - wszystko niemal 'magicznie', calkowicie bez mojej ingerencji, po prostu 'pop' i mam kolejna wersje frameworka do sciagniecia. i tak dochodzimy do punktu trzeciego3) praca i zabawaczym innym jest praca, zarabianie z pisania w php, a czym innym bawienie sie w php, pisanie glownie dla przyjemnosci, bez terminow (ew. z odleglymi), rodziny itd. takie pisanie, kiedy po kilku godzinach siedzenia czlowiek ma duza satysfakcje, ze cos zrobil minimalnie lepiej niz bylo wczesniej, czesto po prostu cieszac sie faktem, ze cos sie zrobilo, dziala i jest tak samo funkcjonalne jak inne gotowe rozwiazania dostepne na sieci - ale to jest moje, moje i tylko ja to zrobilem, hoooray :) niestety, czesto pozniej zaczyna sie praca plus rodzina i albo skorzystam z gotowego, sprawdzonego, stabilnego, dzialajacego poprawnie rozwiazania i bede mial gotowa rzecz w 30 minut, albo poswiece najblizsze 4-5h na to aby zrobic to samemu, majac w perspektywie fakt, iz strona nad, ktora pracuje na 90% nie trafi na liste 'optimized by High Scalability'. w 90% przypadkow nie potrzebuje napisac czegos co bedzie musialo miec wydajnosc Twittera, wiec nie bedzie dla mnie roznicy w jakim frameworku to napisze (a roznice w wydajnosci moga byc miedzy nimi duze). i tu dochodzimy do punktu czwartego4) framework jaki jest kazdy widzina pewno przed wybraniem frameworka trzeba wiedziec czego potrzebujemy, to nie ulega watpliwosci. problem w tym, ze dla 90% wykorzystania frameworkow, wszystkie liczace sie spelniaja te wymagania. maja wsparcie, sa rozwijane, maja obsluge wielu baz, maja mechanizmy wspierajace rozne silniki do cache`owania itd. dlatego wlasciwym kryterium jest to, w ktorym frameworku najlepiej mi sie pracuje. ktory dla mnie i tylko dla mnie jest najfajniejszy. dodatkowo jest jeszcze kolejne kryterium o ktorym warto pomyslec zanim zdecydujemy sie na jakies bardzo niszowe rozwiazanie. i tu dochodzimy do punktu piatego.5) w kupie razniejwlasne rozwiazania sa fajnie, ale jak jestem klientem i mam swoj sklep online napisany na czyims wlasnym silniku, to mam przesrane. tak po prostu. jak mi webmaster odejdzie, to zanim nowy sie polapie, to troche czasu minie - chyba kazdy kiedys robil cos w cudzym kodzie i wie jaka to jest 'przyjemnosc'. a jak wyglada sytuacja jesli mam framework? z nowym webmasterem nie ma problemu, po prostu szukam kogos kto zna dany framewok i sporo problemow z glowy. podobnie jesli mam firme z 20 ITmenami na wlasnym rozwiazaniu. przyjdzie nowa osoba, ile czasu bedzie musiala sie uczyc ? ile czasu bedzie sie uczyl nowy pracownik, ktory zna dany framework? a czas to pieniadz. analogicznie jesli szukam pracy, to znajde ja szybciej znajac gotowe rozwiazania czesto stosowane w firmach.6) uwagi koncoweprzewaga frameworkow nad domowymi rozwiazaniami jest zazwyczaj bezpieczenstwo, optymalizacja, 'magiczne' naprawianie bledow i dodawanie nowych funkcjonalnosci, trzymanie sie ogolnie przyjetych standardow, mniejsze lub wieksze wymuszanie pisania zgodnie z MVC. jak dla mnie to wystarczajaca lista, aby zarzucic wlasne rozwiazanie i zajac sie czyms gotowym, czyms co w miare szybko dostosuje do wlasnych potrzeb i bede czul sie 'jak u siebie'. mozna samemu napisac framework, tyko nadal pozostaje jeden minus - samemu trzeba wprowadzac wszelkie poprawki, a majac gotowe rozwiazanie czas na to przeznaczony moge poswiecic na poza komputerowe hobby. nie sama praca czlowiek zyje.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: batman, dodany: 29.09.2009 19:20, tagi: zend_framework

Zend Framework dostarcza programiście ogromną ilość narzędzi, które znacznie ułatwiają pracę nad aplikacjami internetowymi. Jednym z takich narzędzi jest Zend_Form. Jego wykorzystanie znacznie przyspiesza proces tworzenia formularzy wraz z walidacją i filtrowaniem wprowadzonych danych. Formularz można stworzyć na co najmniej kilka sposobów. W zasadzie każdy, kto używa ZF od dłuższego czasu,

Autor wpisu: batman, dodany: 29.09.2009 19:15, tagi: zend_framework

W poprzednim tekście poświęconym formularzom w Zend Framework-u, pokazałem jak w prosty i szybki sposób można stworzyć bezpieczny formularz, wykorzystując do tego Zend_Form. Dzisiaj pokażę w jaki sposób można stworzyć skomplikowany formularz, zawierający dwie kolumny z kontrolkami oraz podpowiedzi (tooltip).  By nie przesłonić głównego celu tego wpisu, nie będę dodawał filtrów i walidatorów do

Autor wpisu: Vokiel, dodany: 28.09.2009 10:56, tagi: php

Ostatnia część tworzenia projektu loggera zdarzeń – klasy Log. Skupimy się na wykończeniu projektu, który naprawi powstałe wcześniej niedociągnięcia, trudności w korzystaniu. Utworzona klasa połączy nam wszystkie funkcjonalności w jedno. Doda kilka funkcjonalności, wprowadzi wygodę w użytkowaniu, łatwość zmian. W pierwszej części ustaliliśmy wymagania klasy Log, ustaliliśmy strukturę, zasady funkcjonowania klasy oraz napisaliśmy interfejs. W drugiej części rozwinęliśmy nasz projekt o klasę logFile implementującą wcześniej utworzony interfejs, omówiliśmy możliwość rozszerzeń funkcjonalności o nowe klasy (LogDB) oraz spotkaliśmy się z problemem szybkiej zmiany rodzaju wykorzystywanej klasy.

Tworzenie klasy

Stwórzmy klasę, która połączy w sobie możliwość używania różnych klas loggera (logFile, logDb). Aby zachować ustalone na początku wymagania, dać możliwość łatwego wykorzystania, szybkiej zmiany silnika bez potrzeby wielu zmian w kodzie oraz maksymalnie skrócić zapis, musimy skorzystać z kilku technologi OOP.

Pierwsza z nich – klasa statyczna, druga – singleton. Czemu tak? Klasa statyczna + singleton załatwi nam szybkie i wygodnie użycie:

log::info('Szybko i sprawnie');

. Dzięki temu, po ustaleniu na początku skryptu silnika przechowywania logów w dalszej części możemy wygodnie korzystać z w/w zapisu. Dodatkowo przejście z logowania do pliku na logowanie do bazy nastąpi tylko w jednym miejscu. Jak zapewne zauważyliście nawet nazwa klasy została maksymalnie skrócona log, aby użycie było jak najbardziej wygodne.

Zatem do dzieła. Wzór klasy będzie następujący:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class log implements log_log{
	private static $driver;
	private static $drivers = array();
	private static $defaultDriverName = 'log_logFile';
 
	protected function __construct(){}
	protected function __clone(){}
 
	public static function instance(){}
	public static function addDriver(log_log $driver){}
	public static function useDriver($drivername=''){}
 
	public static function error($err,$driverName=''){}
	public static function warn($err,$driverName=''){}
	public static function info($err,$driverName=''){}
}
?>

Zmienne klasy

W klasie log mamy zadeklarowane 3 zmienne. Każda z nich ma swoje, łatwe do odgadnięcia, zastosowanie: private static $driver; – aktualny sterownik klasy loggera private static $drivers = array(); – tablica dostępnych (dodanych) sterowników private static $defaultDriverName = 'log_logFile'; – nazwa domyślnego sterownika

Statyczna zmienna klasy $driver; przechowuje aktualnie wybrany sterownik, do którego następuje zapis logów. W trakcie korzystania z klasy będzie możliwa zmiana sterownika, dzięki temu, nawet w jednym skrypcie zachowamy możliwość wybrania innego sterownika do zapisu logu konkretnego zdarzenia. Kolejna zmienna $drivers; jest tablicą przechowującą obiekty klas poszczególnych sterowników. Dzięki temu po jednokrotnym wykorzystaniu konkretnego sterownika, w przypadku jego ponownego użycia obiekt nie jest tworzony na nowo. Trzecia zmienna $defaultDriverName; jak sama nazwa wskazuje, przechowuje nazwę domyślnego sterownika klasy loggera. Dzięki temu klasa jest gotowa do użycia bez ustawiania sterownika przy każdym, pierwszym, uruchomieniu skryptu.

Metody

Trzech ostatnich metod error(), warn(), info() nie muszę omawiać, zostało to już przedstawione w poprzednich częściach. Jedyną różnicą względem poprzednich implementacji jest dodanie nowego parametru: $driverName =''. Parametr ten, jak nazwa wskazuje, podaje nazwę sterownika, którego należy użyć do zapisu danego komunikatu. Domyślnie nie jest zdefiniowany, a w przypadku jego nie podania, wykorzystywany jest domyślny sterownik. Istnieje jednak możliwość podania innego sterownika do zapisu konkretnego komunikatu. Dzięki temu rozszerzamy funkcjonalność naszej klasy, o wybór sterownika dla konkretnego komunikatu, lub pojedynczego wystąpienia.

Utworzyliśmy dwie metody z dostępem ustawionym na protected:

protected function __construct(){}
protected function __clone(){}

Ich zadaniem jest pilnowanie, aby nasza klasa była rzeczywiście singletonem. Zabezpiecza przed utworzeniem nowego obiektu klasy log z poza niej samej oraz przed utworzeniem kopii takiego obiektu.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.