Autor wpisu: matipl, dodany: 25.06.2013 17:45, tagi: php
Jeśli ktoś uważał, że język PHP nie rozwija się, wegetuje… Był w błędzie. Tylko 15 miesięcy zajęło developerom wydanie stabilnego następcy wersji PHP 5.4.
A zmian, nowości oraz ewolucji nie brakuje w wersji PHP 5.5.
Opcode cache wbudowane!
Po tylu latach używania różnych alternatyw (w moim wypadku APC – czy warto korzystać?) doczekaliśmy się w końcu wbudowanego Opcode cache. Dokładniej to Zend Optimizer+ został wbudowany w jądro PHP 5.5.0. Można powiedzieć, że dzięki temu zabiegowi PHP bardzo przyspieszyło – sporo osób nie wiedziało o Opcode cache, lub nie radziło sobie z jego instalacją. Prawdopodobnie dla zwykłego programisty wrażenie jakie odniesienie po instalacji PHP 5.5 będzie niesamowite przyspieszenie działania PHP. A reszta może zapomnieć o dodatkowej instalacji APC, lub pilnowania aktualności wersji tej paczki PECL. Przykładowa konfiguracja Opcode w php.ini:
opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1
Constant dereferencing
To jest jedna z tych rzeczy, na którą czekałem. Bardzo wiele razy trzeba było tworzyć zmienną, by móc odwołać się do n-tego elementu lub znaku. Nigdy więcej
echo "Hello"[3]; // wynik: 'l' echo [1,2,3,4][2]; // wynik: '3'
List w foreach
Do tej pory sposób korzystania z list() był delikatnie mówiąc – brzydki. Było to bardzo nielogiczna operacja moim zdaniem i z niej nie korzystałem. Od nowej wersji natomiast możemy skorzystać z tej funkcji bezpośrednio w wywołaniu foreach. Przykład z wiki RFC:
$users = [ ['Foo', 'Bar'], ['Baz', 'Qux'], ]; foreach ($users as list($firstName, $lastName)) { echo 'First name: ' . $firstName . ', last name: ' . $lastName . PHP_EOL; }
Słowo kluczowe finally
W końcu finally można dodać do bloku try…catch i mamy gwarancję, że dany fragment zostanie zawsze wykonany. Do tej pory wyglądało to tak, że używaliśmy pięknej obiektówki, a później nagle trach fragment znikąd, w którym czyściliśmy niektóre operacje lub robiliśmy przekierowanie – nigdy więcej.
try { $person = new Person(); if(!$person) { throw new Exception(); } } catch (Exception $e) { // Handle exception } finally { Redirect::url('/'); }
Password Hashing API
W końcu nie musimy samemu tworzyć funkcji hashujących dla haseł, ani martwić się czy użyty algorytm jest odpowiednio dobry. Od teraz mamy do dyspozycji wbudowaną funkcję hashującą password_hash oraz funkcję sprawdzającą poprawność hasha password_verify. Domyślny algorytm to bcrypt, który generuje hash 60 znakowy. Przykład:
$hash = password_hash("rasmuslerdorf", PASSWORD_DEFAULT); if (password_verify('rasmuslerdorf', $hash)) { echo 'Password is valid!'; } else { echo 'Invalid password.'; }
Generatory
Generatory mają nam ułatwić tworzenie przeróżnych iteratorów. Tworzy się je jak normalne funkcje, ale nie używa się słowa return. Zamiast return w generatorze używamy field w następujący sposób:
function daysOfTheYear() { $year = date('Y'); $current = new DateTimeImmutable($year . '-01-01'); do { yield $current; $current = $current->modify('+1 day'); } while ($current->format('Y') === $year); } foreach(daysOfTheYear() as $dt) { // ... }
Widzicie jakie to proste? Można powiedzieć, że w yield odkładają nam się kolejne wartości dopóki funkcja nie przestanie działać. Taki generator zwraca nam najzwyklejszą tablicę.
Dodatkowo zaktualizowano GD do wersji 2.1, empty() może przyjmować dowolne wartości (również bool) oraz wprowadzono wiele usprawnień.
Autor wpisu: cichy, dodany: 22.06.2013 10:13, tagi: php
Dziś na stronie php.net zauważyłem możliwość przetestowania nowej skórki serwisu, jestem bardzo zadowolony z tego jak będzie już niedługo wyglądał
Dla tych którzy by chcieli sami przetestować dobra wiadomość wystarczy do starego linku doczepić argument beta=1 czyli np: http://www.php.net/manual/en/function.count.php?beta=1
Autor wpisu: cichy, dodany: 22.06.2013 07:23, tagi: php, symfony2
Długi czas myślałem nad serią artykułów dotyczącą Symfony2, zastanawiałem się przede wszystkim czy jestem w stanie napisać wartościowy i spójny kurs dotyczący tego frameworka. Wbrew pozorom kurs taki to nie prosta rzecz a wszystko jest utrudnione jeszcze bardziej tym, że dopiero sam jestem powiedzmy początkującym użytkownikiem SF2. Jednak po analizie tego co już wiem doszedłem do wniosku że warto spróbować i tak oto powstał ten wpis będący pierwszą częścią kursu Symfony2.
Aby całość nie była zbyt nudna postanowiłem zrealizować w kursie jakiś ciekawy projekt i tak zrodził się pomysł kolejnego oprogramowania do zarządzania listą zadań do wykonania plus tego jest taki, że już jakiś czas chciałem coś takiego napisać dla Siebie. Zdaję sobie sprawę, że skryptów tego typu jest raczej mnóstwo jednak w każdym mi czegoś brakowało więc czemu by nie zrobić tego samemu ?
Czas więc zabrać się do dzieła. Najpierw zajmiemy się skonfigurowaniem wszystkiego czego będziemy potrzebować do pracy. Osobiście pracuję na Windows 7 i pakiecie XAMPP dlatego też dla tej konfiguracji opiszę wszystkie niezbędne kroki. Jako edytora używam NetBeans 7.3
1. Pobieramy Composer
O tym oprogramowaniu już chyba każdy słyszał, jeżeli nie to wiedz, że Composer to oprogramowanie do zarządzania zależnościami dla PHP i jest na prawdę bardzo fajnym narzędziem. Aby go pobrać wystarczy wejść na: http://getcomposer.org i pobrać wersję dla swojego systemu. Po zainstalowaniu jesteś gotów aby przejść do punktu drugiego.
2. Cygwin
Cygwin tak naprawdę, nie jest niezbędny ale bardzo go lubię. Pobrać go możesz z http://www.cygwin.com Zazwyczaj instalując Cygwin wybieram te same pakiety:
- git
- wget
- curl
- bash
Pozwala to na raczej komfortową pracę z konsolą oczywiście jeżeli potrzebujesz czegoś innego lub w ogóle nie chcesz używać Cygwin to tak jak wspominałem nie jest to krok niezbędny.
3. Symfony
Wreszcie jesteś gotów aby pobrać framework. Opiszę tutaj proces tworzenia nowego projektu z wykorzystaniem wbudowanego w NetBeans wsparcia dla Symfony2. Wszystko co musisz zrobić można podzielić na serię kroków
- Wejdź na http://symfony.com a następnie pobierz najnowszą wersję stabilną frameworka (wybierze opcję without vendors). Ponieważ Composer jest zainstalowany możesz sobie pozwolić na tworzenie projektów bez potrzeby dołączania na starcie dodatkowych komponentów. Zapisz archiwum w dowolnym folderze i zapamiętaj jego położenie
- Otwórz NetBeans, przejdź do Tools -> Options -> PHP a następnie wybierz zakładkę Symfony2. Kolejnym krokiem jest wskazanie za pomocą przycisku Browse paczki, którą przed chwilą pobrałeś. Upewnij się także, czy opcja Ignore cache Directory by Default jest zaznaczona, pozwoli to na pominięcie katalogu cache w drzewie naszego projektu.
I to właściwie koniec głównej konfiguracji następnym krokiem jaki musisz i zapewne chcesz wykonać jest stworzenie nowego projektu
4. Tworzenie projektu
A więc NetBeans już czeka w gotowości, wszystko co musisz zrobić to utworzyć nowy projekt poprzez menu File -> New Project następnie wybierz rodzaj projektu: PHP Application i kliknij Next.
Autor wpisu: cichy, dodany: 21.06.2013 05:35, tagi: php
Dziś postanowiłem odświeżyć swoje kanały RSS, mniej więcej taki nagłówek przywitał mnie ze strony PHP.net: “PHP 5.5.0 Release” czym prędzej kliknąłem w link aby przeczytać co też nowego znalazło się w aktualizacji i muszę przyznać nie zawiodłem się.
A więc do rzeczy co nowego dostaliśmy wraz z nowym numerkiem wersji ? okazuje się, że całkiem sporo pomimo że lista zmian nie ma 50 stron to jednak jest o czym poczytać. Poniżej lista kluczowych zmian:
- Dodanie generatorów i “współprogramów”
- Dodanie obsługi słowa kluczowego finally
- Nowe uproszczone API do hashowania haseł
- Obsługa składni w postaci ClassName::class pozwalając na dostęp do w pełni rozwiniętej nazwy klasy (łącznie z przestrzenią nazw)
- Możliwość użycia dowolnego wyrażenia jako argumentu dla funkcji empty
- Obsługa nieskalarnych kluczy dla foreach
- foreach zyskał również wsparcie dla list()
Pojawiły się również zmiany mające wpływ na kompatybilność wsteczną, wśród nich możemy przeczytać między innymi o porzuceniu wsparcia dla windows XP i 2003 jak i o usunięciu funkcji PHP_logo_GUIDs (o której dowiedziałem się z changelog ).
Oczywiście to nie wszystkie zmiany ale myślę że warto skupić się na tych kluczowych elementach, osoby które chciałyby przeczytać pełną listę zmian moga ją znaleźć pod adresem: http://php.net/ChangeLog-5.php#5.5.0 osobiście uważam, że nowa wersja PHP jak najbardziej wnosi kilka ciekawych elementów, zwłaszcza podoba mi się konstrukcja z ::class która z pewnością ułatwi tworzenie obiektów bez konieczności podawania pełnego rozwinięcia przestrzeni nazw lub tworzenia aliasów. Również możliwość przyjęcia dowolnego wyrażenia przez empty wygląda zachęcająco zwłaszcza tam gdzie chodzi nam jedynie o sprawdzenie zwróconej przez metodę / funkcję wartości
Autor wpisu: vonski, dodany: 20.06.2013 22:30, tagi: php
Doczekaliśmy się kolejnego wydania jednego z najpopularniejszych języków (najpopularniejszego?) skryptowych. Poniżej szybki przegląd zmian jakie nadchodzą razem z PHP 5.5.0:
- Dodano słowo kluczowe finally, co za tym idzie ułatwi to nam obsługę wyjątków
- Dodano wsparcie dla nieskalarnych operatorów w foreach
- Możliwość użycia empty() bezpośrednio na wyniku działania funkcji oraz innych wyrażeń
- Uproszczono proces hashowiania haseł
- Dodano wsparcie dla list() w foreach
- Biblioteka GD została uaktualniona do wersji 2.1
Więcej można znaleźć na oficjalnej stronie PHP.