PHP
PHP: Hypertext Preprocesor - interpretowany język programowania przeznaczony do tworzenia aplikacji WWW. Został zaprojektowany z myślą o szybkim tworzeniu tzw. template'ów HTML, stąd wiele funkcjonalności PHP przystosowanych specjalnie do tego celu, jak np:
- Dowolny tekst przed znacznikiem
<?php(lub<?) jest interpretowany jako wyświetlenie tego tekstu (printowanie na stdout) - Dowolny tekst po znaczniku
?>również - Smaczek składniowy w postaci
<?=równoważny z<?php echo - Drugi zapis instrukcji
if-if (case): endif;, jak również doswitchorazfor - Ogrom funkcji do obróbki tekstu z wielu różnych domen programowania (HTTP, JSON, XML, BBCode, PCRE,
addslashes/stripslashes, etc.)
Ale oczywiście nie znaczy to, że nie można w PHP stworzyć aplikacji udostępniającej zasoby np. w JSON.
Cechy:
- Dynamicznie typowany
- Słabo typowany
- Wieloplatformowy - możliwość uruchomienia tej samej wersji aplikacji na różnych platformach: Windows, Linux, Mac, inne
- Domyślnie jednowątkowy, ale dostępne są środowiska uruchomieniowe PHP TS (Thread-Safe, bezpieczne dla wątków) w której można użyć kilku klas jak
parallel, które udostępniają paralelizację. - Praca z serwerem Apache "out of the box"
- Składnia:
- Początkowe wersje (PHP 1-4) są mocno inspirowane językami: Bash, Perl, C oraz DOS (
echo,switch,continue,include,@,$,global,? :,register_globals) oraz Lisp (tablica asocjacyjna,=>). - Późniejszy rozwój języka (PHP 5) czerpał z języków: Javy i C# (klasy, interfejsy, polimorfizm, przestrzenie nazw,
static,implements,public, Reflection, klasy anonimowe) i JavaScript/TypeScript (..., opcjonalne parametry z?, lambdy zfn()) - Funkcje inspirowane tymi z języków C oraz C++ (
strtok,mysql_connect,strpos,curl_init) - Konstrukcje unikalne dla PHP:
- string
"strtoupper"oraz tablica[$this, 'method']może posłużyć jakocallable. Innymi słowy, w PHP, string z nazwą funkcji może działać jak funkcja. - tablica asocjacyjna, która na prawdę jest słownikiem zachowującym kolejność, którego klucze mogą mieć wartości
intorazstring. Zapis tablicy jako lista (['a', 'b', 'c']) tak na prawdę tworzy słownik z kluczami będącymi liczbami naturalnymi ([0 => 'a', 1 => 'b', 2 => 'c']). Różne funkcje operujące na tablicach, zależnie od funkcji traktują tablicę asocjacyjną jako lista, zbiór, mapa lub słownik.
- string
Zalety:
- Bardzo szybki początkowy rozwój pierwszych wersji aplikacji
- Łatwe (banalne) wdrożenie aplikacji na hosting z serwerem Apache (wystarczy przekopiować pliki na serwer)
- Niezwykle popularny wśród amatorskich i średnio-zaawansowanych portali internetowych
- Ogromne środowisko programistów i rozwiązań (WordPress, Laravel) oraz ogromna ilość płatnych i darmowych platform które wspierają PHP
- Stosunkowo łatwo integracja z bazami danych
Wady:
- PHP jest pełen łatwych i prostych rozwiązań, które na dłuższą metę stają się bardzo problematyczne
- Trudna konfiguracja z serwerami innymi niż Apache
- Pomimo wpływu "OOP", ogrom elementów języka domyślnie polega na proceduralnym podejściu:
- brak jakichkolwiek kolekcji (jest tylko tablica,
array()która pełni funkcję listy, mapy i zbioru) - Brak wielowątkowości, chyba że skorzystamy z dystrybucji TS.
- Mimo zaadoptowania podejścia obiektowego, brak typów generycznych
Zobacz też:
- php.net - oficjalna strona PHP; zawiera kompletną i dokładną dokumentację wszystkich funkcji
- phpMyAdmin - popularny klient MySQL
- phpPgAdmin - popularny klient PostgreSQL