Wzorce projektowe – łancuch odpowiedzialności (chain of responsibility)

Filed Under (php, programowanie) by Wojciech Soczyński on 29-08-2010

Tagged Under : , , , , ,

Dzisiejsze spotkanie z Zend’owym Front Controllerem i pluginami natchnęło mnie do kilku przemyśleń. Jednym z nich jest sposób jego działania. Aby w jakiś sposób ingerować w działanie FC należy albo napisać własną implementację jednej z koniecznych do życia przez FC klas (Dispatcher, Router etc) albo w przypadku mniejszych potrzeb stworzyć nowy plugin. Plugin’y są klasami, które reagują na określone zdarzenia typu preDispatch, postDispatch etc. Rozwiązanie to funkcjonuje i ma się dobrze. Wiem również ze słyszenia, że w innych frameworkach stosuje się podobne rozwiązania ale oparte np na sygnałach czy event handler’ach.
Read the rest of this entry »

Nowości z php.internals – adnotacje

Filed Under (php, programowanie) by Wojciech Soczyński on 25-08-2010

Tagged Under : , , ,

W niedawnym wpisie na liście php.internals, Pierrick Charron poinformował o stworzeniu patch’a dodającego obsługę adnotacji do php. Patch ten jest napisany zgodnie z odpowiednim RFC. Rozszerza on składnie języka, dodaje obsługę do refleksji i dwie nowe klasy ‘ReflectionAnnotation’ i ‘Inherited’ – pierwsza umożliwia tworzenie własnych adnotacji, natomiast druga umożliwia dziedziczenie adnotacji przez klasy dziedziczące z jakiejś klasy.

Jak dla mnie to ciekawy dodatek do języka, natomiast ja chętnie bym również widział jakąś implementacje Pythonowych dekoratorów o których już wcześniej wspominałem. A wy co o tym sądzicie ?

Nowości z php.internals – release cycles

Filed Under (php, programowanie) by Wojciech Soczyński on 10-08-2010

Tagged Under : , ,

W jednym z wpisów na php.internals w dyskusji o dacie wersji alpha releasu kolejnej wersji php (5.4 ?) Johannes Schlüter który jest release managerem dla brancha 5.3, zaproponował by publikacje nowych wersji języka przeprowadzać w pewnych konkretnych cyklach.
Read the rest of this entry »

Domain Driven Design pt.3 – ciekawe linki

Filed Under (php, programowanie) by Wojciech Soczyński on 10-08-2010

Tagged Under : , , ,

Nie jest to dokładnie kolejna część cyklu o Domain Driven Design, ponieważ nie zawiera żadnej konkretnej treści. Umieszczam tutaj kilka linków do artykułów o DDD wraz z krótkim opisem, które mogą okazać się przydatne dla wszystkich zainteresowanych tą metodyką. Życzę miłego czytania ;)
Read the rest of this entry »

Generatory w PHP

Filed Under (php, programowanie) by Wojciech Soczyński on 10-08-2010

Tagged Under : , , ,

Dzisiaj kolejny post z nieoficjalnej serii „zaprzyjaźnij się z PHP” :P a dokładnie z php 5.3. Opiszę w nim jak zbudować generator. Czym jest generator ? Jak wyjaśnia nam Wikipedia generator jest rodzajem Iteratora, który zamiast zwracać wygenerowaną wcześniej zawartość oblicza nam ją wraz z kolejnym przebiegiem, dzięki czemu nie musimy od razu pobierać np. całej zawartości jakiejś kolekcji.
Read the rest of this entry »

Nowości z php.internals – return type hint

Filed Under (php, programowanie) by Wojciech Soczyński on 30-07-2010

Tagged Under : , , ,

W jednym z niedawnych wpisów na internalsach, Felipe Pena przedstawił propozycję wprowadzenia typowania zwracanych zmiennych przez funkcje. Jest to funkcjonalność którą znamy z języków statycznie typowanych, gdzie każda funkcja musi mieć zdefiniowany typ zwracanej zmiennej. Propozycja opublikowana jako RFC zawiera patch, który każdy może przetestować u siebie, jeżeli wie jak kompilować php ze źródeł. Patch jest kompatybilny ze znajdującym się w trunku patchem dotyczącym typowania argumentów funkcji (dostępne są pseudotypy scalar i self bodajże).

Przykład (skopiowany z RFC):

function scalar abc($x = NULL) {
	return $x;
}

var_dump(abc(1));  // int(1)
var_dump(abc(1.)); // float(1)
var_dump(abc());
/*
PHP Catchable fatal error:  The returned value must be of the type scalar,
called in ... on line 9 and returning in ... on line 4
*/

Jak dla mnie sam feature może być, natomiast składnia nie do końca mi się podoba, wg mnie jest mało czytelna, wolałbym coś a’la ActionScript3:

function foo($arg):bar {
    return $arg+1;
}

A Wy co sądzicie o tym ficzerze ?

Domain Driven Design pt.2 – rodzaje obiektów

Filed Under (php, programowanie) by Wojciech Soczyński on 28-07-2010

Tagged Under : , , , ,

W poprzednim artykule z serii Domain Driven Design przedstawiłem pole zastosowań metodologii DDD, jej otoczkę w postaci zarządzania projektem oraz język domeny (DSL). W dzisiejszym wpisie chciałbym natomiast przedstawić metodologię DDD w sposób bliższy implementacji.
Read the rest of this entry »

Zrozumieć JavaScript

Filed Under (javascript, php, programowanie) by Wojciech Soczyński on 25-07-2010

Tagged Under : , , ,

Rozmawiając ze znajomymi, którzy również są webdeveloperami, zauważyłem, że JavaScript jest jednym z najbardziej znienawidzonych języków. Jest kilka tego powodów, najważniejsze z nich to brak jednolitej obsługi w w przeglądarkach internetowych oraz brak klas. Pierwszy powód jest bezdyskusyjny, chociaż można zauważyć, że z upływem czasu jest coraz lepiej i minęły już te dni gdy pisało się kod osobno dla każdego browsera. Obsługa JavaScriptu jest coraz lepsza wśród przeglądarek i nawet Microsoft wziął się na poważnie do roboty z IE9. Natomiast argument o braku klas w Javascripcie uważam za trochę chybiony i wynikający z braku wiedzy o modelu obiektowym jaki został zaimplementowany w tym języku.
Read the rest of this entry »

Nowości z php.internals – domknięcia i $this

Filed Under (php, programowanie) by Wojciech Soczyński on 23-07-2010

Tagged Under : , , , ,

Na jednym z ostatnich wpisów na internalsach wyszło na jaw, że w najbliższej większej wersji php (5.x lub 6), do obecnej funkcjonalności domknięć (closures) dodana zostanie obsługa $this. Obsługa ta będzie zaimplementowana tak jak opisano w podpunkcie A) odpowiedniego RFC. Oznacza to, że zmienna $this będzie mogła być wykorzystywana tylko w domknięciu stworzonym wewnątrz jakiegoś obiektu i będzie zawsze wskazywała na obiekt w którego kontekście została utworzona. Otwiera to trochę nowych możliwości związanych np z delgacjami – tworzeniem event handlerów itp.

Dla mnie pozostaje jednak pewien niedosyt związany z tym rozwiązaniem. Szkoda, że nie wprowadzono możliwości bindowania zmiennej $this (i innych zmiennych) do aktualnego kontekstu tak jak opisano w zmodyfikowanej propozycji A)

Przy okazji chciałem poinformować, że pokazała się wersja php 5.3.3. Oprócz poprawek błędów została zmieniona jedna ważna rzecz – metody o nazwie takiej samej jak klasa nie są już traktowane jak konstruktory – w przypadku kodu który jest napisany z użyciem namespace’ów – jest to moim zdaniem dobry krok w kierunku usuwania historycznych zaszłości w języku. Mam nadzieje, że w przyszłych wersjach całkowicie usunięte zostaną konstruktory w starym stylu.

Jakie jest Wasze zdanie o wprowadzonych zmianach ?

Singleton – alternatywne podejście

Filed Under (php, programowanie) by Wojciech Soczyński on 14-07-2010

Tagged Under : , , , ,

Pewnego dnia, jadąc w nocy na rowerze zamyśliłem się na temat klas, funkcji i obiektów. Przemyślenia te zawiodły mnie do pewnych ciekawych wniosków.
Read the rest of this entry »