Introduzione
E' una pagina enorme rispetto alle altre. Una delle prime che ho realizzato. L'ho usata come riferimento rapido per lo sviluppo degli altri esempi su PHP. Mi è stata utile e pertanto la lascio così com'è.
1. Le basi del linguaggio.
Sintesi della prima parte del tutorial w3schoools su PHP
1.1 Prerequisiti
Conoscenza base di:- HTML
- CSS
- JavaScript
1.2 Cosa è PHP?
- PHP è l'acronimo di Hypertext Preprocessor;
- è un linguaggio di scripting open source;
- gli script PHP sono eseguiti lato server;
- è un linguaggio ampliamente impiegato adatto a sviluppare complesse applicazioni web, pur essendo semplice abbastanza per essere appreso da principianti.
1.3 Che cosa è un file PHP?
- Un file PHP può contenere testo, elementi HTML, proprietà CSS, codice JavaScript, codice PHP;
- il codice PHP è eseguito sul server, e il risultato è restituito al browser come elementi HTML;
- i file PHP hanno estensione ".php"
2. Installazione
2.1 Di cosa c'è bisogno?
Per iniziare ad usare PHP, si può:
- Trovare un server che fornisca PHP e MySQL;
- Installare un web server sul proprio PC e poi installare PHP e MySQL.
Dal momento che sto usando un server che supporta sia PHP che MySQL, non faccio altro.
3. Sintassi
3.1 Basi
Uno script PHP può essere posto ovunque in un documento.
Uno script PHP inizia con <?php e termina con ?>
Esempio:
Esattamente in questo punto ho inserito:
<?php echo "Mio primo esempio di codice php" ?>
Ecco il risultato.
In alternativa avrei potuto scrivere il codice php in un file esterno ed includerlo con: <?php include 'es01.php' ?> In questo caso es01.php contiene esattamente:
<?php echo "Mio primo esempio di codice php!" ?>
Quindi la cosa sembra aver poco senso. Ma se ne intuisce l'utilità nel caso di script più complessi o riutilizzabili in più punti o su più documenti.
Se il presente documente avesse avuto estensione ".html" non sarebbe successo niente.
Devo vedere se esiste qualche strumento per validare i file con estensione ".php
4. Variabili
4.1 Creazione
- Iniziano con il carattere "$" seguito da lettera o underscore;
- la dichiarazione di tipo è implicita;
- sono case sensitive
4.2 Visibilità
Le variabili possono essere:
- globali - definite fuori da una funzione;
- locali - definite all'interno di una funzione. Le varibili locali possono essere
dichiarate:
- global: significa che sono definite al di fuori della funzione;
- static: non vengono azzerate all'uscita della funzione. Implica che lo statement di dichiarazione viene eseguito solo alla prima esecuzione della funzione.
4.3 Tipi di variabili
I dati all'interno delle variabili possono essere di tipo:
- String - $str = "pippo"; o $str ='pippo';
- Integer - $i = 67;
- Float - $f = 3.14;
- Boolean - $fatto = true;/false;
- Array - $giorni = array("lunedi", "martedi",...);
- Object $Giovanni=new Persona("Giovanni", "Minelli", 28);
<?php class Persona{ function __construct($nome, $cognome, $eta){ $this->nome = $nome; $this->cognome = $cognome; $this->eta = $eta; } function getEta(){ return this->eta; } } $Giovanni = new Persona("Giovanni ", "Minelli ", 28); echo $Giovanni->cognome; echo $Giovanni->nome; echo $Giovanni->getEta(); ?>
restituisce
Minelli Giovanni 28
- Null - $x = null;
- Resource: la vedremo in seguito.
5. Funzioni stringa (elenco completo)
Anche PHP ha funzioni per trattare le stringhe. Eccone alcune:
- int strlen("stringa") - restituisce il numero di caratteri della stringa;
- int str_word_count("word1 word2 ... wordn") - restituisce il numero di parole nella stringa;
- String strrev("stringa") - inverte l'ordine dei caratteri della stringa;
- int/false strpos("string","substr") - cerca "substr" in "stringa", se la trova ne restituisce la posizione del primo carattere, altrimenti restituisce false;
- string str_replace("str-search", "str_replace", "string") - sostituisce le occorrenze di "str-search" con "str-raplace" in "string"
6. Costanti
In PHP le costanti sono globali e vanno dichiarate con la funzione:
define(nome, valore, case-insensitive);
nome non deve iniziare con $; per default sono case-sensitive.
7. Operatori
- Aritmetici
- +, -, *, /, %, **(elevazione a potenza 2**3)
- Assegnazione
- =, +=, -=, *=, /=, %=
- Comparazione
- ==, === (identical), !=, <>, !== (not identical), >, <, <=, >=
- Pre e Post, increment e decrement
- ++$x, $x++, --$x, $x--
- Logici
- and / &&, or / ||, xor, !(not)
- Stringa
- . (concatenazione), .= (concatenzione ed assegnazione)
- Array
- + (unione), == (ugualianza), === (identità)
- != / <> (diversità), !==(non identità)
8. Controllo del flusso di esecuzione
8.1.1 if
8.1.2 if else
8.1.3 if elseif
8.4 switch
switch ($variabile){
case valore1:
...;
...;
break;
case valore2:
...;
...;
break;
...
...
case valoreN:
...;
...;
break;
default:
...:
...;
}
8.5 while
while (condizione){
...;
...;
...;
}
9. Funzioni
/* forma generale */
function nomeFunzione($arg1, $arg2, COST,...){ ...; ...; return $val; }
nomeFunzione è case-insensitive;
ad una funzione possono essere passati 0 o un numero qualsiasi di parametri;
lo statemente return $value, posto in fondo alla funzione restituisce il valore
della variabile $val;
lo statement return può essere omesso;
l'invocazione di una funzione si fa con:
$var = nomeFunzione(arg1, arg2, ...)
o con
nomeFunzione(arg1, arg2, ...);
a seconda della presenza o meno dello statement return;
10 Array
10.1.1 Esempio 1 - array giorniDellaSettimana
/* Definizione di una array contenente i giorni della settimana*/
$giorniDellaSettimana = array("lun", "mar", "mer", "gio", "ven", "sab", "dom"); foreach ($giorniDellaSettimana as $giorno){ echo "$giorno, "; }
lun, mar, mer, gio, ven, sab, dom,
/* Un altro modo per definire la stessa array */
$giorniDellaSettimana = ["lun", "mar", "mer", "gio", "ven", "sab", "dom"]; foreach ($giorniDellaSettimana as $giorno){ echo "$giorno, "; }
lun, mar, mer, gio, ven, sab, dom,
10.1.2 Esempio 2 primo tentativo, fallito, per costruire un array con i mesi dell'anno a partire dalle quattro array con i mesi delle stagioni.
Voglio provare ad utilizzare l'operatore array + (unione)
/* Definizione quattro array: $inverno, $primavera, $estate e $autunno, ognuna contenente i rispettivi nomi dei mesi. Poi proverò ad unirle con l'operatore + nell'array $anno che mi aspetto contenga tutti i dodici mesi dell'anno */
$inverno = array("gennaio", "febbraio", "marzo"); $primavera = array("aprile", "maggio", "giugno"); $estate = array("luglio", "agosto", "settembre"); $autunno = array("ottobre", "novebre", "dicembre"); $nMesi = count($inverno); echo ("inverno ha $nMesi mesi <br>"); foreach ($inverno as $mese ){ echo "$mese, "; } $nMesi=count($primavera); echo ("<br>primavera ha $nMesi mesi <br>"); foreach ($primavera as $mese){ echo "$mese, "; } $nMesi=count($estate); echo ("<br>estate ha $nMesi mesi <br>"); foreach ($estate as $mese){ echo "$mese, "; } $nMesi=count($autunno); echo ("<br>autunno ha $nMesi mesi <br>"); foreach ($autunno as $mese){ echo "$mese, "; } $anno = ($inverno+$primavera+$estate+$autunno); $nMesi=count($anno); echo ("<br>Anno ha $nMesi mesi <br>"); foreach ($anno as $mese){ echo "$mese, "; }
inverno ha 3 mesi
gennaio, febbraio, marzo,
primavera ha 3 mesi
aprile, maggio, giugno,
estate ha 3 mesi
luglio, agosto, settembre,
autunno ha 3 mesi
ottobre, novebre, dicembre,
Anno ha 3 mesi
gennaio, febbraio, marzo,
Pare proprio che non funziona come pensavo.
Mi aspettavo di trovare in anno l'unione delle quattro stagioni, ma non è così.
Ce ne sarà sicuramente una ragione, ma al momento mi sfugge. Per ottenere quello che voglio posso fare così:
11 Variabili Superglobals
Le variabili superglobals sono variabili sempre accessibili da qualunque punto del codice php, indipendentemente dal documento in cui si trova.
Al momento non so cosa farmene. Ci tornerò in seguito.
1.4 Cosa può fare PHP?
- generare contenuti dinamici per le pagine web;
- creare, aprire, leggere, scrivere, cancellare e chiudere file sul server;
- acquisire dati dai moduli;
- trasmettere e ricevere cookies;
- aggiungere, cancellare, modificare database;
- controllare l'accesso degli utenti;
- criptare dati.
1.5 Perché usare PHP?
- gira sui principali sistemi;
- è compatibile con quasi tutti i server;
- supporta molti database;
- è gratuito;
- è facile da imparare ed è efficiente.
3.2 Commenti
Commenti in stile java
3.3 Case sensitive
PHP è un linguaggio case sensitive.
4.4 Esempio
<?php $nome = "Claudio";
//$nome è una variabile di tipo stringa
$eta = 62;
//$eta è una varibile di tipo integer
$Mesi=333; mesi(); function mesi(){
/* Questo pezzetto di codice per riassumere il paragrafo. * Variabili: * creazione e visibilità; * Commenti stile Java */
global $nome; global $eta; $mesi = $eta*12; $Mesi = $eta*12; echo "<p>All'interno della funzione mesi() $nome ha $mesi mesi</p>"; echo "<p>All'interno della funzione mesi() $nome ha $Mesi mesi</p>"; } echo "<p>All'esterno della funzione mesi() $nome ha $mesi mesi</p>"; echo "<p>All'esterno della funzione mesi() $nome ha $Mesi mesi</p>"; ?>
E questo è l'output:
All interno della funzione mesi() Claudio ha 744 mesi
All interno della funzione mesi() Claudio ha 744 mesi
All esterno della funzione mesi() Claudio ha mesi
All esterno della funzione mesi() Claudio ha 333 mesi
5.1 Esempio
<?php
$stringa = "Una stringa di provare qualche funzione di manipolare le stringhe.";
$str_cerca = "di";
$str_sostituisci = "per";
echo strlen($str_sostituisci);
echo str_word_count($stringa);
echo strrev($stringa);
var_dump(strpos($stringa, "manopolare"));
echo strpos($stringa, "manipolare");
echo str_replace($str_cerca, $str_sostituisci, $stringa);
?>
E questo è l'output:
10
.ehgnirts el eralopinam id enoiznuf ehclauq eravorp id agnirts anU
bool(false)
43
Una stringa per provare qualche funzione per manipolare le stringhe.
8.6 do while
do {
...;
...;
...;
}while (condizione);
8.7 for
for($var=0; $var<$x; $var++) {
...;
...;
...;
}
8.8 foreach
foreach($array as $val) {
/* per ogni elemento $val di $array faccio qualcosa.*/
...; ...; ...; }
9.1 PHP function Reference
PHP mette a disposizione del programmatore un gran numero di funzioni:
- Per le array;
- Per la gestione del calendario;
- Per le date e le ore;
- Per la gestione delle directory e del loro contenuto;
- Per la gestione degli errori;
- Per la gestione del filesystem ;
- Per il filtraggio delle informazioni;
- Per il trasferimento dei file tramite FTP ;
- Funzioni HTTP;
- Funzioni Libxml;
- Funzioni Mail;
- Funzioni Matematiche;
- Funzioni varie;
- Funzioni MySQL;
- Funzioni SimpleXML;
- Funzioni String;
- Funzioni XML;
- Funzioni Zip;
- Funzioni Timezones;
10.1.3 Esempio 3 secondo tentativo, riuscito, per costruire un array con i mesi dell'anno a partire dalle quattro array con i mesi delle stagioni.
Con l'esempio precedente ho capito che non posso usare l'operatore + per unire le quattro stagioni.
/* Le array $inverno, $primavera, $estate e $autunno, l'ho definte sopra. Partendo da queste definisco l'array $mesiAnno*/
for($stagione=1; $stagione<=4; $stagione++){ $indMese=0; foreach($inverno as $mese){ $mesiAnno[$indMese]=$mese; $indMese++; } foreach($primavera as $mese){ $mesiAnno[$indMese]=$mese; $indMese++; } foreach($estate as $mese){ $mesiAnno[$indMese]=$mese; $indMese++; } foreach($autunno as $mese){ $mesiAnno[$indMese]=$mese; $indMese++; } } $numMesiAnno= count($mesiAnno); echo ("<br>Numero mesi dell anno: $numMesiAnno <br>"); foreach ($mesiAnno as $mese){ echo "$mese, "; }
Numero mesi dell anno: 12
gennaio, febbraio, marzo, aprile, maggio, giugno, luglio, agosto, settembre, ottobre, novebre, dicembre,
Funziona, ma è proprio grezzo. Così è un po meglio:
10.1.4 Esempio 4 terzo tentativo, riuscito, per costruire un array con i mesi dell'anno a partire dalle quattro array con i mesi delle stagioni.
In questo esempio uso l'array di array $stagioni che ha come elementi le array delle stagioni sopra definite.
$stagioni = [$inverno, $primavera, $estate, $autunno];
foreach($stagioni as $stagione){
$indMese=0;
foreach($stagione as $mese){
$mesiAnno[$indMese]=$mese;
$indMese++;
}
}
$numMesiAnno= count($mesiAnno);
echo ("<br>Numero mesi dell anno: $numMesiAnno <br>");
foreach ($mesiAnno as $mese){
echo "$mese, ";
}
Numero mesi dell anno: 12
ottobre, novebre, dicembre, aprile, maggio, giugno, luglio, agosto, settembre, ottobre, novebre, dicembre,
Sulle array c'è un mare di altre cose. Ma per ora basta così. Ci tornerò quando ne avrò bisogno.