venerdì 26 giugno 2009

Mini guida Php

Per iniziare

Il php.....il linguaggio magico!!!

Ecco come penso che sia sto linguaggio fantastico.....comunque....

per prima cosa.....assicuratevi di avere il packetto Apache/PHP/MySQL

io ora in locale(su window) uso XAMPP e su linux XAMPP

non vi sto a spiegare come fare ad installarlo, olto chiaro qui: http://www.apachefriends.org

ho sempre odiato le guide che cominciano cosma pultroppo, a cosa migliore....


<?php
/*questo commento
va su + linee*/
echo "Hello world!";//e questo solo su una
?>


ecco qui....il famoso "Hello world!"

cominciamo......

1. La base della base:

I tag per il php

Ci sono 3 metodi, li metto in ordine di preferenza personale:
<?php ?> -> il + classico

<? ?> -> molto utilizzato

<% %> -> i cosetti "Tag asp" che delimitano anche l'ASP, per essere utilizzati nel php deve essere abilitato nel php.ini del server.


Se posso dare un consiglio.....io userei il primo

2. I commenti

I commenti, sono cose che vi salvano il cervello, sopratutto quando riprendete in mano il codice dopo un po di tempo, o prendete in mano quello di un'altro, cominciate gia subito ad usarli.

I 2 modi di commentare:

/* */ -> commento multi linea
// -> commento mono linea

io anke se mono linea, lo metto sempre con quello multi linea...

3. L'indentazione del codice

La cosa che vi salva gli occhi metre la notte, stanco dal lavoro, devi finire un pezzo di codice, l'indentazione olto importante, aiuta nel trovare errori e a far manutenzione.

io personalmente uso questo metodo:


<?php
function ciccio()
{
//codice indentato
}
?>



altro metodo:

<?php
function ciccio(){
//codice indentato
}
?>



io evito con cura script non indentati.....senima o poi ci lascio gli occhi.

4. Apici doppi e singoli

La differenza olta, anche se non sembrerebbe, probabilmente x chi l primo approccio, non capirma ad una seconda lettura si capireglio:

" " -> apici doppi tutto quello al interno verra "interpretato", quindi se c'n mezzo una variabile, verra visto il suo valore
' ' -> apici singoli, quello al'interno verristo per quello ke
Esempi:

<?php

$variabile = "ciao!";

echo "Mario disse: $variabile";//Verrtampato: "Mario disse: ciao!"
echo 'Mario disse: $variabile';//Verrtampato: "Mario disse: $variabile"
?>



5. Le variabili

Le variabili, la parte + importante, senza di loro la programmazione non esisterebbe, ci servono x calcolare, ricordare e trasportare informazioni.

I nomi di variabili, sono sempre preceduti dal simbolo "$"(si legge dollaro), e possono cominciare per lettera maiuscola/minuscola o underscore "_", ma non per numero.

Alcuni esempi:


<?php
//Corretto
$Ciccio = "ciao";
$ciccio = "ciao";
$_ciccio = "ciao";

//Errato
$1989ciccio = "ciao";
?>



Cosa che potrebbe tornare molto utile, ominare una variabile dinamicamente, cio


<?php
$nome_var = "ciccio";
$valore_var = "ciao!!";

$$nome_var = $valore_var

echo $ciccio; //Stamperciao!!"
echo $$nome_var; //Stamperciao!!"
?>



6. Unire + variabili/stringhe

Per fondere 2 variabili o stringhe assieme, si usa il punto ".", in questo modo:


<?php
$v1 = "ciao";
$variabile = $v1." "."ciccio!";

echo $variabile;//Stamperciao ciccio!"
?>



7. Variable scope

Questo l cosetto "scopo delle variabili"

una variabile non globale, creata in una funzione, avralore solo in quella funzione.

esempio 1:

<?php
$a = "ciccio";
$b = "gandalf";
function stampa_a()
{
echo $a;
}
stampa_a();//Non stamperulla
echo $a;//Stamperciccio"
?>



esempio 2:

<?php
$a = "gandalf";
function stampa_a()
{
$a = "ciccio";
echo $a;
}
echo $a;//Stampergandalf"
stampa_a();//Stamperciccio"
?>



per ovviare a questo problema ci sono delle variabili speciali, chiamata "superglobali"

8. Variabili superglobali

Le variabili superglobali, sono delle variabili "speciali".

Le variabili superglobali sono:
$GLOBALS -> Contiene tutte le variabili a livello globale


<?php
$a = 2;
function cambia_a()
{
global $a;
$a = $a+1;
}
cambia_a();
echo $a;//Stamper
?>



$_GET -> Contiene le variabili contenute nel URI, cioe variabili settate dopo il "?" nel URL

<?php
//URL: http-trash.blogspot.com/search/?q=guida+php
//URI: q=guida+php

echo $_GET['pid'];//Stamper7"
?>


Le variaili GET soo limitate come numero di caratteri imposto dal server, sono utili per passare variabili in assenza di form per l'invio di dati.

$_POST -> Contiene le variabili inviate, di solito, da un form, con l'uso di socket o di ajax ossibile inviarli in assenza di form.
Si richiamano come per le variabili GET


$_SESSION -> Contiene i dati della sessione corrente, che possono essere "portate" fino alla fine della sessione (chiusura del browser)

<?php
session_start();//Se non impostati nel php.ini, ne deve precedere al uso di qualsiasi variabile di sessione
$_SESSION['var'] = "ciccio";
echo $_SESSION['var'];//Stamperciccio"
?>



$_SERVER -> Contiene le variabili del server e del "nvironment"

<?php
echo $_SERVER['HTTP_HOST'];//Stamperhttp-trash.blogspot.com"
echo $_SERVER['HTTP_REFERER'];//Stamperdigitaldaigor.blogspot.com"
echo $_SERVER['HTTP_USER_AGENT'];//StamperMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13"
?>



Ne esistono altre, ma le metter un altro post x comodit
$_COOKIE -> Contiene i cookie settati in precedenza

<?php
setcookie("nome_cookie","valore_cookie",time()+(60*60));
/*I primi 2 si capisce a che servono, e l'ultimo valore a scadenza in secondi del cookie,
time() prende il numero di secondi dal 1/1/1970, e ci aggiungo 60*60 cio ora,
quindi dopo 1 ora da ora il cookie nn sar valido!*/

echo $_COOKIE['nome_cookie'];//Stampervalore_cookie"
?>



9. Strutture di controllo

Sono cicli o condizioni, come, nel linguaggio corrente....il "SE", oppure "FAI QUESTO FIN CHE SUCCEDE QUEST'ALTRO" ecc.


<?php
//IF -> SE
$a = 1;

if($a == 1)//Se $a con valore 1 guale a 1, esegue quello tra le parentesi graffe
{
echo '$a guale a 1';
}

//ELSE -> SENO'
//Deve venire sempre dopo un IF
$a = 1;

if($a == 2)//Se $a con valore 1 guale a 2, esegue quello tra le parentesi graffe
{
echo '$a guale a 2';
}
else//Sensegue quello tra le parentesi graffe del else
{
echo '$a non guale a 2';
}

//ELSE IF -> OPPURE
$a = 1;

if($a == 2)//Se $a con valore 1 guale a 2, esegue quello tra le parentesi graffe
{
echo '$a guale a 2';
}
else if($a == 1)//Oppure se $a con valore 1 guale a 1, esegue quello tra le parentesi graffe
{
echo '$a guale a 1';
}
else//Sensegue quello tra le parentesi graffe del else
{
echo '$a non guale a 1';
}

//FOR ->Da quando, Fino a quando
for($i=0;$i<10;$i++)
{
echo $i."<br>";
/*
Questo stamperna serie di numeri dallo 0 al 9
quindi:
Esegui qullo tra le graffe da quando $i guale a 0 fino a quando inore di 10
*/
}

//FOREACH ->
$ciccio['a'] = "aaa";
$ciccio['b'] = "bbb";
$ciccio['c'] = "ccc";

foreach($ciccio as $key => $val)
{
echo '$ciccio['.$key.'] = '.$val."<br>";
/*
Questo l metodo, a mio parere,+ semplice per scorrere un arry, queto ciclo stamper
$ciccio[a] = aaa
$ciccio[b] = bbb
$ciccio[c] = ccc

Se si usa un array con chiavi non ordina o ordinabili, questo cicli lo scorre dal inizio alla fine,
dando a $key, il valore della chiav, e a $val il valore della variabile(inteso come elemento del array)
*/
}

//WHILE -> Fin quando la condizione rimane a TRUE
while($flag)
{
$i++;
if($i>6)
{
$flag = false;
}
/*Ripete il ciclo fin quando la condizione viene passata a false*/
}
//altro esempio
while($i < 8)
{
$i++;
/*Ripete il ciclo fin quando la condizione viene passata a false*/
}

//DO WHILE -> Fai questo fino a quando la condizione rimane a TRUE
do
{
$i++;
/*Questo permette di essere sicuri che il coclo fiene eseguito almeno una volta*/
}while($i < 6);


//SWITCH -> se questo fai questo, se quest'altro fai questo
switch($i)
{
case 0://Se $i guale a 0 fa
echo '$i guale a 0';//questo
case 1://Se $i guale a 1 fa
echo '$i guale a 1';//questo
case 2://Se $i guale a 2 fa
echo '$i guale a 2';//questo
}
/*In pratica dentico a una serie di else if, risparmiando un po di codice*/


//Per fermare i cicli usare il break;
while(1=1)//Ciclo infinito
{
$i++;
if($i>100)
{
break;
/*L'esecuzione verrerminata a $i=100*/
}
}
?>




10. Operatori di assegnazione, di incremento/decremento e di stringha


<?php
$b = "ciao";//L' "=" assegna il valore a $b

$b .= "!!!";//Fonde le 2 stringhe assieme, modo ridotto ed equivalente a; $b = $b."!!!";

$a = 5;
$a += 2;//$a vale 7, modo ridotto ed equivalente rispetto a questo: $a = $a+2;

$a = 5;
$a -= 2;//$a vale 3, modo ridotto ed equivalente rispetto a questo: $a = $a-2;

$a = 5;
$a++;//$a vale 6, modo ridotto ed equivalente rispetto a questo: $a = $a+1;

$a = 5;
$a--;//$a vale 4, modo ridotto ed equivalente rispetto a questo: $a = $a-1;
?>



10. Operatori di confronto


<?php
$a = 1;
$b = 2;
$c = 3;
$d = 1;
$e = "1";

//Uguale
if($a == $d)//StamperTRUE" -> (1 == 1)
{
echo "TRUE";
/*Esegue questo percha guale a $d*/
}
if($a == $c)//NON StamperTRUE" -> (1 == 3)
{
echo "TRUE";
/*Non esegue questo percha non guale a $c*/
}

//Identico
if($a === $d)//StamperTRUE" -> (1 === 1)
{
echo "TRUE";
/*Esegue questo percha dentico a $d nel valore e nel tipo*/
}
if($a === $e)//NON StamperTRUE" -> (1 === "1")
{
echo "TRUE";
/*Non esegue questo percha non dentico ad $e, dato che $a n intero e $e na stringha*/
}

//Diversi (!= oppure <>)
if($a != $c)//StamperTRUE" -> (1 != 3)
{
echo "TRUE";
/*Esegue questo percha iverso da $c*/
}
if($a != $d)//NON StamperTRUE" -> (1 != 1)
{
echo "TRUE";
/*Non esegue questo percha guale a $d*/
}

//Non identico
if($a !== $e)//StamperTRUE" -> (1 !== "1")
{
echo "TRUE";
/*Esegue questo percha non dentico a $e nel tipo*/
}
if($a !== $d)//NON StamperTRUE" -> (1 !== 1)
{
echo "TRUE";
/*Non esegue questo percha dentico a $d*/
}

//Maggiore
if($c > $a)//StamperTRUE" -> (3 > 1)
{
echo "TRUE";
/*Esegue questo perchc aggiore di $a*/
}
if($c > $c)//NON StamperTRUE" -> (3 > 3)
{
echo "TRUE";
/*Non esegue questo perchc non aggiore di $c*/
}

//Minore
if($a < $c)//StamperTRUE" -> (1 < 3)
{
echo "TRUE";
/*Esegue questo percha inore di $c*/
}
if($c > $c)//NON StamperTRUE" -> (3 > 3)
{
echo "TRUE";
/*Non esegue questo perchc non inore di $c*/
}


//Maggiore uguale
if($c >= $a)//StamperTRUE" -> (3 >= 1)
{
echo "TRUE";
/*Esegue questo perchc aggiore di $a*/
}
if($c >= $c)//StamperTRUE" -> (3 >= 3)
{
echo "TRUE";
/*Esegue questo perchc guale a $c*/
}
if($b >= $c)//NON StamperTRUE" -> (2 >= 3)
{
echo "TRUE";
/*Non esegue questo perchb non aggiore o uguale a $c*/
}

//Minore uguale
if($a <= $c)//StamperTRUE" -> (1 <= 3)
{
echo "TRUE";
/*Esegue questo percha inore di $c*/
}
if($c <= $c)//StamperTRUE" -> (3 <= 3)
{
echo "TRUE";
/*Esegue questo perchc guale a $c*/
}
if($c <= $b)//NON StamperTRUE" -> (3 <= 2)
{
echo "TRUE";
/*Non esegue questo perchc non inore o uguale a $b*/
}

?>



11. Operatori AritmeticoMatematici

La matematica nel php guale quella fuori dal php.

Esempi:

<?php
$a = 1;
$b = 2;
$c = 3;

//Addizione
$d = $a+$b;//$d = 3

//Sottrazione
$d = $a-$b;//$d = -1

//Moltiplicazione

$d = $a*$b;//$d = 2

//Divisione
$d = $a/$b;//$d = 0.5

//Modulo -> Restituisce il resto della divisione tra i 2 numeri
$d = $a%$b;//$d = 1
?>



12. Operatori logici

sono qui elencati e restituiscono true quando:
&& o and -> Entrambi sono veri
|| o or -> Almeno uno ero
xor -> Solo uno dei 2 ero
! -> Restituisce il contrario di quello che segue, se quello che segue RUE, restituirALSE


Esempi:

<?php
$a = 1;
$b = 2;
$c = 3;
$d = 1;
//AND o &&
if($a = $a and $b = $b)//StamperTRUE" -> (TRUE and TRUE)
{
echo "TRUE";
/*Esegue questo percha guale a $a e $b guale a $b*/
}
if($a = $a and $b = $c)//NON StamperTRUE" -> (TRUE and FALSE)
{
echo "TRUE";
/*Non esegue questo percha guale a $a ma $b non guale a $c*/
}

//OR o ||
if($a = $c or $b = $b)//StamperTRUE" -> (FALSE or TRUE)
{
echo "TRUE";
/*Esegue questo perchb guale a $b anche se $a non guale a $c*/
}
if($a = $c or $b = $c)//NON StamperTRUE" (FALSE or FALSE)
{
echo "TRUE";
/*Non esegue questo perchb non guale a $c e $a non guale a $c*/
}

if($a = $c xor $b = $b)//StamperTRUE" -> (FALSE xor TRUE)
{
echo "TRUE";
/*Esegue questo perchb guale a $b e $a non guale a $c*/
}
if($a = $c xor $b = $c)//NON StamperTRUE" -> (FALSE xor FALSE)
{
echo "TRUE";
/*Non esegue questo perchb non guale a $c e $a non guale a $c*/
}
if($a = $a xor $b = $b)//NON StamperTRUE" -> (TRUE xor TRUE)
{
echo "TRUE";
/*Non esegue questo perchb guale a $b e $a guale a $a*/
}

if(!($a = $a))//NON StamperTRUE" -> !(TRUE)
{
echo "TRUE";
/*Non esegue questo percha guale a $a*/
}
if(!($a = $b))//StamperTRUE" -> !(FALSE)
{
echo "TRUE";
/*Esegue questo percha non guale a $b*/
}
?>



13. Controllo degli errori

Avolte, non siamo si curi che quello che stiamo facendo vada a buon fine, quindi, per non dare brutti errori a schermo usiamo davanti alla funzione la "@"


<?php
//Qui userna funzione che vi spiegheri...non fateci caso, ma capite il meccanismo

include("file_che_non_esiste.php");
?>


Il file che ho cercato non esiste, quindi mi viene stampato questo errore:

Warning: include(file_che_non_esiste.php) [function.include]: failed to open stream: No such file or directory in W:\xampp\htdocs\www\index.php on line 2

Warning: include() [function.include]: Failed opening 'file_che_non_esiste.php' for inclusion (include_path='.;W:\xampp\php\pear\') in W:\xampp\htdocs\www\index.php on line 2


<?php
//Ma se metto la "@" davanti alla funzione.....nessun errore!!!

@include("file_che_non_esiste.php");
?>



14. Tipi di variabili

Le variabili si dividono in:
(int) o (integer) -> Numero intero
(bool) o (boolean) -> Boleano, cioRUE o FALSE
(float) o (double) -> Numeri a virgola mobile
(string) -> Stringhe alphanumeriche
(array) -> Array, cion contenitore di + variabili

Esempi:

<?php
$intero = 5;
$bool = true;
$float = 0.5;
$string = "ciccio";
$array = array("valore1", "valore2");
?>



Per forzare una variabile a prendere solo un tipo di dato, bisogna anteporre alla suddetta le parentesi con il tipo di dato:

Esempi:


<?php
$numero = 5;
$numero_t = (int)$numero;

//Con un successivo controllo si scopre che la variabile si rasformata
if(is_int($numero_t)){ echo "n intero"; }

/*Se una variabile con valore una stringha, contenente un numero, vedremo
che il numero rimane invariato, ma cambia il tipo di variabile*/

$numero = "5";
$numero_t = (int)$numero;
//Con un successivo controllo si scopre che la variabile si rasformata am il valore di $numero_t
if(is_int($numero_t)){ echo "n intero"; }
if(is_string($numero)){ echo "na stringha"; }

//in caso non ci fosse un numero ma delle lettere $numero_t varrebbe 0
$numero = "asd";
$numero_t = (int)$numero;
echo $numero_t;//Stamper0"
?>



Le funzioni per scoprire di che tipo a variabile sono:


<?php
is_int($var);
is_bool($var);
is_array($arr);
is_string($var);
?>



Tutte queste funzioni restituiranno TRUE se il tipo della variabile corrisponde.

ne esistono altre, ma le tratter'altra volta


15. Gli array

Gli array sono delle "variabili contenitore", cioontengono altre variabili o altri array e possono essere multidimensionali.

Esempi di array:

<?php
//Ci sono vari modi di creare un array:

$array1 = array();//Coso si crea ma non lo si popola
$array2 = array("ciccio","gandalf");//Cos' lo si crea e popola

//In questi si crea e si popola
$array3[] = "tizio";
$array3[] = "caio";

/*Negli array si possono dare anche key personalizzate
di norma un array comincia con l'elemento con key=0
e va aumentando, ma in questo modo potete dare key personalizzate*/

$array4['ciccio'] = "1";
$array4['pino'] = "3";

/*Questo tile sopratutto quando si hanno array multidimensionali, cio + livelli*/
$array4['persone'][] = array(['nome'] => "Ciccio", ['cognome'] => "Deamicis");
$array4['persone'][] = array(['nome'] => "Gandalf", ['cognome'] => "Il Bianco");

//Se volete sapere il cognome della 2 paersona...scriverete:
echo $array4['persone'][1]['cognome'];//StamperIl Bianco"

/*Per scorrere un array con chiavi personalizzate, senza che le sappiate, rimando al "foreach" nel capitolo "Cicli"

Se volete visualizzare la struttura di un array usate questa funzione:*/
print_r($array4);
?>



16. Funzioni personali

Le funzioni, servono ad automatizzare dei processi, e quindi non farvi riscrivere + volte lo stesso codice.
NOTA: Le variabili create dentro la funzione, non saranno presenti al esterno, l'unico modo per passarle sare il return


<?php

function funzione_personale($parametro1,$parametro2,$parametro3="ciccio",$parametro4=" ciao!!!")
{
echo $parametro1;
echo $parametro2;
echo $parametro3;
echo $parametro4;
global
}

/*Una funzione come questa qui sopra, ltamente inutile, ma serve a spieghere....
Come vedete ci sono 4 "parametri", cio variabili mandate nella funzione dal'esterno,
le prime 2 sono obbligatorie, senza la funzione da errore, ma le ultime 2
possono essere tralasciate, dato che hanno un valore di defoult.

ma se vi serve settare $parametro4, siete obbligati a settare anche $parametro3
*/

funzione_personale("dissi ","a ");
//Stamperdissi a ciccio ciao!!!"

funzione_personale("dissi ","a ","gandalf");
//e stamperdissi a gandalf ciao!!!"

?>

Nessun commento:

Posta un commento