PHP 5.4.0RC1 wydane

2011-11-10 została wydana pierwsza wersja kandydująca PHP 5.4.

Szczegóły związane z tym wydaniem znajdziecie tutaj, a pełną listę zmian tutaj.

Przyszła stabilna wersja wprowadza kilkanaście zmian wartych uwagi. Od drobnych takich jak domyślne kodowanie UTF-8 jak i bardziej rewolucyjnych traits (jest to mechanizm umożliwiający ponowne użycie kody w zupełnie nowy sposób).

Czym jest trait? Jest co grupa kodu lub jego część, który może występować w klasie lub poza nią i może być traktowana jak szablon. Słowa nie odzwierciedlają jednak siły tego mechanizmu dlatego najlepiej zapoznać się z przykładami użycia na stronie opisującej traits.

Do czego może się to przydać? Do zredukowania ilości kodu co poprawia jego czytelność, zmniejsza ilość błędów oraz przyspiesza proces tworzenia oprogramowania. Przykładowo jeśli mamy bazę danych i do niej zbudowany model to często powtarzalny kod można wydzielić do traits-ów. Przykładem może być obsługa kolumny status, do której często dopuszczalne wartości są zaszyte w kodzie, tak jak ich opisy.

Przykładowy kod klasy (niepełny), który może się często powtarzać.

class Product {
  const STATUS_OK = 1;
  const STATUS_ERROR = 2;

  private statis $arrStatusDescriptions = array(
    self::STATUS_OK      => 'ok',
    self::STATUS_ERROR   => 'błąd',
  );

  public static function getStatusDescriptions()
  {
    return self::$arrStatusDescriptions;
  }

  public static function hasStatusDescription( $intStatusId ) {}

  public static function getStatusDescription( $intStatusId ) {}

  public getStatusAsString() {}
  .
  .
  .
}

Podobnie może wyglądać jeszcze dużo klas w tej samej aplikacji. Więc gdyby przenieść metody getStatusDescriptions, hasStatusDescription, getStatusDescription, getStatusAsString do traits-ów o nazwie StatusTrait to kod nie powtarzał by się oraz byłby łatwo rozszerzalny i przejrzysty.

W nowej wersji PHP jest jeszcze kilka ciekawych zmian, ale opiszę je przy okazji wydawania kolejnych wersji kandydujących.

Nowa wersja PHP to nie tylko nowe możliwości, ale i nowe głupoty. Jedną z największych jest fatal error przy przeciążaniu konstruktorów abstrakcyjnych o różnych parametrach. Jeśli to zmiana zostanie zachowana to będzie ona największą przeszkodą podczas aktualizacji aplikacji do nowej wersji.

Autor: Tomasz Rutkowski
Data publikacji: 2011-11-15 11:40

Opublikuj na: Facebook Twitter Wykop