In Php come in qualsiasi altro linguaggio di programmazione le funzioni sono degli spezzoni di programma che vengono richiamate in un punto del programma principale. Spesso vengono utilizzate per evitare di riscrivere sempre le stesse cose e dare cosi’ una chiarezza formale al programma stesso. In Php come il altri linguaggi evoluti queste possono essere dichiarate all’interno del programma principale stesso oppure in dei file esterni separati a seconda dell’esigenza del programmatore che ne fa utilizzo.

Le funzioni in PHP

Le funzioni in PHP

Vediamo subito qual’e’ il modo di dichiararle

function nomefunzione (elenco_argomenti)

{

//blocco istruzioni

}

 

A questo punto dobbiamo distinguere due casi su come la stessa possa essere richiamata all’interno del programma principale

$variabile = nome_funzione(elenco_argomenti);

nel caso che la funzione restituisca al programma principale almeno un valore, oppure

nome_funzione (elenco_argomenti)

nel caso non vi sia alcuna restituzione.

Vediamo subito un esempio per meglio comprendere



<?php

function prodotto ($valorea, $valoreb)

{

return ($valorea * $valoreb)

}

?>

<html>

<head>

<title> Esempio dichiarazione di una funzione</title>

</head>

<body>

<?php

$valore1= 10;

$valore2=20;

$prodotto = prodotto($a, $b);

print ("il prodotto risultante è dato da: $prodotto");

?>

</body>

</html>

Chiarimo un momento meglio il concetto del valore di ritorno, quindi in php come in tutti gli altri lunguaggi di programmazione esistono delle funzioni che restituiscono un valore e delle altre no.Con le funzioni che restituiscono un valore, come abbiamo appena visto nell’esempio sopra, abbiamo l’introduzione della funzione return, nel secondo caso non abbiamo nulla E’ bene comunque sottolineare che le variabili definite e utilizzate all’interno di una funzione sono visibili soltanto nella funzione stessa e non esistono fuori da quel contesto. Vediamo anche per questo concetto un esempio



<?php

function setConto()

{

$contocorrente ="3254325/AB";

print("il nome della funzione contocorrente si chiama guarda casa $contocorrenter <br>");

}

?>

<html>

<head>

<title>Visibilità delle variabili</title>

</head>

<body>

<?php

$contocorrente ="45545443432/CA";

setConto()

print("Questo valore è fuori dalla funzione $contocorrente");

?>

</body>

</html>

 

Se andiamo ad eseguire questa funzione otterremo che prima cerrà stampato il valore 32…. e dopo il valore 4555…..

 

Global

 

Se dall’interno della funzione volessimo utilizzarre la stessa variabile che è stata definita all’esterno della funzione stessa, con riferimento al precedente esempio allora dovremmo utilizzare la seguente sintassi

 

global $contocorrente;

all’interno della funzione setConto().

 

Facciamo un passo successivo , ossia talune volte, puo’ essere comodo ottenere delle variabili, definite all’interno di funzioni, che ricordino il valore che avevano la volta precedente in cui sono state utilizzate, anche nel contesto dia altre chiamate di funzione. Ma facciamo un esempio chiarificatore

 

<?php




function Conta()

{

static $count=0;

$count++;

print ("hai eseguito questa funzione $count volte");

?>

<html>

<head>

<title> esempio di varaibili static</title>

</head>

<body>

<?php

for ($tot=0;$tot<10; $tot++)

{

Conta();

}

?>

</body>

</html>

 

Se eseguiamo la funzione otterremo i seguenti valori

hai eseguito questa funzione 1 volte

hai eseguito questa funzione 2 volte

hai eseguito questa funzione 3 volte

hai eseguito questa funzione 4 volte

hai eseguito questa funzione 5 volte

hai eseguito questa funzione 6 volte

hai eseguito questa funzione 7 volte

hai eseguito questa funzione 10 volte

Passaggio di Variabili in PHP

Vediamo adesso come si passano i parametri dal programma principale alla funzione. Come in tutti i linguaggi di programmazione esistono due modi per farlo

  • per riferimento si passa i riferimenti agli oggetti reali che si vogliono modificare all’interno della funzione.
  • per valore si passa alla funzione i valorei dei parametri stessi

 

Questo in teoria. Nella pratica il passaggio per riferimento dei parametri di una funzione si utlizza quando si deve permettere alla funzione chiamata la modifica diretta del valore stesso degli oggetti passati. In parole povere nel passaggio di parametri per riferimento, il valore delle variabili passate viene modificato all’interno della funzione stessa che è la chiamante, in gergo si dice che la funzione chiamante modifica i valori della funzione chiamata , ma vediamo un esempio chiarificatore.

 

<?php

function passaggioreiferimento (&$valorea , &$valoreb)

{




print ("inizio funzione : a=$valorea - b = $valoreb <br>");

$aus=$valorea;

$valorea = $valoreb;

$valoreb =$aus;

print (" fine della funzione a=$valorea . b=$valoreb <br>");

}

?>

<html>

<head>

\title> esempio passaggio paramentri per riferimento </title>

</head>

<body>

<?php

$valorea=10;

$valoreb=20;

print ("Scambio di parametri ( per riferimento) <br><br>");

print ("Primi Valori" :a=$valorea - b =$valoreb<br>");

passaggioriferimento($valorea,$valoreb);

print ("i valori dopo la chiamata alla funzione sono a = $valorea - b $valoreb");




?>

</body>

</html>

 

Se si esegue lo script sopra si vede che il valore delle variabili sopra viene a tutti gli effetti scambiato, ha dimostrazione che la funzione con parametri passati per riferimento, modifica il valore effettivo delle variabili in questione.

 

Facciamo adesso l’esempio opposto, ossia il passaggio di parametri per valore.Che di fatto è la tecnica opposa alla precedente, tanto per utilizzare un linguaggio da gergo della porgrammazione che rende bene l’idea diciamo che nel passaggio di parametri per valore , la funzione chiamante non modifica il valore delle variabili della funzione chiamata, ossia il valore delle variabili passate al termine della funzione ritorna ad essere quello che avevano atecedentemente alla chiamata stessa.

 

<?php

function passaggiovalore ($valorea, $valoreb)

{

print(" inizio funzione a = $valorea - b=$valoreb <br><br>");

$aus=$valorea;

$valorea=$valoreb;

$b=aus;

//quindi anche qui si effettua lo scambio dei parametri inseriti

}

?>

<html>

<head>

<title> Esempio passaggio di parametri per valore</title>

</head>

<body>

<?php

$valorea=6;

$valoreb=7;

print ("Qeusto è un esempio di scambio di parametri per valore<br>");

print (" I valori iniziali dei parametri sono a=$valorea - b $valoreb");

passaggiovalore($valorea, $valoreb);

print("dopo lo scambio i valori sono a=$valorea b=$valoreb");

?>

</body>

</html>

 

Se provassimo ad eseguire questa funzione vedremo che la funzione non modifica affatto i valori della funzione, quindi dopo la chiamata alla funzione e la finze della funzione stessa i valori ritornano ad essere quelli iniziali ossia 6 e 7 , annullando in tale maniera l’effetto della funzione che ha compiuto di fatto lo scambio dei parametri stessi.

Volendo il php permette anche di inizializzare il parametro passato all’interno della funzione nel seguente modo

 

function esempio ($valorea, $valoreb=224)

 

Chiudiamo il capitolo delle funzioni in php dandovi un accenno di quelle che sono le funzioni ricorsive, ossia le funzioni ricorsive sono delle funzioni che richiamano se stesse. L’esempio piu’ classico che viene fato con le funzioni ricorsive è il fattoriale

Ossia

Fattoriale n!= n * (n-1) (n-2).....1
0!=1

Vediamo dunque come sia possibile implementare la funzione fattoriale utilizzando le funzioni ricorsive del php



<?php

function fattoriale ($n)

{

iif ($n==0)

{

return 1;

}

else

{

return ($n * fattoriale ($n-1));

}

}

?>

<hrml>

<head>

<title> Funzione ricorsiva</title>

</head>

<body>

<?php

for ($i=0;$i<10;$i++)

{

print ("Il Fattoriale di $i è";

print (fattoriale ($i));

print("<br>");

}

?>

</body>

</html>

 

E con questo vi rimandiamo alla prossima lezione che sono gli array