Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Tomasz Kowalczyk, dodany: 25.07.2011 08:37, tagi: css, javascript, jquery

W serii Linkdump pojawiają się materiały różnego typu i o różnej tematyce - czasem bardziej popularne jak jQuery lub zbiory darmowych ikon, czasem bardziej ambitne, czyli lektury dla zaawansowanych lub chcących poszerzyć swoją wiedzę. Nie było jeszcze niczego związanego z pojedynczym serwisem - linki prowadziły zawsze do różnych zakamarków Internetu. Tym razem chciałbym to zmienić, [...]

Autor wpisu: bastard13, dodany: 23.07.2011 00:32, tagi: php

pre { border: #aaa solid 1px; padding: 10px; margin: 5px 5px 15px 5px; font-family: "Courier New",Courier,monospace; background-color: #f9f9f9;}pre span.key_word { color: #006699; font-weight: bold;}pre span.comment { color: #008200}pre span.variable{ color: #AA7700}p { margin: 0px;}Klasy abstrakcyjne i interfejsy są bytami, które nie tylko ułatwiają pisanie kodu, ale także sprawiają, że kod jest czytelniejszy i bardziej przejrzysty, a logika aplikacji prostsza do zrozumienia. Ich poprawne i przemyślane zastosowanie z pewnością opłaca się, gdy aplikacja zaczyna się rozrastać i/lub zmieniać.O tym co to jest interfejs oraz klasa abstrakcyjna można przeczytać w wikipedii. I choć zrozumienie tego, czym są nie jest wcale takie skomplikowane, to poprawne ich stosowanie nie jest czasami oczywiste.Nie chcę tytułować się żadnym ekspertem w tej dziedzinie, ale po pewnym czasie spędzonym nad projektowaniem aplikacji i wdrażaniem tych rozwiązań, chciałem się podzielić wnioskami.Kiedy więc powinno się stosować interfejsy i/lub klasy abstrakcyjne?Pozwolę sobie to wszystko zaprezentować na prostym przykładzie:
<?phpclass Man{  public function sleep() {/*...*/}  public function eat() {/*...*/}  public function doMenStuff() {/*...*/}}class Woman{  public function sleep() {/*...*/}  public function eat() {/*...*/}  public function doFemaleStuff() {/*...*/}} 
W powyższym przykładzie mamy dwie klasy (Man i Woman), w których jesteśmy w stanie wyodrębnić pewną część wspólną. W takiej sytuacji warto rozważyć utworzenie nadklasy abstrakcyjnej po której będą dziedziczyły obie klasy. W tym wypadku takie rozwiązanie jest idealne:
<?phpabstract class Human

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

Autor wpisu: Tomasz Kowalczyk, dodany: 22.07.2011 19:09, tagi: apache

Ostatnio miałem okazję zająć się bardziej poważnie administracją serwera (dokładniej VPSa) "od podstaw". Od podstaw, to znaczy na zupełnie zerowej instalacji Linuksa, w związku z czym trzeba było zainstalować, skonfigurować i uruchomić wszystkie niezbędne do pracy usługi. Pomimo tego, że generalnie określiłbym się jako programista mający od czasu do czasu do czynienia z zagadnieniami administracyjnymi [...]

Autor wpisu: sokzzuka, dodany: 20.07.2011 08:55, tagi: php

Kilka dni temu – 14 lipca, światło dzienne ujrzała nowa odsłona PHP 5.4 – alpha 2. Można ją ściągnąć z http://downloads.php.net/stas/ w wersji „czystej” oraz z http://windows.php.net/qa/ jako binarny plik dla Windows. Kolejna alpha przewidziana jest za 3 lub 4 tygodnie, teoretycznie powinna się pojawić 4-tego sierpnia. Najważniejsze nowości jakie przyniosła ta wersja to przede wszystkim:

O innych nowościach i zmianach możecie przeczytać w logu.

Autor wpisu: batman, dodany: 20.07.2011 08:00, tagi: css

Generator CSS3 to kolejne narzędzie ze stajni “the best of developer tools”. Jego jedynym przeznaczeniem jest generowanie składni CSS3 dla nowych bajerów takich jak zaokrąglone rogi, gradienty, transformacje, czy układ wielokolumnowy. W sumie wygenerować możemy czternaście nowych funkcjonalności. Generator znajduje się pod adresem http://css3generator.com/.

Autor wpisu: Tomasz Kowalczyk, dodany: 20.07.2011 00:02, tagi: symfony, framework, php

Witajcie ponownie. Ostatnio pracuję nad pewnym projektem opartym o symfony, w związku z czym po raz kolejny mam okazję pomęczyć się trochę z jego wszystkimi zawiłościami. Dzisiejszy problem trochę mnie zdziwił, ponieważ nie spodziewałem się tego typu restrykcji ze strony frameworka, stąd też tradycyjnie szukałem błędu nie tam, gdzie powinienem. Na szczęście udało mi się [...]

Autor wpisu: sokzzuka, dodany: 19.07.2011 15:57, tagi: php

Jak wszyscy (albo i nie) wiedzą, na co dzień korzystam z Netbeans IDE. Niedawno w pracy zmieniliśmy tryb rozwijania oprogramowania na taki, który obejmuje między innymi metodykę TDD (Test Driven Development). Wobec tego faktu, powstała konieczność tworzenia i uruchamiania testów jednostkowych. Netbeans wspiera obie te czynności zapewniając przyjemny graficzny interfejs dla wszystkich związanych z tym operacji, jak również generator plików testów dla klas. Ten mały tutorial ma pokazać, jak w kilku prostych krokach zainstalować PHPUnit oraz zintegrować go z Netbeans IDE.

Pierwsze co musimy zrobić, to zainstalowanie menedżera paczek „PEAR„. Jest on potrzebny do ściągnięcia PHPUnit wraz z zależnościami. Nie jest to konieczne do rozpoczęcia testów z PHPUnitem, natomiast, jako, że PEAR jest standardowym repozytorium bibliotek dla języka PHP warto się z nim przy okazji zapoznać.

By zainstalować menedżera paczek PEAR, należy wykonać następujące kroki:

  1. Ściągnąć instalator do katalogu PHP z aktualnie używaną wersją
  2. Otworzyć wiersz poleceń, przejść do katalogu zawierającego ściągniętą paczkę i wpisać php go-pear.phar
  3. Instalacja menedżera pakietów odbędzie się automatycznie, na końcu instalator poprosi nas o sprawdzenie wszystkich ustawień i ścieżek, z ciekawostek powiem, że jeżeli będziemy chcieli zmienić ustawienie miejsca gdzie znajduje się php.exe to wyskoczy nam ładne windowsowe okienko wyboru pliku (a jednak się da!)

W tym momencie powinniśmy mieć zainstalowanego menedżera paczek. By zainstalować PHPUnit, należy wykonać następujące kroki:

  1. W konsoli wpisać (może być konieczność przejścia do katalogu z pehapem): pear channel-discover pear.phpunit.de pear channel-discover components.ez.no pear channel-discover pear.symfony-project.com
  2. Zainstalować PHPUnit pear install -o phpunit/PHPUnit Przełącznik -o powoduje, że zostaną zainstalowane automatycznie wszystkie wymagane zależności. Podczas instalacji zdarzyło mi się, że nie można było zainstalować niektórych potrzebnych paczek, ponieważ były w wersjach „beta”. W takim przypadku należy zainstalować je ręcznie wpisując: pear install nazwa_paczki

Mając już zainstalowanego PHPUnit, możemy go skonfigurować do pracy z Netbeans:

  1. Przechodzimy do opcji i ustawiamy ścieżkęUstawianie ścieżi do PHPUnit w NetBeans
  2. Przechodzimy do właściwości bieżącego projektu i ustawiamy folder testowy (wpierw musimy go stworzyć w drzewie katalogów)Ustawienie katalogu z testami w własciwościach projektu
  3. Ustawiamy boostrap i konfigurację PHPUnitKonfiguracja PHPUnit i bootstrapPo co są nam potrzebne oba pliki ? Dzięki boostrapowi będziemy przede wszystkim ustawić własny autoloader. Natomiast configuration.xml daje nam dostęp do wielu ustawień PHPUnit
  4. Przykład boostrapa:
    function load($className) {
        $path = str_replace('_', DIRECTORY_SEPARATOR, $className);
        $path = '../src/' . $path . '.php';
        if (file_exists($path)) {
            require $path;
        }
    }
    
    spl_autoload_register('load');
    

    Mocno polecam rejestrację autoloadera przez spl_autoload_register, ponieważ zdaje się PHPUnit ma własny autoloader i jest to najprostszy sposób by nie wchodzić z nim w konflikt.

Gdy już mamy wszystko zrobione możemy cieszyć się takimi oto udogodnieniami jak:

  • generowanie szkieletów testów prawyklik na plik -> tools -> create PHPUnit test
  • automatyczne uruchamianie testów (alt+f6)
  • ładne okienko z podsumowaniem ;)  Ładne okienko z podsumowaniem

Mam nadzieję, że ktoś skorzysta z tego małego tutoriala i będzie bez przeszkód oddać się unit testom ;)

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