Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Tomasz Kowalczyk, dodany: 03.07.2013 11:46, tagi: php, doctrine

Pracuję od jakiegoś czasu nad projektami, w których istotną część stanowią (autorskie) konsolowe narzędzia do zarządzania wewnętrznymi procesami aplikacji. Aktualizacja danych, wysyłka maili, itp. – każdej operacji odpowiada polecenie i odpowiedni zestaw argumentów, dzięki czemu zamiast pisania kodu w pocie … #LINK#

Autor wpisu: matipl, dodany: 25.06.2013 17:45, tagi: php

php-logoJeś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ń.

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

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

  1. 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
  2. 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.

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

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:

  1. Dodanie generatorów i “współprogramów”
  2. Dodanie obsługi słowa kluczowego finally
  3. Nowe uproszczone API do hashowania haseł
  4. 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)
  5. Możliwość użycia dowolnego wyrażenia jako argumentu dla funkcji empty
  6. Obsługa nieskalarnych kluczy dla foreach
  7. 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.

Autor wpisu: nospor, dodany: 13.06.2013 08:37, tagi: php

Często na Waszych stronach wstawiacie jakiś system szablonów, np. Smarty. A potem biegacie po forach z pytaniami a jak zrobić to a jak tamto w takim Smarty. Dodatkowo taki system to jedna wielka kobyła, która na dobrą sprawę w niczym nie usprawnia życia, a wręcz czasami komplikuje. Często wpadacie na pomysł, by napisać własny system szablonów. Ale to również nie jest zbyt dobry pomysł. Zadam Wam pytanie: ale po co w ogóle bawić się w system szablonów? Odpowiecie zapewne: by oddzielić wygląd aplikacji od jej logiki. Tak, po to. Ale po co bawić się w system szablonów, który oprócz wprowadzanie własnej nowej składni nie robi tak naprawdę nic użytecznego. Może poprostu wprowadzić system, który będzie operował jedynie na czystym HTML oraz PHP. Wówczas nie trzeba poznawać żandej nowej składni ani bawić się w dzikie parsowania szablonów. I taką właśnie klasę widoku chcę Wam dziś pokazać.
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.