Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Piotr Śliwa, dodany: 07.09.2014 23:05, tagi: php

Obiekty* są fajne, dzięki nim można zrobić miłe w użyciu api. Obiekty są fajne, bo dają nam narzędzia do reużywalności kodu. Obiekty są fajne przede wszystkim dlatego, bo dają nam możliwość ukrywania implementacji i hermetyzacji danych.

PHP to przede wszystkim język dwuparadygmatowy, powstał jako język strukturalny. Następnie dodano do niego bardzo kulawe wsparcie do programowania obiektowego (PHP4), które naprostowano w PHP5. Kolejnym krokiem było dodanie trochę mniej kulawego wsparcia dla domknięć (Closure) w PHP 5.3, które częściowo zostało naprostowane w PHP 5.4.

Ale lepszy rydz niż nic. Ten rydz nie jest taki zły, dzięki niemu programowanie funkcyjne w PHP jest łatwiejsze i faktycznie ma sens.

A o co chodzi?

Nie chcę sypać tutaj definicjami, ale absolutne minimum musi być. W programowaniu funkcyjnym funkcja jest obywatelem pierwszej kategorii - to znaczy że można ją przypisać do zmiennej, wykonywać operacje na niej, przekazywać funkcje jako parametr do funkcji itp. Analogicznie do obiektu w OOP - można przypsać obiekt do zmiennej, wywołać jakąś metodę na nim i przekazać ten obiekt jako argument do jakieś metody / funkcji. W php przypisanie do zmiennej i przekazanie jako parametr można zrealizować tak:

//przypisanie do zmiennej
$removeDigits = function($s){
    return preg_replace('/\d/', '', $s);
};

//przekazanie jako argument
$words = array_map($removeDigits, ['śaJ123', '32i1', 'aisogłaM321']);

Jest to mały, prosty kawałek kodu zrealizowany w sposób funkcyjny: mamy dane na wejściu w postaci tablicy stringów, a następnie jest wywołana funkcja, która korzystając z innego parametru (funkcji $removeDigits), wywołuje operacje na danych wejściowych. Kod ten oczywiście można zrealizować w sposób strukturalny:

$words = array();
foreach(['śaJ123', '32i1', 'aisogłaM321'] as $word) {  
    $words[] = preg_replace('/\d/', '', $word);
}

Obiektowo również:

class Word {  
    private $word;
//... 50 lini później

$firstChars = $stringCleaner->clean([new Word('śaJ123'), new Word('32i1'), new Word('aisogłaM321')]);

Jak widać, obiekty nie wszędzie pasują... ;)

Operacje na funkcjach

W powyższym przykładzie nie pokazałem w jaki sposób można operować na funkcjach - trzeba nadrobić zaległości. Wyobraźmy sobie, że nie dość że chcemy usunąć cyfry, to jeszcze chcemy odwrócić każdy wyraz (za pomocą np. strrev).

$removeDigits = function($s){
    //dodane strrev
    return strrev(preg_replace('/\d/', '', $s));
};

$words = array_map($removeDigits, ['śaJ123', '32i1', 'aisogłaM321']);

Ok, nazwa $removeDigits już nie jest aktualna, nowa nazwa będzie wymagała zastosowanie operatora logicznego && - to jest zapach że funkcja ma więcej niż jedną odpowiedzialność.

Jak przyjrzymy się bliżej i jeśli uważaliśmy na analizie matematycznej, to zauważymy operację zwaną składaniem funkcji.

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

Autor wpisu: Kamil Adryjanek, dodany: 01.09.2014 10:27, tagi: php

A couple of days ago the PHP Development Team have introduced the new PHP 5.6.0 version. This major release comes with some nice new features, some backward incompatible changes and many improvements. Full list of improvements with details can be found on php.net.

Post PHP 5.6 is here! pojawił się poraz pierwszy w Kamil Adryjanek.

Autor wpisu: matipl, dodany: 25.08.2014 16:24, tagi: php

php-logoJuż w najbliższy czwartek będziemy mogli cieszyć się stabilną wersją PHP 5.6. Mam nadzieję, że będzie stabilna, ale na Waszym miejscu wstrzymałbym się przynajmniej do wersji PHP 5.6.2 zanim zaczniecie korzystać z niego produkcyjnie.

W stosunku do wersji PHP 5.5.* jest tylko niewielki brak kombatybilności wstecznej, który w 98% przypadków nie powinien dotyczyć Waszego kodu.

Zalet jest o wiele więcej, szczególnie porządku w języku oraz delikatnego przyspieszenia wykonywania kodu. Najbardziej cieszą dwie zmiany:

  • możliwość wielokrotnego korzystania z php://input podczas wykonywania kodu
  • możliwość importu tylko pojedynczej metody z klasy:
    use function MyClass\importMethod;
     
    importMethod();
    

Zatem czekamy…

Autor wpisu: zleek, dodany: 22.08.2014 08:48, tagi: php

Zend Framework 2 oferuje kilka różnych adapterów pozwalających na cache poszczególnych elementów, które chcemy składować w pamięci podręcznej. Poniżej przedstawię sposób konfiguracji cache opartego na systemie plików. Konfiguracja adaptera W pierwszym kroku musimy ustawić konfigurację adaptera, co dokonuje się w pliku Module.php danego modułu. Jak widać na początku tworzymy obiekt typu Zend\Cache\Storage\Adapter\Filesystem, dla którego następnie […]

Autor wpisu: bastard13, dodany: 21.08.2014 01:01, tagi: design, oop

kolejna wizyta w świecie wzorców

Zapewne już trochę kodu mieliście okazję stworzyć odkąd pisałem o dekoratorze. Mam nadzieję, że przez ten czas mieliście możliwość go wypróbować i sprawdzić jak daje radę w świecie prawdziwych problemów. Następnym wzorcem, z którym spróbujemy się zmierzyć będzie wizytator.Muszę uczciwie się przyznać, że moje pierwsze z nim spotkanie, gdy wertowałem strony Wzorców Projektowych to nie była miłość od pierwszego wejrzenia i trochę czasu musiało minąć zanim w pełni doceniłem korzyści płynące z jego wykorzystania. Ale jak tak w ogóle ten wizytator wygląda? Gdzie i po co się go stosuje?Wierzę, że na te pytania uda mi się odpowiedzieć w poniższych akapitach.Czytaj więcej »

Autor wpisu: matipl, dodany: 19.08.2014 07:29, tagi: php

php-logo

Musiał w końcu nadajeść ten dzień. Mimo, że jest cześć serwerów korzysta z PHP 5.3, a niektóre aplikacje mogą maksymalnie współpracować z PHP w wersji 5.2 to linia 5.3 została właśnie wstrzymana.

Ten fakt nie dziwi, obecnie rozwijane są 2 wersje stabilne:

A do tego lada dzień ujrzymy PHP 5.6, które w tej chwili jest dostępna już w wersji RC.

Z mojego doświadczenia wynika, że nie ma co się obawiać aktualizacji PHP 5.3 na nowszą linię. Mogą wyłącznie pojawić się problemy, gdybyście chcieli przejść z PHP 5.2 do PHP 5.3 lub nowszego. Niestety nie wszystkie aplikacje są w stanie sobie z tym poradzić i migracja wymaga nie tylko pracy administratora, ale również programisty.

Autor wpisu: zleek, dodany: 04.08.2014 09:44, tagi: php, zend_framework

Gdy tworzymy dokumenty z wykorzystaniem Zend_Pdf czasami wygodniej jest wykorzystać istniejący szablon w formacie pdf (będący np. papierem firmowym), niż budować cały dokument ręcznie. Zend Framework daje nam narzędzie, które pozwala szybko i bezproblemowo zamieścić nasz szablon na wszystkich stronach dokumentu. Można to zrobić nastepującym kodem: Powyżej znajduje się przykład dodanie pojedynczej strony wykorzystującej szablon. […]
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.