Funzioni Utente o Personali

Gli argomenti di questa pagina

  • Perchè le Funzioni Utente o Personali

Perchè le Funzioni Utente o Personali

Unico modo per spiegare le Funzioni Personali è quello di creare il presupposto per crearle e di conseguenza usarle.
Molte volte, anzi è frequente, che in una pagina o in un intero programma ricorrano frammenti di codice ripetuti. Magari in questi frammenti di codice vengono ripetuti più volte col risultato che la pagina risulti eccessivamente lunga, difficile da leggere e difficile ad eventuali revisioni e/o manutenzione.
Ma può succedere anche un'altra cosa. Ci troviamo in un costrutto condizionale per prendere delle decisioni su quali e come eseguire parti di codice importante.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$action 
"read";
if (
$action == "read") {
    
//    "Qui vengono compiute le azioni per leggere un DB";
} elseif ($action == "find") {
    
//    "Qui vengono compiute le azioni per cercare in un DB";
} elseif ($action == "write") {
    
//    "Qui vengono compiute le azioni per inserire nuovi record in un DB";
} elseif ($action == "update") {
    
//    "Qui vengono compiute le azioni per aggiornare un record in un DB";
} else {
    
//    "Qui vengono compiute altre azioni";
}
?>

Il codice visto così risulta di facile lettura. E' intuitivo ciò che deve accadere in ogni blocco della IF. Ma sfortunatamente, se ci mettiamo a scrivere decine, centinaia di righe di codice in ciascuno di questi blocchi, cominciamo a sentirci confusi e disorientati. A volte può persino accadere che, leggendo, scrivendo o modificando il codice, non sappiamo più in quale blocco ci troviamo.
In questi casi io preferisco comportarmi in due modi:

  • in ogni blocco includo un file esterno
  • creo una funzione che esegua l'azione da eseguire nel blocco

Il frammento di codice mostrato qui sopra potrà essere modificato in uno di questi modi qui sotto mostrati:
nel primo esempio ho usato dei semplici include, cioè, dopo aver opportunamente preparato dei files esterni, li includo nella riga che qui sopra risulta commentata
nel secondo esempio ho invece usato delle funzioni precedentemente preparate.
Ma come si può vedere in questo ipotetico esempio non tutte le ipotetiche funzioni sono costruite allo stesso modo:

  • non tutte richiedono degli argomenti.
  • non tutte restituiscono dei valori,

Gli argomenti sono dei parametri (variabili o matrici) che occorre inviare alla funzione perchè elabori i nostri dati. Come si vede dagli esempi mostrati tali parametri possono essere di numero variabile ed addirittura mancanti.
Cosa molto importante è che una sequenza di parametri o argomenti usati nella istruzione che chiama la funzione abbia la stessa sequenza dei parametri o argomenti usati nella funzione stessa.
Se una funzione è costruita in questo modo
function update($table, $id, $updated_data)
l'istruzione che la richiama deve avere questo aspetto
update($nome_tabella, $id_record, $dati_da_aggiornare)

Per gli eventuali valori di ritorno c'è la stessa regola. Una funzione può restituire o meno dei valori. Se li restituisce lo fa sotto forma di variabile o di matrice, se molteplici ed il codice chiamante riceve tali valori o in una variabile o matrice o in una funzione echo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
$action 
"read";
//    questo frammento di codice viene usato con degli include
if ($action == "read") {
    include (
'read_inc.php');
} elseif (
$action == "find") {
    include (
'find_inc.php');
} elseif (
$action == "write") {
    include (
'write_inc.php');
} elseif (
$action == "update") {
    include(
'update_inc.php');
} else {
    include(
'page_error.php');
}
//    ========================== OPPURE ==========================
//    questo secondo frammento di codice è alternativo al precedente
//    in questo uso le funzioni personali
if ($action == "read") {
    
$record read_db($table$id);                //    chiamo la funzione read_db inviando due parametri
    
include ('view_record_inc.php');
} elseif (
$action == "find") {
    
$record find($table$find);                //    chiamo la funzione find inviando altri 2 parametri
    
include ('view_record_inc.php');
} elseif (
$action == "write") {
    
write($table$inserted_data);                //    anche qui chiamo la funzione write con due parametri
} elseif ($action == "update") {
    
update($table$id$updated_data);            //    e qui la funzione update con 3 parametri
} else {
    
show_error();                                //    quest'ultima finzione non richiede alcun parametro
}
?>

 

 



settore tecnico il sito di lorettabweb il Forum di sostegno
il forum il forum il forum