Programmation PHP/PHPMailer
 est une bibliothèque open source pour envoyer des emails plus rapidement qu'à partir de la commande codice_1.
Installation.
Télécharger sur GitHub ou bien ajouter à composer.json : codice_2.
Utilisation.
// Pour la v5.0.0 (2009)
require_once('PHPMailer/class.phpmailer.php');
// Pour la v5.2.14 (2016)
require('PHPMailer/PHPMailerAutoload.php');
Exemple.
Exemple de base :
$mail = new PHPMailer();
$mail->Subject = 'Hello World!';
$mail->SetFrom('expediteur@mon_domaine.com');
$mail->AddAddress('destinataire1@son_domaine.com');
$mail->MsgHTML('Corps de l\'email');
if (!$mail->Send()) {
 echo 'Erreur : ' . $mail->ErrorInfo;
} else {
 echo 'Message envoyé !';
Bien sûr, on peut ensuite ajouter en une ligne une pièce jointe, une copie cachée, une signature ...

Programmation PHP avec Symfony/Introduction

Présentation.
Symfony (parfois abrégé SF) est un MVC libre écrit en PHP (> 5). En tant que framework, il facilite et accélère le développement de sites et d'applications Internet et Intranet. Il propose en particulier :
Utilisations.
Plusieurs autres projets notables utilisent Symfony, parmi lesquels :
Différences entre les versions.
Depuis la version 4, des pages récapitulant les nouvelles fonctionnalités sont mises à disposition :
Créer un projet.
Vous trouverez sur la page dédiée Symfony 4 comment installer cette version sortie en 2017, et Symfony 3 ici. La v5 s'installe comme la v6, mais pour migrer de la v5 à la v6 il faut vérifier plusieurs choses.
Pour créer un nouveau projet sous Symfony 6, tapez la commande :
 composer create-project "symfony/skeleton:^6" mon_projet
ou avec la commande "symfony" :
 wget https://get.symfony.com/cli/installer -O - | bash
 symfony new mon_projet
Cette commande a pour effet la création d'un dossier contenant les bases du site web à développer.
Lancer le projet.
On entend par cette expression le lancement d'un serveur web local pour le développement de l'application et le choix d'un hébergeur pour la déployer (autrement dit "la mettre en production").
Serveur web de développement.
Symfony intègre un serveur web local qu'on peut lancer avec la commande (se placer dans le répertoire du projet auparavant) :
 codice_1
En passant codice_2 en argument de la commande codice_3, le projet s'ouvre dans un navigateur :
 codice_4
Ou bien en utilisant le serveur web intégré à php
 $ php -S localhost:8000 -t public
Serveur web de production.
Pour le déploiement dans le monde "réel", il faut choisir un hébergeur web sur internet supportant PHP (nous l’appellerons "serveur web distant" pour le distinguer du précédent). Voici quelques exemples :
Autrement il est aussi possible d'installer un deuxième serveur web (autre que celui intégré à Symfony) sur sa machine pour se rendre compte du résultat final. Par exemple... Apache qui est très répandu chez les hébergeurs profesionnels. Il faudra alors ajouter un vhost et un nom de domaine dédiés au site Symfony. Pour le test, le domaine peut juste figurer dans codice_5.
Configurer le projet.
Paramètres dev et prod.
Les différences de configuration entre le site de développement et celui de production (par exemple les mots de passe) peuvent être définies de deux façons :
Par exemple, on constate l'absence de la barre de débogage (web_profiler) par défaut en prod. Une bonne pratique serait d'ajouter au config_dev.yml :
web_profiler:
 toolbar: true
 intercept_redirects: false
twig:
 cache: false
monolog:
 handlers:
 console:
 type: console
 process_psr_3_messages: false
 channels: ['!event', '!doctrine', '!console']
 verbosity_levels:
 VERBOSITY_NORMAL: DEBUG
Les fichiers .yml contenant les variables globales sont dans app\config\.
Par exemple en SF2 et 3, le mot de passe et l'adresse de la base de données sont modifiables en éditant codice_7 (non versionné et créé à partir du codice_8). L'environnement de test passe par web/app_dev.php, et le mode debug y est alors activé par la ligne codice_9 (testable avec codice_10).
Depuis SF4, il faut utiliser un fichier .env non versionné à la racine du projet, dont les lignes sont injectées ensuite dans les .yaml avec la syntaxe : codice_11. Le mode debug est activé avec codice_12 dans ce fichier .env.

Programmation PHP/Les cadriciels
Programmation PHP/Tableaux
Création de tableau.
Un tableau (en anglais codice_1) est une collection d'objet. En PHP, ces objets n'ont pas forcément le même type (cohabitation entre des entiers, des chaines…). Chaque objet est identifié par une clé appelée indice, que l'on met entre crochets (ex : codice_2).
Il existe trois manières de déclarer un tableau vide :
 $tab = []; // depuis PHP 5.4
 $tab = {}; // moins permissif aux concaténations
 $tab = array(); // déconseillé depuis PHP 7
Pour créer un tableau non vide :
$t1 = array('champ1', 'champ2');
$t2 = ['champ1', 'champ2'];
$t3[0] = 'champ1';
$t3[1] = 'champ2';
// Affiche les trois mêmes tableaux : Array ( [0] => champ1 [1] => champ2 )
var_dump($t1);
var_dump($t2);
var_dump($t3);
Autres exemples :
 $tab[0] = 1; // entier
 $tab[1] = 2.0; // flottant
 array_push($tab,'Ligne 3');
 $tab[] = 'Ligne 4';
 var_dump($tab);
Il en est de même pour les tableaux à deux dimensions.
 $tab = [];
 $tab[0][0] = '0-0';
 $tab[0][1] = '0-1';
 $tab[1][0] = '1-0';
 $tab[1][1] = '1-1';
 var_dump($tab);
On distingue deux types de tableau :
Tableau itératifs.
Les clés du tableaux sont des nombres. Ils ont l'avantage de pouvoir être parcourus par un compteur.
Ce code affichera : "val1val2".
En PHP, on peut aussi directement affecter des indices du tableau, comme suit :
Notez que les indices ne sont pas typés (on pourra indifféremment utiliser $tab[1] et $tab['1']).
Tableaux associatifs.
Ils fonctionnent de la même manière que les tableaux itératifs, sauf que l'utilisateur en choisit la clé. À chaque clé correspond une valeur (injection).
Voici un exemple de déclaration :
Résultat : codice_3
Pour ne garder que les valeurs on peut utiliser codice_4, qui convertit un tableau en chaine avec séparateur :
 print implode(". ", $tab).". ";
Résultat : codice_5
Fonctions de lecture.
Exemple.
 $tab = ["mixte valeur<sub>1</sub>","mixte valeur<sub>2</sub>","...","mixte valeur<sub>n</sub>"];
 echo key($tab);
 echo ' : ';
 echo current($tab);
Affiche "0 : mixte valeur1"
Les fonctions codice_22 et codice_23 peuvent accéder aux autres éléments du tableau après codice_24 ou codice_25.
Il existe aussi différentes méthodes liées aux tableaux, des méthodes de tri, de recherche, de concaténation de tableaux, des méthodes d'ajouts et de suppressions d'éléments, etc.
Comparaison.
Pour comparer deux tableaux :
$a1 == $a2; // compare le contenu et la taille
$a1 === $a2; // compare le contenu, la taille et l'index
Condition.
Un tableau vide dans une condition vaudra "faux", alors qu'un non vide vaudra "true".
Fonctions d'écriture.
Pour manipuler des tableaux il est indispensable de connaitre les fonctions suivantes :
array_map(function($ligne) {
 return explode('=', $ligne);
, $tableau)
Tris.
Exemple :
$array = ['à', 'i', 'o', 'u', 'é'];
sort($array);
print_r($array);
setlocale(LC_COLLATE, 'fr'); // parfois 'fr_FR.UTF-8'
sort($array, SORT_LOCALE_STRING);
print_r($array);
donne :
 Array
 [0] => i
 [1] => o
 [2] => u
 [3] => à
 [4] => é
 Array
 [0] => à
 [1] => é
 [2] => i
 [3] => o
 [4] => u
Tableaux multi-dimensionnels.
La clé d’un tableau peut pointer sur un second tableau créant ainsi un tableau multi-dimensionnel.
Résultat :
ArrayAccess.
Cette classe native permet de redéfinir l'opérateur d'index (codice_63) dans les objets qui en héritent. Par exemple, pour lui faire accepter un autre tableau ou NULL comme index, ou déclencher un évènement quand on le modifie.
Destructuration.
PHP ne gère pas la destructuration avec l'opérateur égal comme le fait JavaScript ou Python (ex : codice_64). À la place, il propose plusieurs fonctions :

Programmation PHP/Variables superglobales