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ż do switch oraz for
  • 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 z fn())
    • 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ć jako callable. 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 oraz string. 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.

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 controllerów, walidacji, konfiguracji ścieżek dostępu (struktura zasobów jest równoważna ze strukturą folderów aplikacji)
    • $_GET/$_POST, $_SESSION/$_COOKIE, mysql_real_escape_string(), brak CSRF,
    • 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

Wyrażenia regularne

  • 2021-11-04 12:36
  • 0 komentarzy
  • 6 odsłon

Debugowanie kodu PHP (bez debuggera)

  • 2019-10-08 16:59
  • 2 komentarzy
  • 8532 odsłony

Aplikacje konsolowe w PHP

  • 2021-08-17 13:34
  • 0 komentarzy
  • 6113 odsłon

Serializacja danych w PHP

  • 2021-06-02 00:47
  • 0 komentarzy
  • 13186 odsłon

Wzorce Projektowe

  • 2021-06-01 22:51
  • 12 komentarzy
  • 37972 odsłony

PhpDoc - Dokumentacja kodu PHP

  • 2021-06-01 20:43
  • 3 komentarzy
  • 8948 odsłon

Podstawy PHP - Ochrona przed XSS

  • 2021-08-17 13:25
  • 14 komentarzy
  • 7275 odsłon

Tablice w PHP

  • 2021-09-13 18:43
  • 12 komentarzy
  • 103258 odsłon

Podstawy PHP

  • 2006-03-07 12:55
  • 5 komentarzy
  • 27109 odsłon

Wprowadzenie do PHP

  • 2008-06-01 13:54
  • 6 komentarzy
  • 10211 odsłon

Klasy w PHP

  • 2021-08-27 15:09
  • 11 komentarzy
  • 7282 odsłony

Sesje w PHP

  • 2021-08-23 16:26
  • 9 komentarzy
  • 13550 odsłon

Wyrażenia Regularne (Regular Expression)

  • 2021-08-17 13:01
  • 18 komentarzy
  • 56636 odsłon

E-maile w PHP

  • 2021-08-27 14:56
  • 5 komentarzy
  • 4486 odsłon