Kategoria: PHP

Premiera PHP 5.4. Zmiany warte twojej uwagi

Po spektakularnych zapowiedziach PHP6, a następnie hucznym upadku całej koncepcji, developerzy PHP postanowili skupić się na rozwijaniu serii 5. W marcu 2012 roku oficjalnie ukazała się stabilna wersja PHP 5.4. Skupiono się na przeczyszczeniu kodu z archaicznych rozwiązań takich jak register_globals, magic_quotes, czy safe_mode. Według zapowiedzi developerów znacznie poprawiono wydajność interpretera (o ok. 20% obniżenie czasu wykonania, oraz zużycia pamięci). Ze zmian wartych uwagi należy jeszcze wspomnieć o zmianie standardowego ustawienia default_charset z ISO-8859-1 na UTF-8. Standardowo poprawiono ogromną liczbę błędów, usprawniono wiele funkcji, których listę (dla ambitnych) można znaleźć na tej stronie: http://php.net/ChangeLog-5.php. W dalszej części artykułu przedstawię krótko, moim zdaniem, najciekawsze nowe możliwości języka PHP.

Skrócona składnia tablic

Bardzo fajne wprowadzenie skróconej składni. Możemy definiować naszą tablice w stary sposób:

$numbers = array('one','two','three');

Ale od wersji 5.4 możemy to zrobić tak:

$numbers = ['one','two','three'];

$numbers = ['one' => 1, 'two' => 2, 'three' => 3];
Czytaj dalej...

Gdzie szukać porad i rozwiązań problemów z PHP

Ciężko mi w to uwierzyć, ale Webnote w zamyśle miał być blogiem, w którym miały dominować wpisy na temat PHP. Do tej chwili mamy ich „całe” 6. W tym wpisie chciałem wyjaśnić dlaczego tak jest, oraz gdzie najczęściej znajduje rozwiązania najpopularniejszych problemów. Przy okazji może ktoś podrzuci ciekawy temat do opracowania na blogu.

Dlaczego ciężko o ciekawy artykuł o PHP

Od początku wychodziłem z założenia pomijania typowych tematów dla blogów o PHP, czyli opisywania podstaw programowania obiektowego, czy tłumaczenia kolejnych wzorców projektowych. Raz, że zagadnienia te były opisane do bólu już parę lat temu, a dodatkowo uważam, iż tego typu wpisy najlepiej wyjaśnione są w przeznaczonej do tego literaturze.

Postanowiłem, że najlepszym rozwiązaniem będzie pisanie o bieżących problemach, które napotkam podczas pracy dla swoich klientów, czy projektów realizowanych w wolnym czasie. Tu pojawił się jednak problem. Język PHP jest tak popularnym i prostym językiem, że znalezienie rozwiązań większości napotkanych problemów kończyło się na kilkuminutowym korzystaniu z googla. Z drugiej strony opisywanie trudniejszych zagadnień jest kłopotliwe, ze względu na problem wyciagnięcia kodu z kontekstu aplikacji. Jest to jedna z wad nie korzystania z popularnych Framewoków.

Czytaj dalej...

Underscore.php – biblioteka przydatnych funkcji w PHP

Underscore.php to nic innego jak bezpośredni port bardzo popularnej wśród programistów JavaScript biblioteki Underscore.js. Zapewnia nam ona bardzo dużą liczbę prostych, ale często przydatnych funkcji, które ułatwią nam pracę w PHP. Jestem pewien, że wiele z tych funkcji już sami sobie napisaliście podczas tworzenia swoich aplikacji, ale moim zdaniem warto przeglądnąć możliwości jakie daje nam stosowanie Underscore.php

W ramach biblioteki otrzymamy następujące narzędzia:

  • zarządzanie kolekcjami
  • zarządzanie tablicami
  • wspomagające tworzenie  funkcji
  • zarządzanie obiektami

Myślę że warto pokazać kilka przykładowych możliwości Underscore.php. Jedną z ciekawszych funkcji jest metoda map, która pozwala nam zastosować jakąś funkcje na wszystkich kolejnych elementach kolekcji lub tablicy np.:

$result = __::map(
array(1, 2, 3),
function($num)
{
return $num * 3;
}
);

zwróci nam wynik w postaci:

array(3, 6, 9)

Kolejnym ciekawym przykładem jest metoda max, która pozwala nam pobranie maksymalnej wartości danej kolekcji lub wielowymiarowej tablicy według interesującego nas kryterium. Poniżej przykład:

$stooges = array(
array('name'=>'moe', 'age'=>40),
array('name'=>'larry', 'age'=>50),
array('name'=>'curly', 'age'=>60)
);

__::max($stooges, function($stooge) { return $stooge['age']; });

Co ostatecznie zwróci nam wynik w postaci tablicy, która posiada najwyższą wartość “age” razem z pozostałą wartością danej tablicy.

array('name'=>'curly', 'age'=>60)

Polecam przeglądnąć bardzo prostą dokumentacje znajdującą się na stronie głównej biblioteki, która zawiera zrozumiałe i obrazowe przykłady działania poszczególnych funkcji. Underscore.php wymaga PHP w wersji minimum 5.3 lub wyższej, choć nie powinno to obecnie być dużym problemem, warto o tym wspomnieć. Polecam także poczytać trochę o anonimowych funkcjach w PHP, gdyż są one często stosowane wraz z tą biblioteką.

Czytaj dalej...

10 bibliotek i klas PHP które warto znać

PHP jest jednym z najpopularniejszych obecnie języków programowania i jak na razie liderem w swojej klasie. Wynikiem jego popularności są szeroko dostępne biblioteki i klasy pozwalające na szybsze i wydajniejsze programowanie. Oczywiście zdaje sobie sprawę, że nie każdy lubi używać nie swoich rozwiązań, sam kiedyś miałem takie przekonania, ale z czasem człowiek uświadamia sobie, że nie ma czasu na pisanie solidnych, przetestowanych klas. Dlatego przygotowałem, krótką listę bibliotek, które moim zdaniem mogą się przydać w codziennej pracy.

PHPMailer

Bardzo popularna biblioteka wspomagająca wysyłanie maili. Umożliwia wysyłanie poczty poprzez SMTP, wysyłanie załączników, maili zwykłym tekstem i HTML. Co prawda ostatnia aktualizacja klasy była dość dawno, ale ciągle jest to rewelacyjne narzędzie do wysyłania maili.

SwiftMailer

Konkurencja powyższej biblioteki, posiada praktycznie identyczne możliwości. Dużym plusem tej biblioteki jest dosyć dobra dokumentacja.

Doctrine

Doctrine to potężne narzędzie do zarządzania danymi z baz danych, właściwie złożone z dwóch projektów: Object Relational Mapper (ORM) oraz Database Abstraction Layer. Dzięki, niemu projektowanie modeli w systemach może być zdecydowanie bardziej zautomatyzowane.

Propel

Podobnie jak w przypadku klas do obsługi poczty, tak dla klas zarządzania bazą danych należy wspomnieć o konkurencji Doctrine, czyli Propelu. Zarówno jeden jak i drugi mają ogromne możliwości, wielokrotnie prześwietlone na forach i blogach.

HTML Purifier

Doskonała klasa PHP, uznawana za jeden z najlepszych sposobów na walkę z XSS. Dba również o poprawność obrabianego w PHP kodu HTML. Według mnie niezbędne narzędzie w codziennej pracy.

Czytaj dalej...

Informacje o kolumnach tabeli w PDO i MySQL

Tym razem szybka porada na temat pozyskiwania informacji o kolumnach  tabeli przy pomocy PDO. Informacje takie przydają się przede wszystkim przy tworzeniu różnego rodzaju generatorów formularzy w PHP. Standardowo w MySQL skorzystalibyśmy z przygotowanej do tego celu funkcji mysql_fetch_field, która zwraca nam obiekt z informacjami na temat kolejnych kolumn. PDO samo w sobie posiada ograniczony zakres tego typu funkcji, jest to powiązane z tym, iż nie jest on typowym interfejsem bazy danych, ale bardziej warstwą abstrakcji pozwalająca na zarządzanie danymi z wielu różnych systemów. Informacje o kolumnach możemy pobrać na dwa sposoby.

Używając getColumnMeta

Jedną z  możliwości jest skorzystanie z natywnej metody PDO – getColumnMeta. Jak nie trudno zauważyć w manualu metoda ta jest eksperymentalna i jej prawidłowe działanie nie jest gwarantowane. Jej przykładowe zastosowanie może wyglądać tak:

<?php
$res = $this->query('SELECT * FROM table_name LIMIT 1');

$columnCount = $res->columnCount();
for($i=0 ; $i < $columnCount ; $i++){
  $meta[$i]=$res->getColumnMeta($i);
}

print_r($meta);
?>

Zestaw wyników jaki otrzymujemy, jest tablica:

Array
(
  [0] => Array
    (
      [native_type] => LONG
      [flags] => Array
      (
         [0] => not_null
         [1] => primary_key
       )

       [table] => table_name
       [name] => id
       [len] => 8
       [precision] => 0
       [pdo_type] => 2
    )

  [1] => Array
    (
      [native_type] => VAR_STRING
      [flags] => Array
      (
         [0] => not_null
      )

      [table] => table_name
      [name] => url
      [len] => 384
      [precision] => 0
      [pdo_type] => 2
    )
)

Jak widać do dyspozycji mamy kilka informacji. Najczęściej potrzebne będą nazwa pola i jego typ.

Czytaj dalej...

Copyright © 2017 Webnote

Projekt i wykonanie: Xelos

Dodaj link