13. Funcions d'usuari i àmbits de les variables
Índex
Funcions d'usuari
Un conjunt d'instruccions pot donar lloc a una funció:
- function nom(){
- instruccions
- }
Això permet grans economies de programa si el conjunt d'instruccions s'ha de fer servir reiteradament.
- <?php
-
- function calendari(){ // Creem una funció
- echo "<p style='text-align: right; color: blue'>Data: ";
- echo gmdate(j) . "." . gmdate(m) . "." . gmdate(Y); // Llegim tres paràmetres de la data
- echo "</p>";
- }
-
- ?>
-
- <?php
-
- calendari(); // Apliquem la funció
-
- ?>
Vegeu-ne el resultat
Funcions d'usuari externes
Les funcions d'usuari poden establir-se en un document php o txt extern i incorporades al document on s'han d'aplicar mitjançant un include o similar. Això fa possible que una mateixa funció pugui ésser executada des de diversos documents php, amb un gran estalvi de codi i amb l'avantage afegit que si cal introduir canvis en la funció, n'hi ha prou de fer-los una sola vegada.
- <?php
-
- function calendari(){ // Creem una funció
- echo "<p style='text-align: right; color: blue'>Data: ";
- echo gmdate(j) . "." . gmdate(m) . "." . gmdate(Y); // Llegim tres paràmetres de la data
- echo "</p>";
- }
-
- ?>
- <?php
-
- include "13b.txt"; // Incorporem la funció externa
- calendari(); // Apliquem la funció
-
- ?>
Vegeu-ne el resultat
Nota: Funcionalment, aquest exemple és idèntic a l'anterior; des del punt de vista del codi, se'n diferencia pel fet que la funció és externa, i així podria ésser incorporada a un nombre il·limitat de documents.
Tipus de variables
Quan es treballa amb funcions d'usuari, cal tenir present l'àmbit de validesa de les variables. Pel seu àmbit de validesa, hi ha tres tipus de variables:
- Les locals, definides dins una funció. En principi, només poden ésser usades dins l'àmbit local de la funció.
- Les globals, definides fora de cap funció. En principi, només poden ésser usades en l'àmbit global, és a dir, fora de les funcions.
- Les superglobals ($_POST, $_GET, $_COOKIE, $_REQUEST i alguna més), que poden ésser usades arreu.
Les variables globals poden penetrar en una funció mitjançant tres procediments que veurem a continuació.
Arguments
Les funcions poden contenir un o més arguments:
- function nom(arg_1, arg_2...){
- instruccions en què arg_1, arg_2 funcionen com variables
- }
També podria ésser un argument un valor literal.
- <?php
- function dia_setmana($valor){ // Creem una funció amb un argument
- $dies = array ("diumenge", "dilluns", "dimarts", "dimecres", "dijous", "divendres", "dissabte"); // Vector amb els noms dels dies de la setmana
- echo "<p style='color: red'>Avui és " . $dies[$valor] . ".</p>"; // Presentació del resultat
- }
- ?>
- <?php
-
- $d = date(w); // Llegeix el dia de la setmana en xifres
- include "13d.txt"; // Invoca un document que conté una funció
- dia_setmana($d); // Executa la funció incloent-hi la dada com argument
-
- ?>
Vegeu-ne el resultat
Ús de global
Una variable global pot ésser introduïda en una funció especificant-ne el caràcter:
- global $nom_1, $nom_2...;
- instruccions que fan servir $nom_de_la_variable
El vector associatiu $GLOBALS
El vector associatiu $GLOBALS conté la referència a totes les variables globals:
- instruccions que fan servir $GLOBALS['nom_de_la_variable']
Notem que $GLOBALS no duu guió baix i que el nom de la variable no duu el $ inicial.
Extracció de valors d'una funció d'usuari
Quan en una funció d'usuari es genera una sola variable, podem fer que la funció equivalgui a aquesta variable. Això s'aconsegueix amb la instrucció
- return nom_de_la_variable
D'aquesta manera podem escriure, per exemple,
d'una manera absolutament paral·lela a
- echo $nom_de_la_variable;
- Document inicial, sense codi PHP, dotat d'un formulari, on s'introdueixen els valors del capital, del rèdit i del temps.
- <?php
-
- function int_comp($cap, $red, $tmp){ // Definició d'una funció
- $fact_an = 1 + $red /100;
- $fact_tot = pow($fact_an, $tmp);
- $cap_fin = $cap * $fact_tot;
- return $cap_fin; // La funció retornarà el valor calculat
- }
-
- ?>
- <?php
-
- include ("13g.txt"); // Importa l'arxiu que conté la funció exterior
- echo "<p>" . int_comp($_POST['c'], $_POST['r'], $_POST['t']) . "</p>"; // Executem la funció i en presentem el resultat
-
- ?>
Vegeu-ne el resultat