------ PHP ------

Prima di iniziare un discorso mediamente lungo e articolato, sono processi mentali che noi facciamo in ogni momento di ogni giorno in maniera assolutamente inconscia, peró quando si leggono paiono complicati, semplicemente perché il nostro cervello é complicato, cerchiamo di capire le gerarchie (gli oggetti) che compongono il nostro ambiente.
Esempio:
esiste una super classe EsseriViventi, la quale avrá i suoi metodi (nasce(), cresce(), muore()) e le sue proprietá (neonato, giovane, anziano), in questa super classe ci sono tutti, ma noi vogliamo scendere nello specifico e scegliamo la sotto classe Animali, questa eredita nasce(), cresce(), muore(), neonato, giovane, anziano dalla super classe EsseriViventi e aggiunge i metodi corre(), nuota(), vola(), e le proprietá gambe, zampe, pinne, branchie, ali, piume; sará quindi EsseriViventi.Animali.
Non contenti continuiamo, é la volta della sotto classe Felini, altri metodi e altre proprietá. Pretendiamo che sia qualcosa a noi piú vicina, quindi sotto classe Domestici, di conseguenza EsseriViventi.Animali.Felini.Domestici la cui proprietá tipo = micio.
EsseriViventi.Animali.Felini.Domestici.nome = Silvestro
Praticamente Animali eredita metodi e proprietá da EsseriViventi e ne aggiunge altri piú specifici, cosí come Felini erediterá da Animali ma anche da EsseriViventi, aggiungendo del suo, infine Domenstici erediterá metodi e proprietá sia da Felini che da Animali come anche da EsseriViventi, aggiungendone altri suoi, una sorta di scatole cinesi.
Spero di essere stato chiaro oltre che breve.
Quando viene visualizzato un file contenente del codice di programmazione, una persona normale viene colta da sensi di confusione e sgomento, gli altri, per quanto siano programmatori esperti, forse non proveranno confusione, ma sgomento si. La differenza sta nel fatto che i secondi, armati di infinita pazienza, cercheranno di capire cosa significa: "quello fa cosí, a condizione che l'altro sia cosá, i dati vengono elaborati per diventare parte di un oggetto - fammi andare a vedere come é fatto questo oggetto...", tutto cosí, ci vogliono ore.
Uno veramente bravo dopo un'ora ha capito bene cosa avviene nelle prime 300 righe di codice, ne mancano altre 200 e altri 10 file.
Non facciamoci ingannare dai telefilm, dove il/la protagonista arriva e in 30 secondi scrive un programma in grado di salvare il mondo dalla catastrofe.
La realtá é molto diversa.
Schiacci il pulsante di accensione del computer, l'alimentatore si avvia e fornisce tensione ai componenti, secondi di schermata nera mentre si carica il firmware della scheda madre, schermata d'avvio del sistemma operativo, poniamo che non hai la password così facciamo prima, il monitor disegna lo sfondo del desktop e poi posiziona le icone, fai click su una di esse per aprire l'ambiente di programmazione in cui dovrai scrivere il codice che salverá il mondo: sono passati piú di 2 minuti.
Per scoprire una password o decriptare un file ci vogliono ore, se non giorni.
Un film o un telefim funzionano perché gli attori sono bravi a fingere - meglio sai fingere e piú carriera farai - e una cosa basilare: la volontaria sospensione del giudizio critico. Nella realtá non abbatti un elicottero tirandogli una pietra, neanche ti cuci il braccio con ago e filo come se stessi rammendando un calzino, ma in quel momento va bene cosí e questa illusione é giusto che continui fino alla parola FINE, non dopo.
Dopo questa dissertazione, forse non breve ma sicuramente doverosa, torniamo a noi.
PHP (acronimo ricorsivo di "PHP: Hypertext Preprocessor", preprocessore di ipertesti; originariamente acronimo di "Personal Home Page") é un linguaggio di scripting, originariamente concepito per la programmazione di pagine web dinamiche.
Nato nel 1994 ad opera del danese Rasmus Lerdorf, PHP era in origine una raccolta di script CGI che permettevano una facile gestione delle pagine personali. Secondo l'annuncio originale di PHP 1.0 da parte dell'autore sul newsgroup comp.infosystems.www.authoring.cgi il significato originario dell'acronimo era Personal Home Page. Il pacchetto originario venne in seguito esteso e riscritto dallo stesso Lerdorf in C, aggiungendo funzionalitá quali il supporto alla base di dati mSQL, e inizió a chiamarsi PHP/FI, dove FI sta per Form Interpreter (interprete di moduli), prevedendo la possibilitá di integrare il codice PHP nel codice HTML in modo da semplificare la realizzazione di pagine dinamiche. Nel 1997 si stimava che circa 50.000 siti Web erano basati su PHP.
Il 27 novembre 2020 é stata pubblicata la versione 8. É la prima versione di PHP a supportare la compilazione just-in-time aumentando di gran lunga le prestazioni.
Alla fine i linguaggi di programmazione si assomigliano tutti, uno finisce l'istruzione andando accapo, l'altro con il punto e virgola, una parentesi graffa in piú una in meno, le parentesi tonde gestite diversamente, le funzioni interne cambiano leggermente nome (comunque c'é Google), ma in fondo la struttura é sempre identica, una volta capiti bene i costrutti principali la differenza é data, ad alti livelli, solo dall'esperienza, dal ricordare a memoria i metodi di quel particolare linguaggio.
Se la macchina parla cinese, non puoi rivolgerti a lei in arabo.
Una caratteristica immediatamente distinguibile é che TUTTE le variabili hanno come prefisso il simbolo del dollaro ($).

Per scrivere codice PHP bisogna inserirlo tra appositi marcatori:

 

    <?php
        //codice PHP
    ?>
                    

Quello che trovo estremamente interessante del PHP é che se unito all'HTML, CSS, JavaScript, AJAX e all'SQL (con relativo database) puoi fare praticamente tutto, senza doverti preoccupare dei vari sistemi operativi, basta che funziona sul tuo server e funziona per tutti.
Non devi preoccuparti di Windows, Linux, MacOS o altri, neanche del browser, metti un link alla pagina di dowload del browser per cui é stato ottimizzato: finito.
L'unica cosa indispensabile é la connessione a Internet (oggi praticamente per tutti).
Una cosa molto importante sono i commenti:

 

    // commento su riga singola
    
    /* commento
        su
        più
        righe*/
                    

Quella che arriva a te é la pagina risultante dopo l'elaborazione del server:

 

    PHP
    
    if ($ condizione){
        $ colore =  rosso;                     
    }else{
        $ colore = verde;
    }
    
    HTML
    
        <p>background-color: #ffffff (bianco)</p>
                    

Se (if) $condizione é vera allora $colore sará "rosso", altrimenti (else) $colore sará "verde". Chi decide se $condizione é vera o meno sará l'elaborazione del codice precedente, a te arriverá solo un paragrafo con la scritta "rosso" o "verde" a seconda dei casi.
Gli array (matrici) sono complicati da spiegare ma concettualmente semplici nel loro insieme, sono come tante caselle numerate dove inserire i dati (importante: in informatica il primo numero é lo zero, non l'uno), quindi la prima casella sará la casella 0, poi ci sará la casella 1 e via discorrendo. Gli array possono avere piú dimensioni, esisterá la casella 0 0, quella 0 1 e le altre. Io personalmente li uso a una o due dimensioni, raramente a tre, mai a quattro perché non saprei gestire una dimensione che non son capace di immmaginare.
Si chiamo array "associativi" quelli che al posto del numerino che identifica la casella hanno una stringa come etichetta: non array[0], array[1] e quelle cose li, ma array["rosso"], array["verde"] ecc.

Una lista composta da [chiave]=>valore
Gli array sono un po' noiosi da rienpire di dati "a mano":

$frutta = array("banana", "arancia", "anguria");
Gli array associativi invece:
$frutta = array (
"esotica" => "banana",
"energetica" => "arancia",
"dissetante" => "anguria"
);
oppure
$frutta = [
"esotica" => "banana",
"energetica" => "arancia",
"dissetante" => "anguria"
];
Per PHP gli array a due (o piú) dimensioni sono array contenenti altri array:

$frutta = array (
"esotica" => array (
"rosso" => "mango",
"marrone" => "kiwi",
"giallo" => "papaja" ),
"energetica" => array (
"arancio" => "arancia",
"verde" => "limone",
"viola" => "avogado" ),
"dissetante" => array (
"bianco" => "cocco",
"striato" => "anguria",
"retinato" => "melone" ) );

Di conseguenza $frutta["esotica"]["marrone"] contiene "kiwi". Oppure $frutta["energetica"]["verde"] contiene "limone", come $frutta["dissetante"]["striato"] contiene "anguria".
Possiamo avvalerci di una miriade di funzioni interne al linguaggio per manipolare o gestire un array.
Cosí come ci sono migliaia di funzioni PHP per gestire o manipolare la stringhe (il testo).
Esistono diversi modi per definire la visibilitá (scope) di una variabile e l'ambito in cui puó operare un oggetto, queste possono essere pubbliche (pubilc), private (private) o confidenziali (protected), questo determina come e da chi possono essere usate.
Vi sono le interfacce (interface) nelle quali si elencano (una sorta di dichiarazione d'intenti) ma non si implementano, i vari metodi. Per cui ci saranno delle classi che definiscono (implement) i metodi dando loro delle effettive azioni. Le classi possono implementare piú interfacce, basterá scriverle separandole con una virgola.
L'ereditarietá non é automatica come puó apparire, la classe maggiore viene definita come finale (final), praticamente come dire "vedi che piú su di cosí non puoi andare", le altre, per ereditare, vanno dichiarate come estensioni (extends).

Tutte queste cose e tante altre, son spiegate con dovizia di particolari, collegandosi al sito ufficiale di PHP (in inglese).