Wpisy na blogu oznaczone jako php

Zarządzanie konstrukcją obiektów w PHP z komponentem DependencyInjection Symfony2

Komponent DependencyInjection Symfony2 to PHPowa implementacja kontenera usług (z ang. Dependency Injection Container). Dodatkowo, komponent zawiera kilka przydatnych narzędzi, pozwalających na import i eksport definicji w różnych formatach (np XML).

Symfony 2.0 wydane!

Dziś, 28go lipca 2011, wydano stabilną wersję Symfony 2. Czekaliśmy nieco dłużej niż planowano, ale było warto!

Wyszukiwanie plików i katalogów w PHP z komponentem Finder Symfony2

Komponent Finder sprawia, że wyszukiwanie plików i katalogów w PHP przestaje być męczące. Pozwala na filtrowanie po nazwie, wzorcu, rozmiarze, dacie modyfikacji i kilku innych kryteriach. W wyniku dostaniemy listę obiektów klasy SplFileInfo, która oferuje wygodny interfejs do pozyskiwania szczegółów na temat plików i katalogów.

Tworzenie sparametryzowanych komend w PHP z komponentem Console Symfony2

Komponent Console Symfony2 ułatwia tworzenie sparametryzowanych komend w PHP. Odpowiada za niewdzięczną pracę parsowania wejścia i pisania na wyjście.

Automatyczne ładowanie klas w dowolnym projekcie PHP z komponentem ClassLoader Symfony2

ClassLoader to komponent Symfony2, który odpowiada za automatyczne ładowanie klas zgodnie ze standardem PSR-0. Poza współpracą z kodem używającym przestrzeni nazw (ang. namespace), działa ze staromodnym już standardem PEAR (używanym też w Zendzie). Komponent sprawdza się równie dobrze poza Symfony.

Konfiguracja środowiska deweloperskiego PHP z Nginx w Ubuntu 11.04

Opisywałem już jak przygotować PHP do pracy z Nginx w Ubuntu 10.04. W Ubuntu 11.04 (Natty Narwhal) procedura jest dużo prostsza za sprawą PHP 5.3 i obecnego w nim php-fpm. Ponieważ w międzyczasie udało mi się też ulepszyć swoją konfigurację Nginx dla PHP, postanowiłem opisać temat jeszcze raz.

Konfiguracja Nginx dla projektów Symfony

Z okazji wydania wersji 1.0.0 odświeżyłem nieco swoją wiedzę o Nginx. Od czasu, kiedy po raz pierwszy go konfigurowałem, wzbogacił się o kilka nowych dyrektyw i zmiennych. Dzięki temu mogłem uprościć swoją konfigurację dla projektów Symfony (zarówno symfony 1.x jak i Symfony2).

Automatyczne publikowanie aplikacji Symfony na wiele serwerów z Capifony

Capifony to zestaw recept Capistrano do publikowania aplikacji napisanych w symfony lub Symfony2. Multistage jest rozszerzeniem Capistrano. Ułatwia publikację kodu na kilka serwerów, które różnią się nieco konfiguracją lub procesem publikacji.

Nowości w komponencie formularzy Symfony2

Refaktoryzacja formularzy to ostatnia z wielkich zmian i najbardziej oczekiwany pull request w Symfony2. Prace nie są jeszcze w pełni skończone, ale kod jest gotowy do połączenia z główną gałęzią. Jak tylko zmiany zostaną zaakceptowane (lub odrzucone) możemy spodziewać się wydania bety.

Nauka Symfony2 przez pisanie testów jednostkowych

Podczas Hacking Day na Symfony Live postanowiłem spróbować sił i po raz pierwszy napisać kilka testów dla Symfony2. Już od jakiegoś czasu jestem niemal fanatykiem TDD, a ostatnio mocno interestuję się BDD. Testy jednostkowe z pewnością nie są mi obce. Nie podejrzewałem jednak, że pisanie testów dla istniejącego kodu może sprawić tyle radości.Odkryłem też, że testowanie jest doskonałą metodą na naukę Symfony2.

Symfony Live 2011

Piszę tego posta w drodze powrotnej z drugiej już, międzynarodowej konferencji Symfony Live. Do Paryża zjechało około 500 programistów z całego świata. Naliczyłem 8 osób z Polski (podejrzewam, że było nas więcej; zauważyłem, że Polacy słabo się integrują).

Tydzień przed Symfony Live 2011

Został już tylko tydzień do tegorocznego Symfony Live w Paryżu. Już wiemy, że Symfony 2.0 nie ujrzy światła dziennego na konferencji. Możemy liczyć na stabilne API, jednak ostateczne wydanie planowane jest na koniec marca. Mimo to konferencja zapowiada się ekscytująco.

Doctrine2 i Symfony2

Wciąż poznaję Symfony2. Nadszedł czas na wybranie i przetestowanie ORMa. Symfony2 jest wystarczająco elastyczne, aby współpracować z praktycznie dowolnym (nowoczesnym) PHPowym ORMem. Równocześnie dostajemy rozsądną domyślną opcję w postaci Doctrine2.

Jak wygenerować czysty projekt Symfony2?

Symfony2 nie jest jeszcze skończone, a jego wydanie planowane jest na marzec tego roku. Nie mogąc już dłużej czekać, zacząłem bawić się tym frameworkiem nieco poważniej.Ponieważ lubię wiedzieć co się dzieje, po kilku testach z gotowym szkieletem projektu (tzw sandbox) zapragnąłem wygenerować czysty.

Symfony i APC

Do niedawna byłem wyłącznie użytkownikiem XCache (jeśli chodzi o akceleratory PHP). Ostatnio potrzebowałem użyć APC w aplikacji symfony. Poszło mi całkiem gładko jako, że framework bardzo ładnie integruje się z najpopularniejszymi rozwiązaniami tego typu.

Instalacja PostgreSQL w Ubuntu 10.04

PostgreSQL jest rozbudowanym i niezawodnym obiektowo-relacyjnym systemem baz danych. Stanowi doskonałą alternatywę dla popularnego MySQLa. PostgreSQL jest tak samo łatwy w obsłudze, sprawuje się lepiej i oferuje więcej.

Instalacja MySQL w Ubuntu 10.04

MySQL to jednen z popularniejszych relacyjnych systemów baz danych, który jest szeroko stosowany przy budowie aplikacji PHP. Jest dość łatwy w konfiguracji i obsłudze. Oto krótki opis instalacji MySQL w najnowszej wersji Ubuntu.

Skakanie do definicji klas, metod i zmiennych w vimie przy pomocy exuberant ctags

Dzięki exuberant ctags możemy skakać do definicji klas, metod, zmiennych i innych konstrukcji językowych w vimie. Narzędzie potrafi wygenerować plik z indeksem słów kluczowych (tagów) dla jednego spośród 41 wspieranych języków programowania. Indeks ten jest używany w edytorach typu vim do szybkiego odnajdywania powiązanych słów kluczowych.

Konfiguracja środowiska deweloperskiego PHP z nginx w Ubuntu 10.04

Nginx to lekki serwer http i proxy. Potrafi także działać jako load balancer. Stanowi poważną alternatywę dla przeładowanego apache. W środowisku prodykcyjnym nginx zaskakuje wydajnością oraz małym zużyciem pamięci. W warunkach deweloperskich cenię jego prostą i elastyczną konfigurację. Oto opis jak szybko przygotować środowisko deweloperskie PHP z nginx w Ubuntu 10.04 (Lucid Lynx).

Automatyczne publikowanie aplikacji PHP

Aplikacje PHP publikowane są na serwery na wiele różnych sposobów (pisząc "publikacja" mam na myśli anglojęzyczne słowo "deploy"). Niektórzy używają w tym celu systemów kontroli wersji takich jak Subversion. Inni po prostu kopiują pliki przy pomocy FTP, SSH czy rsync. Jest tylko jeden problem ze wspomnianymi technikami. Wszystkie są podatne na błędy. Transfer plików to tylko niewielka część całego procesu publikacji, czy aktualizacji aplikacji PHP. Często potrzebna jest dodatkowa konfiguracja, czy uruchomienie skryptów migracyjnych.

Symfony 2 opublikowane (podczas Symfony Live 2010)

Podczas pierwszej międzynarodowej konferencji Symfony Live, Fabien Potencier upublicznił Symfony 2. Nowoczesne podejście i sprawdzone praktyki, podpatrzone w innych pierwszoligowych projektach Open Source, tworzą wybuchową miksturę, która ma szansę zrewolucjonizować świat PHP.

Symfony Live 2010

W dniach 16-17 lutego odbyła się pierwsza międzynarodowa konferencja Symfony Live. Była to nie lada gratka dla użytkowników frameworka symfony, w której miałem wielką przyjemność uczestniczyć. Wiele ciekawych rzeczy dzieje się obecnie wokół symfony (i Symfony (;). Oto skrót z tego co wydarzyło się na konferencji, a także przedsmak tego co nas czeka w niedalekiej przyszłości.

Konferencja PHP North West 2009

Tydzień temu miałem okazję uczestniczyć w konferencji PHP North West w Manchester. Wszystko zaczęło się imprezą w pubie Lass O' Gowrie w piątkowy wieczór przed konferencją. Wielką przyjemnością było dla mnie poznać i rozmawiać z tyloma ludźmi zaangażowanych w społeczność PHP. Wszyscy, bez względu na doświadczenie, byli przyjaźni i chętni do wymiany punktu widzenia. Nieformalne spotkania przy piwie i grach wideo niewątpliwie sprzyjają poszerzaniu grona znajomych o wiele lepiej, niż krótkie rozmowy między konferencyjnymi prezentacjami.

Symphony CMS na nginx

Zdecydowałem się przetetsować CMS o nazwie Symphony z dwóch powodów. Pierwszym były dokładnie określone fazy tworzenia stron internetowych, które wymusza sam CMS. Drugim powodem był oparty o XSLT system szablonów. Jak większość aplikacji PHP, Symphony zostało stworzone głównie z myślą o serwerze apache. Ponieważ od pewnego czasu preferuję używać nginx-a, napotkałem na małe problemy konfiguracyjne.

Cachowanie stron internetowych za pomocą skryptu bash i pliku .htaccess

Powierzono mi ostatnio zadanie uczynienia kompletnie niewydajnej strony www na tyle wydajną, aby dać zespołowi czas na jej naprawienie. Nie znałem kodu i technologii wspomnianej aplikacji, nie miałem też wystarczającej ilości czasu na jej poznanie.

PHP 5.3 zostało wydane

PHP 5.3 zostało wydane. Wersja była długo oczekiwana z uwagi na wiele usprawnień, nowych funkcjonalności i poprawionych błędów. PHP 5.3 to prawie 6, tylko bez wsparcia dla Unicode. Oto lista rzeczy, na które szczególnie czekałem lub wydały mi się interesujące.

Inicjatywa na rzecz standardów PHP (PHP Standards Initiative)

Podczas tegorocznej konferencji php|tek w Chicago spontanicznie zorganizowano spotkanie na temat standardów kodowania w PHP. Uczestniczyła w nim grupa ludzi pracujących nad kilkoma znaczącymi projektami PHP: Zend Framework, PEAR, Solar, Agavi, CakePHP, symfony i phing. Niestety nie było mi dane uczestniczyć w konferencji, ale znaleziona na blogu Left On The Web informacja o spotkaniu, bardzo mnie ucieszyła.

Recenzja: php|architect's Guide to PHP Design Patterns

Wzorce projektowe sprawdzają się bez względu od użytej technologii, jednak sposób implementacji często różni się w zależności od tego co oferuje dany język programowania. Ksiązka "php|architect's Guide to PHP Design Patterns" autorstwa Jasona Sweat'a przedstawia kilkanaście wzorców projektowych przydatnych przy pisaniu aplikacji internetowych w PHP 4 i 5. Chociaż tematyką książki są wzorce, to stanowi ona także świetny przykład zastowania metodyki Test Driven Development (TDD).

Parsowanie stron internetowych z użyciem sfWebBrowser i SimpleXML

sfWebBrowser to klasa emulująca wywołania przeglądarki internetwej. Dzięki niej możemy zaprogramować nawigację po stronie www przy pomocy przyjemnego, obiektowego interfejsu. Odpowiedź może zostać zwrócona jako element SimpleXML, co umożliwia wykonywanie zapytań xpath na parsowanym dokumencie. Niestety strony www rzadko są poprawnymi dokumentami XML. W większości przypadków sfWebBrowser raczej wyrzuci wyjątek, niż zwróci coś interesującego. Jest jednak sposób, aby temu zaradzić.