Programmation PHP/Fonctions
Définition de fonction.
Outre les dizaines de fonctions natives, PHP permet bien entendu d'écrire ses propres fonctions. Pour en définir une, il suffit d’utiliser le mot-clef codice_1. Comme le langage est faiblement typé, une fonction peut retourner n’importe quel type de valeur (chaîne, entier…) ou ne rien retourner du tout. Enfin, ses arguments peuvent avoir des valeurs par défaut, être nommés (depuis PHP8) et sont limités à 12 par fonction.
Notez que lorsqu'une fonction arrive à un codice_2, elle l'effectue puis se termine, même s'il y a d'autres instructions après.
Par ailleurs, en cas de gros volume de données à retourner, on peut utiliser codice_3 au lieu de codice_2 pour les décomposer à l'aide du PHP (classe Generator).
Portée des variables.
Le problème de portée des variables est assez réduit en PHP. Une fonction n'a accès qu’à ses arguments, ses propres variables et aux variables globales importées statiquement (mot clé codice_5). De ce fait, il y a peu de confusion.
Toujours suivant le même principe, les variables utilisées dans une fonction sont toutes détruites à sa sortie (les variables globales non, bien entendu).
On peut aussi trouver un peu plus compliqué si vous utilisez deux fichiers. L'un pour les variables, l'autre pour les traitements.
Espaces de noms.
Depuis PHP 5.3.0, des espaces de noms peuvent être définis pour cloisonner certains objets, à l'aide du mot clé codice_6 utilisé en début de fichier. Exemple de définition :
<?php
 namespace Projet1;
Soit un fichier "TestNS.php" suivant :
<?php
 namespace Projet1\SousProjet2;
function Fonction1()
 echo "Fonction exécutée.\n";
 echo __NAMESPACE__;
Exemple d’utilisation :
<?php
 require 'TestNS.php';
 Projet1\SousProjet2\Fonction1();
Références de variables.
Les références sont utiles lorsque l’on souhaite retourner plusieurs valeurs dans une fonction. On utilise alors le passage d'argument par référence, qui fait que quand une fonction modifie un argument, la valeur de la variable du programme principale change aussi.
Pour utiliser un argument en tant que référence, il suffit d'y mettre l'opérateur de référence, le symbole codice_7 devant, dans la déclaration de la fonction.
Un exemple concret devrait vous faire comprendre :
Fonctions variables.
On appelle "fonction variable" une fonction dont on ne peut prédire le nombre d'arguments. Ce genre de fonction pourra se révéler pratique pour exécuter certains codes répétitifs ou le programmeur n'a pas envie de recopier le nom de la fonction pour n valeurs.
Pour cela, il faut retenir deux fonctions importantes :
Ces deux fonctions ne peuvent s'utiliser qu’à l'intérieur d’une fonction; dans le cas contraire un message d'erreur s'affichera.
Le code se comprend de lui-même. Il affichera : "Je suis programmeur, c’est utile, c’est intéressant."
Fonctions de rappel.
Pour passer une fonction en argument d'une autre, il faut utiliser codice_8. Ex :
 function fonctionAppelante(string $nomDeFonctionAppelee)
 return call_user_func($nomDeFonctionAppelee);
Fonctions anonymes.
Une fonction sans nom peut être stockée dans une variable permettant de l'appeler. Le mot clé codice_9 permet d'injecter des variables globales dedans. Ex :
$variableGlobale = 'Hello';
$fonctionAnonyme = function ($argument) use ($variableGlobale) {
 return $variableGlobale.' '.$argument.PHP_EOL;
echo $fonctionAnonyme('World'); // Hello World
echo $fonctionAnonyme('You'); // Hello You
Fonctions fléchées.
Depuis PHP7.4, on peut définir une fonction anonyme avec l'opérateur "=>" et le mot réservé codice_10. Ex :
$fonctionFlechee = fn($argument) => $variableGlobale.' '.$argument.PHP_EOL;
echo $fonctionFlechee('World'); // Hello World
echo $fonctionFlechee('You'); // Hello You
Fonctions prédéfinies.
Voici une liste des fonctions globales prédéfinies en PHP les plus usuelles.
printf('Compteur : %s. ', 1); // Compteur : 1.
printf('Compteur : %s. ', 2); // Compteur : 2.
printf('Compteur : %s, taille : %s. ', 3, 1); // Compteur : 3, taille : 1.
printf('Compteur : %2$s, taille : %1$d. ', 1, 4); // Compteur : 4, taille : 1.
printf('Compteur : %1$d, taille : %1$d. ', 5); // Compteur : 5, taille : 5.
echo vsprintf('Tailles : %d, %d, %d, %d', [1, 2, 3, 4]); // Tailles : 1, 2, 3, 4
Les types suivants sont généralement utilisés :
Sur les chaînes.
echo substr('Hello World', 0, 2); // "He" : les deux premiers caractères
echo substr('Hello World', -2); // "ld" : les deux derniers caractères
echo substr('Hello World', 0, -1); // "Hello Worl" : tout sauf le dernier caractère
echo str_pad(10, 2, '0'); // 10
echo str_pad(9, 2, '0'); // 90
echo str_pad(9, 2, '0', STR_PAD_LEFT); // 09
URLs.
php -r "var_dump(http_build_query(['x' => 1, 'y' => 2]));"
string(7) "x=1&y=2"
php -r "var_dump(http_build_query(['x' => '1/', 'y' => '2&'], '/', '/'));"
string(13) "x=1%2F/y=2%26"
Bufferisation de sortie.
La bufferisation de sortie bloque l'envoie de données au client HTTP pour les mettre dans une mémoire tampon à la place.

Programmation PHP/Formulaire
Le PHP est un langage de traitement. Une page en php pourra analyser et effectuer des opérations suite à un formulaire. Ce formulaire devra être écrit en HTML, dans une page .html (.htm) ou .php. Pour notre exemple, nous allons créer une page avec laquelle un utilisateur pourra se connecter à une zone administrateur.
Présentation.
Notre formulaire (form.html) comprendra deux éléments :
La page de traitement, en PHP (traitement.php) :
Une page de la zone administration (admin.php) :
Le formulaire.
Le code source présenté ici est uniquement le formulaire. Pour un affichage agréable de la page il est nécessaire de l'"habiller". Voir comment créer une page en HTML. Ce script ne sera pas expliqué. Pour le comprendre vous devez avoir les bases du formulaire en HTML.
En gros, ce formulaire enverra sur la page traitement.php la valeur de l'entrée "mdp".
Le traitement.
Pour comprendre la suite, vous devez avoir en tête la chose suivante sur les variables. Le champ dont le nom est "mdp" (name=mdp) envoie sur la page de traitement la variable $mdp avec pour valeur l'entrée renseignée.
Pour récupérer les valeurs d'un formulaire on utilise "$valeur=$_POST["nomvariable"];"
Si vous désirez récupérer les valeurs passée via une URL, par exemple http://www.example.com/index.php?mdp=valeur, on utilise "$valeur=$_GET["mdp"];"
Il est possible de récupérer directement la valeur d'un formulaire via le nom du champ (dans notre exemple $mdp contiendrait la valeur saisie du formulaire) mais il est fortement conseillé d’utiliser codice_1 pour des raisons de sécurité et de compatibilité.
La zone administration.
La zone administration va vérifier si l'utilisateur est autorisé à consulter ces pages. Il va comparer le mot de passe entré dans le cookie avec le mot de passe réel.
Types de champ.
Pour des codice_2, on vérifie si leurs valeurs sont 'on' ou 'off'.
Types MIME.
Les données d'un formulaire rempli par le client sont envoyées au serveur dans une requête POST avec en en-tête un Content-type x-www-form-urlencoded ou multipart/form-data. La différence est que le premier est semblable aux urlencode() des GET mais dans le body POST, et cette conversion est légèrement plus lente qu'en multipart/form-data.