learn-php.org offline
version off-line de https://www.learn-php.org/fr/
Table des matières
1. Introduction
Ce document est une version statique du tutoriel https://www.learn-php.org/fr/ utilisable hors-ligne. L'exécution PHP est à effectuer via un interpréteur PHP installé localement.
Les solutions des exercices sont compilés en fin de document.
2. Salut, tout le monde !
PHP est le langage de programmation le plus couramment utilisé pour le Web aujourd'hui. PHP est très courant parce qu'il a une architecture relativement simple comparé à d'autres frameworks Web basé MVC (Python, Ruby, node.js, etc).
À la différence d'autres frameworks Web standards, un fichier PHP est en fait un fichier HTML "amélioré", qui est aussi capable d'exécuter du code au sein d'un document. Ainsi, vous pouvez commencer par exemple avec une simple page HTML qui ressemble à ceci :
<html> <head></head> <body> Salut ! <?php ?> </body> </html>
Ensuite, vous ajoutez une section PHP qui exécute du code PHP, et écrit le résultat sous forme d'HTML. Remarquez que la ligne PHP disparaît quand on l'exécute, puisque le code PHP est remplacé par son résultat.
Essayons d'ajouter le nom de l'utilisateur.
<?php $user = "Jean"; ?> <html> <head></head> <body> Salut <?php echo $user; ?> ! </body> </html>
Par contre, dans ce tutoriel, nous nous concentrerons sur l'apprentissage de PHP comme langage de programmation et non sur le développement Web. Ainsi, nous n'utiliserons pas du tout HTML, et nous concentrons sur l'écriture de code plutôt que le rendu de pages Web.
Dans nos tutoriels, nous ouvrirons et fermerons toujours une balise PHP
(commençant par <?php
et se terminant par ?>
) au début et à la fin
de notre code.
Pour tester notre code, nous pouvons afficher des messages sur notre
console en utilisant la commande echo
.
2.1. Exercise
Afficher "Salut, tout le monde !
" sur la console.
2.1.1. Code de départ
<?php echo "Au-revoir, tout le monde !"; ?>
2.1.2. Sortie attendue
Salut, tout le monde !
3. Variables et types
3.1. Tutoriel
Pour définir une variable, utilisez simplement la syntaxe suivante :
$x = 1; $y = "foo"; $z = True;
Nous avons juste défini une variable nommée x
avec le nombre 1, une
variable nommée y
avec la chaîne "foo" et une variable nommée z
avec
la valeur booléenne True
(vrai). Une fois qu'elles sont définies, on
peut les utiliser dans le code.
PHP a de nombreux types de variables, mais les types les plus basiques pour les variables sont les entiers (nombres entiers), flottants (nombres réels), chaînes et booléens.
PHP a aussi des tableaux et des objets que nous expliquerons dans d'autres tutoriels.
Les variables peuvent aussi être mises à NULL
, ce qui signifie que ces
variables existent, mais ne contiennent aucune valeur.
3.1.1. Opérateurs
Nous pouvons utiliser des opérateurs d'arithmétique simple pour ajouter, soustraire ou concaténer entre variables.
Nous pouvons aussi afficher des variables PHP en utilisant la commande
echo
(vous pouvez l'essayer maintenant).
Par exemple, faisons l'addition de deux nombres, mettons le résultat dans une nouvelle variable, et affichons ce résultat.
$x = 1; $y = 2; $sum = $x + $y; echo $sum; // afficher 3
3.1.2. Formattage de chaîne
En PHP, comme en Perl, les chaînes avec double quotes peuvent formatter des chaînes en utilisant des variables définies. Par exemple :
$name = "Jacques"; echo "Votre nom est $name"; // affiche Votre nom est Jacques
3.2. Exercise
- Partie 1
Définissez des variables
name
(nom) etage
de façon à afficher une ligne correspondant à la phrase suivante :Salut Jacques. Vous avez 20 ans.
Remarquez que le code contient une séquence de caractère spécial à la fin appelée retour à la ligne -
\n
. Cette séquence fera en sorte que la prochaine ligne affichée le soit sur la ligne suivante. Pour le développement Web, cela n'est pas important, puisque nous utiliserons les balises HTML pour ce besoin. - Partie 2
Faites la somme de deux variables
x
ety
et mettez le résultat dans la variablesum
.
3.2.1. Code de départ
<?php // Partie 1: ajoutez les variables name et age. echo "Salut $name. Vous avez $age.\n"; // Part 2: faites la somme des variables x et y // et mettez le résultat dans la variable sum. $x = 195793; $y = 256836; $sum = NULL; echo "La somme de $x et $y est $sum." ?>
3.2.2. Sortie attendue
Salut Jacques. Vous avez 20 ans. La somme de 195793 et 256836 est 452629.
4. Tableaux simples
4.1. Tutoriel
Les tableaux sont un type de variable spécial qui peut contenir de nombreuses variables, et les conserver dans une liste.
Par exemple, disons que nous souhaitons créer une liste de tous les nombres impairs entre 1 et 10. Une fois que nous créons la liste, nous pouvons affecter de nouvelles variables qui feront référence à une variable dans le tableau, en utilisant l'index de la variable.
Pour utiliser la première variable dans la liste (dans ce cas le numéro 1), nous devrons passer le premier index, qui est 0, puisque PHP utilise des index basés depuis 0, comme quasiment tous les langages de programmation aujourd'hui.
$odd_numbers = [1,3,5,7,9]; $first_odd_number = $odd_numbers[0]; $second_odd_number = $odd_numbers[1]; echo "Le premier nombre impair est $first_odd_number\n"; echo "Le second nombre impair est $second_odd_number\n";
Nous pouvons maintenant ajouter de nouvelles variables en utilisant un index. Pour ajouter un élément à la fin de la liste, nous pouvons affecter dans le tableau à l'index 5 (la 6ème variable) :
$odd_numbers = [1,3,5,7,9]; $odd_numbers[5] = 11; print_r($odd_numbers);
Les tableaux peuvent contenir différents types de variables en fonction de vos besoins, et peuvent même contenir d'autres tableaux ou des objets comme membres.
Pour supprimer un élément d'un tableau, utilisez la fonction unset
sur
le membre lui-même. Par exemple :
$odd_numbers = [1,3,5,7,9]; unset($odd_numbers[2]); // supprimera le 3ème élément (5) de la liste print_r($odd_numbers);
4.1.1. Fonctions utiles
La fonction count
(compte) renvoie le nombre de membres trouvés dans
un tableau.
$odd_numbers = [1,3,5,7,9]; echo count($odd_numbers);
La fonction reset
récupère le premier élément d'un tableau. (Elle
réinitialise également le pointeur d'itération interne).
$odd_numbers = [1,3,5,7,9]; $first_item = reset($odd_numbers); echo $first_item;
On peut aussi utiliser la syntaxe d'index pour récupérer le premier membre d'un tableau, comme celà :
$odd_numbers = [1,3,5,7,9]; $first_item = $odd_numbers[0]; echo $first_item;
La fonction end
récupère le dernier membre d'un tableau.
$odd_numbers = [1,3,5,7,9]; $last_item = end($odd_numbers); echo $last_item;
Nous pouvons aussi utiliser la fonction count
pour obtenir le nombre
d'élémets dans la liste, et l'utiliser ensuite pour faire référence à la
dernière variable dans le tableau. Remarquez qu'on doit retrancher un à
la valeur de l'index terminal parceque les index commencent à zéro en
PHP, donc nous devons corriger le fait que nous ne comptons pas la
variable numéro zéro.
$odd_numbers = [1,3,5,7,9]; $last_index = count($odd_numbers) - 1; $last_item = $odd_numbers[$last_index]; echo $last_item;
4.1.2. Fonctions de pile et file
Les tableaux peuvent être utilisés comme des piles ou bien des files.
Pour ajouter un membre à la fin d'un tableau, utilisez la fonction
array_push
:
$numbers = [1,2,3]; array_push($numbers, 4); // maintenant le tableau est [1,2,3,4]; // affiche le nouveau tableau print_r($numbers);
Pour retirer un membre de la fin d'un tableau, utilisez la fonction
array_pop
:
$numbers = [1,2,3,4]; array_pop($numbers); // maintenant le tableau est [1,2,3]; // affiche le nouveau tableau print_r($numbers);
Pour ajouter un membre au début d'un tableau, utilisez la fonction
array_unshift
:
$numbers = [1,2,3]; array_unshift($numbers, 0); // maintenant le tableau est [0,1,2,3]; // affiche le nouveau tableau print_r($numbers);
Pour retirer un membre du début d'un tableau, utilisez la fonction
array_shift
:
$numbers = [0,1,2,3]; array_shift($numbers); // maintenant le tableau est [1,2,3]; // affiche le nouveau tableau print_r($numbers);
4.1.3. Concaténer des tableaux
Nous pouvons utiliser la fonction array_merge
pour concaténer deux
tableaux :
$odd_numbers = [1,3,5,7,9]; $even_numbers = [2,4,6,8,10]; $all_numbers = array_merge($odd_numbers, $even_numbers); print_r($all_numbers);
4.1.4. Trier les tableaux
On peut utiliser la fonction sort
pour trier les tableaux. La fonction
rsort
trie les tableaux dans l'ordre inverse. Remarquez que le tri est
fait dans le tableau fourni et ne renvoie pas un nouveau tableau.
$numbers = [4,2,3,1,5]; sort($numbers); print_r($numbers);
4.1.5. Fonction de tableaux avancées
La fonction array_slice
renvoie un nouveau tableau qui contient une
certaine partie d'un tableau spécifique à partir d'un décalage. Par
exemple, si on veut supprimer les 3 premiers éléments d'un tableau, on
peut faire ceci :
$numbers = [1,2,3,4,5,6]; print_r(array_slice($numbers, 3));
On peut aussi décider de récupérer une tranche d'une longueur précise. Par exemple, si nous voulons prendre seulement deux éléments, on peut ajouter un autre argument à la fonction :
$numbers = [1,2,3,4,5,6]; print_r(array_slice($numbers, 3, 2));
La fonction array_splice
fait exactement la même chose, mais par
contre, elle va aussi enlever la tranche qu'elle renvoie du contenu du
tableau d'origine (dans ce cas, la variable numbers
).
$numbers = [1,2,3,4,5,6]; print_r(array_splice($numbers, 3, 2)); print_r($numbers);
4.2. Exercise
- Créez un nouveau tableau qui contient les nombres pairs 2,4,6,8 et
- Le nom du nouveau tableau devrait être
$even_numbers
.
- Le nom du nouveau tableau devrait être
- Concaténez les tableaux
male_names
etfemale_names
pour créer le tableaunames
.
4.2.1. Code de départ
<?php // TODO: ajouter le tableau even_numbers ici $male_names = ["Jacques", "Éric", "Jean"]; $female_names = ["Jessica", "Beth", "Sandra"]; // TODO: grouppez les noms masculins et féminins dans un seul tableau $names = NULL; print_r($even_numbers); print_r($names); ?>
4.2.2. Sortie attendue
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ) Array ( [0] => Jacques [1] => Éric [2] => Jean [3] => Jessica [4] => Beth [5] => Sandra )
5. Tableaux à clés
5.1. Tutoriel
Les tableaux PHP sont en réalité des dictionnaires, ce qui signifie que toutes les valeurs des tableaux ont des clés, et les éléments à l'intérieur des tableaux conservent l'ordre. Quand on utilise les tableaux comme de simples listes comme nous l'avons vu dans le chapitre précédent, un compteur qui démarre à zéro est utilisé pour définir les clés. Chaque élément qui est ajouté au tableau incrémente alors l'index suivant de 1.
Un bon exemple d'utilisation des tableaux avec des clés est un répertoire téléphonique. Disons que nous voulons stocker les numéros de téléphone des gens dans une classe.
$phone_numbers = [ "Alex" => "415-235-8573", "Jessica" => "415-492-4856", ]; print_r($phone_numbers); echo "Le numéro de téléphone d'Alex est " . $phone_numbers["Alex"] . "\n"; echo "Le numéro de téléphone de Jessica est " . $phone_numbers["Jessica"] . "\n";
Pour ajouter un élément dans un tableau en utilisant une clé, nous utilisons l'opérateur des crochets, comme vous vous y attendez.
$phone_numbers = [ "Alex" => "415-235-8573", "Jessica" => "415-492-4856", ]; $phone_numbers["Michael"] = "415-955-3857"; print_r($phone_numbers);
Pour vérifier si une clé existe dans un tableau, on peut utiliser la
fonction array_key_exists
:
$phone_numbers = [ "Alex" => "415-235-8573", "Jessica" => "415-492-4856", ]; if (array_key_exists("Alex", $phone_numbers)) { echo "Le numéro de téléphone d'Alex est " . $phone_numbers["Alex"] . "\n"; } else { echo "Le numéro de téléphone d'Alex n'est pas dans le répertoire !"; } if (array_key_exists("Michael", $phone_numbers)) { echo "Le numéro de téléphone de Michael est " . $phone_numbers["Michael"] . "\n"; } else { echo "Le numéro de téléphone de Michael n'est pas dans le répertoire !"; }
Si on veut extraire seulement les clés du tableau (les noms), nous
pouvons utiliser la fonction array_keys
.
$phone_numbers = [ "Alex" => "415-235-8573", "Jessica" => "415-492-4856", ]; print_r(array_keys($phone_numbers));
Ou bien, pour obtenir seulement les valeurs d'un tableau (les numéros de
téléphone), on peut utiliser la fonction array_values
.
$phone_numbers = [ "Alex" => "415-235-8573", "Jessica" => "415-492-4856", ]; print_r(array_values($phone_numbers));
5.2. Exercise
Ajoutez un numéro au répertoire pour Éric, avec le numéro 415-874-7659, soit en l'ajoutant à la définition du tableau, soit comme ligne de code à part.
5.2.1. Code de départ
<?php $phone_numbers = [ "Alex" => "415-235-8573", "Jessica" => "415-492-4856",]; print_r($phone_numbers); ?>
5.2.2. Sortie attendue
Array ( [Alex] => 415-235-8573 [Jessica] => 415-492-4856 [Éric] => 415-874-7659 )
6. Chaînes
6.1. Tutoriel
Les chaînes sont des variables qui contiennent du texte. Par exemple, une chaîne qui contient un nom est définie comme suit :
$name = "Jean"; echo $name;
Nous pouvons facilement formatter des chaînes en utilisant des variables. Par exemple :
$name = "Jean"; $introduction = "Salut $name"; echo $introduction;
Nous pouvons aussi concaténer des chaînes en utilisant l'opérateur
point ".
". Par exemple :
$first_name = "Jean"; $last_name = "Bon"; $name = $first_name . " " . $last_name; echo $name;
Pour mesurer la longueur d'une chaîne, on utilise la fonction strlen
:
$string = "La longueur de cette phrase est 43 lettres."; echo strlen($string);
Pour découper un morceau d'une chaîne et le renvoyer comme nouvelle
chaîne, nous pouvons utiliser la fonction substr
:
$filename = "image.png"; $extension = substr($filename, strlen($filename) - 3); echo "L'extension du fichier est $extension";
6.1.1. Coller et séparer
On peut coller des tableaux pour former des chaînes, ou séparer des chaînes en tableaux de chaînes.
Par exemple, pour séparer une chaîne avec une liste de fruits séparés
par une virgule, on utilise la fonction explode
:
$fruits = "pomme,banane,orange"; $fruit_list = explode(",", $fruits); echo "Le second fruit dans la liste est $fruit_list[1]";
Pour recoller un tableau en une seule chaîne séparée par des virgules,
on utilise la fonction implode
:
$fruit_list = ["pomme","banane","orange"]; $fruits = implode(",", $fruit_list); echo "Les fruits sont $fruits";
6.2. Exercise
Séparez la chaîne qui contient la liste des nombres en un nouveau
tableau appelé number_list
.
6.2.1. Code de départ
<?php $numbers = "38,42,58,48,33,59,87,17,20,8,98,14,62,66,14,62,97,66,74,78,66,2,79,29,72,6,3,71,46,68,48,4,12,52,66,48,14,39,63,69,81,61,21,77,10,44,39,82,19,77,100,98,53,95,30,17,30,96,68,47,81,52,82,11,13,83,10,14,49,96,27,73,42,76,71,15,81,36,77,38,17,2,29,100,26,86,22,18,38,64,82,51,39,7,88,53,82,30,98,86"; // TODO: séparer la variable $numbers en un tableau // appelé $number_list print_r($number_list); ?>
6.2.2. Sortie attendue
Array ( [0] => 38 [1] => 42 [2] => 58 [3] => 48 [4] => 33 [5] => 59 [6] => 87 [7] => 17 [8] => 20 [9] => 8 [10] => 98 [11] => 14 [12] => 62 [13] => 66 [14] => 14 [15] => 62 [16] => 97 [17] => 66 [18] => 74 [19] => 78 [20] => 66 [21] => 2 [22] => 79 [23] => 29 [24] => 72 [25] => 6 [26] => 3 [27] => 71 [28] => 46 [29] => 68 [30] => 48 [31] => 4 [32] => 12 [33] => 52 [34] => 66 [35] => 48 [36] => 14 [37] => 39 [38] => 63 [39] => 69 [40] => 81 [41] => 61 [42] => 21 [43] => 77 [44] => 10 [45] => 44 [46] => 39 [47] => 82 [48] => 19 [49] => 77 [50] => 100 [51] => 98 [52] => 53 [53] => 95 [54] => 30 [55] => 17 [56] => 30 [57] => 96 [58] => 68 [59] => 47 [60] => 81 [61] => 52 [62] => 82 [63] => 11 [64] => 13 [65] => 83 [66] => 10 [67] => 14 [68] => 49 [69] => 96 [70] => 27 [71] => 73 [72] => 42 [73] => 76 [74] => 71 [75] => 15 [76] => 81 [77] => 36 [78] => 77 [79] => 38 [80] => 17 [81] => 2 [82] => 29 [83] => 100 [84] => 26 [85] => 86 [86] => 22 [87] => 18 [88] => 38 [89] => 64 [90] => 82 [91] => 51 [92] => 39 [93] => 7 [94] => 88 [95] => 53 [96] => 82 [97] => 30 [98] => 98 [99] => 86 )
7. Boucles for
7.1. Tutoriel
Les boucles for sont de simples boucles qui nous permettent d'itérer sur
une variable itérable en utilisant un index. Il y a deux types de
boucles for
- une simple boucle for (style C), et une boucle foreach
.
7.1.1. Boucle for
Les boudles for sont très utiles quand on a besoin d'itérer sur un
tableau et de faire référence aux membres du tableau en utilisant un
index mobile. Par exemple, disons qu'on a une liste de nombres impairs.
Pour les imprimer, on doit faire référence à chaque élément
individuellement. Le code qu'on écrit dans la boucle for peut utiliser
l'index i
, qui change à chaque itération de la boucle.
$odd_numbers = [1,3,5,7,9]; for ($i = 0; $i < count($odd_numbers); $i=$i+1) { $odd_number = $odd_numbers[$i]; echo $odd_number . "\n"; }
La première ligne de la boucle for définit 3 parties:
- l'instruction d'initialisation - dans notre cas, on initialise la
variable itérateur
$i
à 0. - l'instruction de condition - cette instruction est évaluée à chaque
boucle. La boucle s'arrête quand la condition n'est plus remplie. Cela
se produit quand la variable itérateur
$i
sera plus grande que la longueur du tableau. - l'instruction d'incrémentation - cette instruction est exécutée à
chaque itération pour incrémenter l'index de la variable du montant
voulu. D'habitude, on incrémentera
$i
de 1. Il y a aussi deux variantes plus courtes pour incrémenter une variable de 1. On peut utiliser$i+=1
ou aussi$i++
.
7.1.2. Boucle foreach
La boucle foreach itére sur un élément itérable tel qu'un tableau ou un objet, en fournissant les membres un par un à une variable spécifique.
Par exemple, disons que nous souhaitons créer une liste de tous les
nombres impairs entre 1 et 10, et les afficher un par un, comme dans
l'exemple précédent. Cette fois, nous allons utiliser l'instruction
foreach
au lieu d'une instruction for
classique avec une variale
itérateur. Au lieu d'utiliser la variable itérateur comme un index du
tableau, on récupère l'élément depuis le tableau directement dans la
variable $odd_number
.
$odd_numbers = [1,3,5,7,9]; foreach ($odd_numbers as $odd_number) { echo $odd_number . "\n"; }
Quand on itére parmi des tableaux à clés, on peut utiliser la syntaxe suivante :
$phone_numbers = [ "Alex" => "415-235-8573", "Jessica" => "415-492-4856", ]; foreach ($phone_numbers as $name => $number) { echo "le numéro de $name est $number.\n"; }
7.2. Exercise
Affichez tous les numéros présents dans le tableau, un par un, en
utilisant la séquence de caractères de fin de ligne \n
pour séparer
les résultats.
7.2.1. Code de départ
<?php $even_numbers = [2,4,6,8,10,12,14,16,18,20]; ?>
7.2.2. Sortie attendue
2 4 6 8 10 12 14 16 18 20
8. Boucles while
8.1. Tutoriel
Les boucles while sont de simples blocs qui s'exécutent de façon répétée jusqu'à ce que la condition de la boucle while ne soit plus remplie.
Voici un exemple de boucle qui est exécutée au total 10 fois :
$counter = 0; while ($counter < 10) { $counter += 1; echo "Execution - counter vaut $counter.\n"; }
La différence principale entre les boucles for et les boucles while est que les boucles for sont utilisées pour itérer sur un tableau ou un objet, et les boucles while s'exécuteront un nombre de fois inconnue, qui dépend de consitions variables (par exemple, jusqu'à ce qu'un utilisateur ait saisi une entrée correcte).
8.1.1. Instructions de contrôle
Les boucles peuvent être contrôlées en utilisant les instructions de
contrôle de flot break
et continue
, qui s'avèrent très pratiques
dans les boucles while. L'instruction break
quitte immédiatement la
boucle for au milieu du bloc, alors que l'instruction continue
revient
au sommet de la boucle while
, en re-vérifiant si la condition de
boucle est remplie également.
- L'instruction continue
Utilisons l'exemple précédent, mais cette fois, ajoutons une vérification pour voir si le nombre est pair. S'il l'est, on le sautera, de façon à ce que seuls les nombres impairs soient affichés.
$counter = 0; while ($counter < 10) { $counter += 1; if ($counter % 2 == 0) { echo "On saute $counter qui est un numéro pair.\n"; continue; } echo "Execution - counter vaut $counter.\n"; }
- L'instruction break
Supposons que nous voulions ajouter un autre test qui vérifie si la variable counter n'est pas plus grande que 8. Si elle l'est, on souhaiterait arrêter la boucle. Cela entrainera que le nombre 9 n'est pas affiché, dans cet exemple.
$counter = 0; while ($counter < 10) { $counter += 1; if ($counter > 8) { echo "counter est plus grand que 8, on arrête la boucle.\n"; break; } if ($counter % 2 == 0) { echo "On saute $counter qui est un numéro pair.\n"; continue; } echo "Execution - counter vaut $counter.\n"; }
8.2. Exercise
Utilisez une boucle while
pour afficher tous les nombres impairs
d'un tableau. Utilisez l'instruction continue
pour sauter les boucles
et éviter d'afficher les nombres pairs.
Souvenez-vous - vous avez besoin de la séquence de caractères \n
à la
fin des instructions echo pour continuer sur la ligne suivante.
Astuce: pour tester si un nombre est pair, vérifiez si le nombre
modulo 2 est égal à 0 ($number % 2 == 0
).
8.2.1. Code de départ
<?php $numbers = [56, 65, 26, 86, 66, 34, 78, 74, 67, 18, 34, 73, 45, 67, 75, 10, 60, 80, 74, 16, 86, 34, 12, 23, 42, 72, 36, 3, 73, 9, 92, 81, 94, 54, 97, 74, 45, 55, 70, 94, 96, 81, 86, 86, 84, 4, 32, 8, 96, 86, 87, 18, 84, 87, 59, 48, 32, 90, 17, 22, 82, 79, 66, 28, 17, 14, 80, 83, 66, 36, 21, 89, 68, 2, 51, 65, 20, 87, 48, 5, 1, 16, 60, 53, 84, 90, 16, 2, 37, 73, 57, 70, 57, 69, 68, 1, 24, 40, 72, 97]; // TODO: Affichez seulement les nombres impairs ?>
8.2.2. Sortie attendue
65 67 73 45 67 75 23 3 73 9 81 97 45 55 81 87 87 59 17 79 17 83 21 89 51 65 87 5 1 53 37 73 57 57 69 1 97
9. Fonctions
9.1. Tutoriel
Les fonctions sont de simples blocs de code que nous pouvons appeler de
n'importe où. Par exemple, on peut créer une fonction qui fait la somme
d'une liste de nombres et renvoie le résultat. Appelons cette fonction
sum
.
Il y a deux types de fonctions - les fonctions de la bibliothèque et les
fonctions des utilisateurs. Les fonctions de la bibliothèque, comme
array_push
font partie de la bibliothèque PHP et peuvent être
utilisées par n'importe qui. Par contre, vous pouvez utiliser vos
propres fonctions et les utiliser à travers votre code.
Une fonction reçoit une liste d'arguments séparés par des virgules. Tout argument existe seulement dans le contexte d'une fonction, ce qui signifie qu'ils deviennent des variables à l'intérieur du bloc de la fonction, mais ne sont pas définies en dehors de ce bloc de fonction.
// definit une fonction appelée `sum` qui // recevra une liste de nombres comme argument function sum($numbers) { // initialiser la variable qu'on renverra $sum = 0; // additionner les nombres foreach ($numbers as $number) { $sum += $number; } // renvoyer la somme à l'utilisateur return $sum; } // Exemple d'utilisation de sum echo sum([1,2,3,4,5,6,7,8,9,10]);
Après avoir défini des fonctions, vous pourriez charger d'autres
fichiers PHP dans vos fichiers, donc vous pourriez définir toutes vos
fonctions dans un fichier, et les charger pour un autre fichier. Disons
que nous avons défini la fonction sum
à l'intérieur d'un fichier
appelé sum.php
. Nous pouvons maintenant créer un autre fichier, disons
index.php
et utiliser la fonction sum
en incluant sum.php
comme
ceci :
include("sum.php"); // Exemple d'utilisation de sum echo sum([1,2,3,4,5,6,7,8,9,10]);
(Ce code ne marchera pas parce qu'il n'y a pas de modules définis dans l'environnement PHP).
9.2. Exercise
Créez une fonction squared_sum
qui renvoit la somme de chaque entier
dans un tableau, mis au carré.
9.2.1. Code de départ
<?php // Écrivez la fonction squared_sum ici echo squared_sum([56, 65, 26, 86, 66, 34, 78, 74, 67, 18, 34, 73, 45, 67, 75, 10, 60, 80, 74, 16, 86, 34, 12, 23, 42, 72, 36, 3, 73, 9, 92, 81, 94, 54, 97, 74, 45, 55, 70, 94, 96, 81, 86, 86, 84, 4, 32, 8, 96, 86, 87, 18, 84, 87, 59, 48, 32, 90, 17, 22, 82, 79, 66, 28, 17, 14, 80, 83, 66, 36, 21, 89, 68, 2, 51, 65, 20, 87, 48, 5, 1, 16, 60, 53, 84, 90, 16, 2, 37, 73, 57, 70, 57, 69, 68, 1, 24, 40, 72, 97]); ?>
9.2.2. Sortie attendue
382629
10. Objets
10.1. Tutoriel
PHP est un langage orienté objets, bien qu'il n'ait pas besoin d'être utilisé en tant que tel, puisque la plupart des fonctions PHP ne sont pas orientées objets.
Dans la programmation orientée objets, une class
-e est une définition
d'un objet, alors qu'un object
est une instance d'un objet, ce qui
signifie qu'à partir d'une classe vous pouvez créer de nombreux objets.
Par exemple, définissions une classe pour un étudiant.
class Student { // constructeur public function __construct($first_name, $last_name) { $this->first_name = $first_name; $this->last_name = $last_name; } public function say_name() { echo "Mon nom est " . $this->first_name . " " . $this->last_name . ".\n"; } } $alex = new Student("Alex", "Jones"); $alex->say_name();
Analysons le code. Remarquez que la classe Student
a une fonction
constructeur, qui est exécutée quand l'objet est créé. Le constructeur
reçoit des arguments qui sont fournis plus tard quand on construit
l'objet avec le mot-clé new
.
Après que nous ayons construit l'objet dans La variable $alex
nous
pouvons maintenant utiliser les méthodes de l'objet.
Nous avons implémenté une méthode d'objet say_name
, qui affiche le nom
de l'étudiant. Remarquez que la fonction say_name
ne reçoit pas
d'arguments, mais elle a accès aux nom et prénom de l'étudiant, parce
qu'ils ont été précédemment définis dans le constructeur.
Voici quelques définitions importantes liées aux objets :
- Classes définissent comment les objets se comportent. Les classes ne contiennent pas de données.
- Objets sont des instances des classes, qui contiennent les données.
- Membres sont des variables qui appartiennent à un objet.
- Méthodes sont les fonctions qui appartiennent à un objet, et ont accès à ses membres.
- Constructeur est une méthode spéciale qui est exécutée quand un objet est créé.
10.1.1. Héritage
La fonctionnalité la plus importante de la programmation orientée objets est l'héritage. Cette fonctionnalité nous permet de réutiliser le code que nous avons écrit et de l'étendre. Par exemple, disons que nos souhaitons définir un étudiant en maths, qui sait également comment additionner deux nombres.
class Student { // constructeur public function __construct($first_name, $last_name) { $this->first_name = $first_name; $this->last_name = $last_name; } public function say_name() { echo "Mon nom est " . $this->first_name . " " . $this->last_name . ".\n"; } } $alex = new Student("Alex", "Jones"); $alex->say_name(); class MathStudent extends Student { function sum_numbers($first_number, $second_number) { $sum = $first_number + $second_number; echo $this->first_name . " dit que " . $first_number . " + " . $second_number . " est " . $sum; } } $eric = new MathStudent("Éric", "Chang"); $eric->say_name(); $eric->sum_numbers(3, 5);
Remarques que l'objet d'Éric dispose aussi du même constructeur et de la
fonction say_name
, en plus de la nouvelle méthode appelée
sum_numbers
, qui permet à Éric de calculer la somme de deux nombres.
Remarques aussi que la nouvelle fonction a accès aux mêmes membres que
nous avons déjà définis dans la classe Student (first_name
,
last_name
).
10.1.2. Fonctions publiques et privées
Nous pouvons utiliser les modifieurs public
et private
respectivement pour définir des fonctions auxquelles on peut accéder
depuis l'extérieur de l'objet ou non, pour des besoins d'encapsulation.
Ceci permet de mieux définir comment les objets devraient être utilisés,
pour distinguer entre les fonctions qui sont utilisées pour des besoins
internes, ou a l'inverse pour une interface externe.
class Student { // le constructeur devrait être public public function __construct($first_name, $last_name) { $this->first_name = $first_name; $this->last_name = $last_name; } // pour utilisation externe public function say_name() { echo "Mon nom est " . $this->full_name() . "\n"; } // pour utilisation interne private function full_name() { return $this->first_name . " " . $this->last_name; } } $alex = new Student("Alex", "Jones"); $alex->say_name(); // ceci ne marchera pas // echo $alex->full_name();
10.2. Exercise
Créez une classe appelée Car (voiture) avec un constructeur qui reçoit
la marque et l'année de fabrication de la voiture, et une fonction
appelée print_details
qui affiche les détails de la voiture.
Par exemple, pour une voiture Toyota de 2006, la ligne suivante serait affichée :
Cette voiture est une Toyota de 2006.
10.2.1. Code de départ
<?php // TODO: Implémentez la classe Car ici $car = new Car("Toyota", 2006); $car->print_details();
10.2.2. Sortie attendue
Cette voiture est une Toyota de 2006.
11. Solutions
11.1. Solution "Salut tout le monde !"
<?php echo "Salut, tout le monde !"; ?>
11.2. Solution "Variables et types"
<?php $name = "Jacques"; $age = 20; echo "Salut $name. Vous avez $age ans.\n"; $x = 195793; $y = 256836; $sum = $x + $y; echo "La somme de $x et $y est $sum." ?>
11.3. Solution "Tableaux simples"
<?php // TODO: ajouter le tableau even_numbers ici $even_numbers = [2,4,6,8,10]; $male_names = ["Jacques", "Éric", "Jean"]; $female_names = ["Jessica", "Beth", "Sandra"]; // TODO: grouppez les noms masculins et féminins dans un seul tableau $names = array_merge($male_names, $female_names); print_r($even_numbers); print_r($names); ?>
11.4. Solution "Tableaux à clés"
<?php $phone_numbers = [ "Alex" => "415-235-8573", "Jessica" => "415-492-4856",]; $phone_numbers["Éric"] = "415-874-7659"; print_r($phone_numbers); ?>
11.5. Solution "Chaînes"
<?php $numbers = "38,42,58,48,33,59,87,17,20,8,98,14,62,66,14,62,97,66,74,78,66,2,79,29,72,6,3,71,46,68,48,4,12,52,66,48,14,39,63,69,81,61,21,77,10,44,39,82,19,77,100,98,53,95,30,17,30,96,68,47,81,52,82,11,13,83,10,14,49,96,27,73,42,76,71,15,81,36,77,38,17,2,29,100,26,86,22,18,38,64,82,51,39,7,88,53,82,30,98,86"; $number_list = explode(",", $numbers); print_r($number_list); ?>
11.6. Solution "Boucles for"
<?php $even_numbers = [2,4,6,8,10,12,14,16,18,20]; foreach ($even_numbers as $even_number) { echo $even_number . "\n"; } ?>
11.7. Solution "Boucles while"
<?php $numbers = [56, 65, 26, 86, 66, 34, 78, 74, 67, 18, 34, 73, 45, 67, 75, 10, 60, 80, 74, 16, 86, 34, 12, 23, 42, 72, 36, 3, 73, 9, 92, 81, 94, 54, 97, 74, 45, 55, 70, 94, 96, 81, 86, 86, 84, 4, 32, 8, 96, 86, 87, 18, 84, 87, 59, 48, 32, 90, 17, 22, 82, 79, 66, 28, 17, 14, 80, 83, 66, 36, 21, 89, 68, 2, 51, 65, 20, 87, 48, 5, 1, 16, 60, 53, 84, 90, 16, 2, 37, 73, 57, 70, 57, 69, 68, 1, 24, 40, 72, 97]; // TODO: Affichez seulement les nombres impairs $index = 0; while( $index < count( $numbers ) ) { $number = $numbers[ $index ]; ++$index; if( $number % 2 == 0 ) continue; echo "$number\n"; } ?>
11.8. Solution "Fonctions"
<?php // Écrivez la fonction squared_sum ici function squared_sum($numbers) { // initialiser la variable qu'on renverra $sum = 0; // additionner les nombres foreach ($numbers as $number) { $sum += $number * $number; } // renvoie la somme à l'utilisateur return $sum; } echo squared_sum([56, 65, 26, 86, 66, 34, 78, 74, 67, 18, 34, 73, 45, 67, 75, 10, 60, 80, 74, 16, 86, 34, 12, 23, 42, 72, 36, 3, 73, 9, 92, 81, 94, 54, 97, 74, 45, 55, 70, 94, 96, 81, 86, 86, 84, 4, 32, 8, 96, 86, 87, 18, 84, 87, 59, 48, 32, 90, 17, 22, 82, 79, 66, 28, 17, 14, 80, 83, 66, 36, 21, 89, 68, 2, 51, 65, 20, 87, 48, 5, 1, 16, 60, 53, 84, 90, 16, 2, 37, 73, 57, 70, 57, 69, 68, 1, 24, 40, 72, 97]); ?>
11.9. Solution "Objets"
<?php class Car { public function __construct($brand, $year) { $this->brand = $brand; $this->year = $year; } public function print_details() { echo "Cette voiture est une " . $this->brand . " de " . $this->year . ".\n"; } } $car = new Car("Toyota", 2006); $car->print_details();