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ż doswitch
orazfor
- 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
int
orazstring
. 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