Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
January 23, 2022 06:02 pm GMT

Apprendre le PHP : Conditions, boucles et fonctions

Aujourd'hui, vous apprendrez les conditions, les boucles et les fonctions

Ce cours acclr PHP est gratuit et sera publi ici sur dev.to. Je publierai un nouvel article tous les deux jours environ. Pour ne rien manquer, vous pouvez me suivre sur twitter : Follow @EricLeCodeur

Excution conditionnelle

En PHP, il est possible dexcuter une ligne de code seulement si une condition est vraie.

if ($name == 'Mike') {    echo 'Hello Mike';}

Le code inclut entre les parenthses est ce que lon appel une expression. PHP va excuter ce code et retourner sa valeur boolenne (vrai ou faux).

Si le rsultat est vrai alors le code contenu entre les { } sera excut.

Si le rsultat est faux, rien ne sera excut dans ce bloc 'if'

Voici un autre exemple avec loprateur plus grand que '>'

if ($amount > 100) {    echo 'Livraison gratuite';}

Il est possible dexcuter du code si la condition est fausse

$amount = 120;if ($amount > 100) {    echo 'Livraison gratuite';} else {    echo 'Livraison 9.95$';}

Ici le mot-cl 'else' excute le code si lexpression est false

Enfin, il est possible davoir plusieurs conditions

$amount = 120;if ($amount > 100) {    echo 'Livraison gratuite';} elseif ($amount > 50) {    echo 'Livraison 9.95$';} else {    echo 'Livraison 19.95$';}

Le mot-cl 'elseif' permet de tester une autre condition. noter que cette condition sera teste seulement si la premire condition est fausse.

Si la premire et la deuxime condition sont fausses, alors le code dans la section 'else' sera excut.

Oprateur de comparaison

Voici les diffrents oprateurs qui peuvent tre utiliss dans les expressions.

== equal no type check
=== equal with type check
!= not equal
|| or
&& and
> greater than
< less than

il est possible de tester plusieurs expressions en mme temps avec loprateur &&

if ($amount > 0 && $amount < 50) {   echo 'Le prix est entre 1 et 49';}

Le mme principe sapplique pour loprateur ou ||

if ($amount === 100 || $amount === 200) {   echo 'Le prix est 100$ ou 200$';}

Les expressions sans oprateur de comparaison

$amount = 0;if ($amount) {    echo 'Le montant n est pas de zro';}

Ici lexpression ($amount) ne contient pas doprateur de comparaison, malgr ce fait, ce code est valide. Pourquoi ? En PHP chaque expression est convertie en valeur boolenne. Donc ici 0 est convertie en faux. Toute autre valeur autre que zro (ou null) serait convertie en vrai.

Convertion en valeur boolenne

Voici la liste des valeurs qui seront converties en false

false

0

0.0

null

0 (string gale zro)

(string vide)

Toutes les autres valeurs seront converties en true

Voici quelques exemples de conversion en valeur boolenne

$messsage = 'Hello World';if ($message) { // true   echo $messsage;}
if ($value) {    echo 'Variable is set';} else {    echo 'Variable is unset';}

Utiliser les 'if' dans un fichier HTML

<html lang="en"><body>    <?php $isAdmin = true; ?>    <h1>Home page</h1>    <?php if ($isAdmin) : ?>        <p>Welcome Administrator</p>    <?php else : ?>        <p>Welcome Guest</p>    <?php endif ?></body></html>

Chaque bloc de code PHP a une balise douverture et de fermeture. La particularit ici cest le bloc de code du if et du else . Il ny a pas { }. Il est possible dutiliser les : la place.

Switch

Si nous avons plusieurs conditions, les 'if', 'elseif' etc.. peuvent donner un code difficile lire. Dans ce cas linstruction 'switch' permet justement daider simplifier votre code.

switch ($color) {    case 'red':        echo 'Danger';         break;    case 'yellow':        echo 'Warning';        break;    case 'green':        echo 'Success';        break;    default:        echo 'The color is unknown';}

La premire ligne reprsente lexpression que nous dsirons valuer : switch($color)

Ensuite suffit dinclure les case possible.

La fonction break empche lexcution de continuer

Le case default est utilis s'il y a aucun case qui correspond.

Match

Nouveaut PHP 8.1, cette instruction permet de retourner une expression selon une correspondance cl valeur

$type = match($color) {    'red' => 'danger',    'yellow', 'orange' => 'warning',    'green' => 'success',    default => 'Unknown'};

La premire ligne reprsente lexpression que nous dsirons vrifier la correspondance: match($color)

Sur la deuxime ligne on remarque quil est possible de correspondre plus dune expression la fois.

Ensuite sen suit une liste de cl valeur. Si aucune clvaleur nest trouv, la cl default sera excute.

noter que la cl peut tre une expression et que la valeur peut tre galement, une expression et mme une fonction.

$type = match($color) {    userID = 100 => openAdmin(),    userID < 100 && userID > 0 => openUser(),    default => openOther()};

Switch ou Match ?

Chacun possde des plus. Match est plus simple visuellement mais Switch permet dexcuter plus dune ligne de code pour chaque case. Match permet de retourner une valeur ce que Switch ne fait pas. Bref moi jutilise Match si possible car je trouve linstruction plus pure visuellement mais sinon je n'ai pas de problme avec linstruction switch

Ternary operator ?:

Cest une syntaxe raccourcie pour un if...else.

Voici un exemple avec if...else

if ($isValid) {    echo 'user valid';} else {    echo 'user not valid';}

Voici le mme exemple mais avec loprateur Ternary

echo $isValid ? 'user valid' : 'user not valid';

Si lexpression qui prcde Loprateur ? est vraie alors la valeur suivant ? sera utilis, sinon cest la valeur suivant les : qui sera utilis.

L'oprateur de coalescence Null ??

L'oprateur de coalescence Null renvoie son premier oprande s'il existe et n'est pas NULL; sinon il renvoie son deuxime oprande

echo $name ?? 'Mike';  //output 'Mike' if $name is null

Assignation avec l'oprateur de coalescence Null ??

$name ??= 'Mike';

Assigne la valeur Mike si la variable $name est null

Oprateur Null safe

echo $user?->profile?->activate();

Si une des variables qui prcde loprateur ? est null alors la valeur de lexpression sera null

Les boucles

La boucle while

Permet dexcuter un block de code un certain nombre de fois. Le nombre de fois va dpendre de la condition. Tantque la condition est vrai, le block de code va sexcuter.

$number = 1;while ($number < 10) {    echo 'value : ' . $number ;    $number += 1;}

Ici le bloc de code sera excut 9 fois.

La boucle do while

Essentiellement le mme principe que la boucle while mais dans ce cas-ci, le bloc de code va toujours sexcuter au moins une fois. La condition tant test seulement la fin du bloc de code.

$number = 1;do {    echo 'value : ' . $number ;    $number += 1;} while ($number < 10);

La boucle for

Permet dexcuter un bloc de code un nombre de fois dfinit par une condition.

for ($i = 0; $i < 20; $i++) {    echo "i value = " . i;}

Le paramtre se divise en trois sections, le premire tant la dfinition du compteur (i = 0). Ensuite la condition respecter pour excuter le bloc de code ($i < 20) et enfin le code excuter chaque itration ($i++)

La boucle foreach

La fonction foreach permet dexcuter un bloc de code pour chaque lment dun tableau.

$names = ['Mike', 'Shawn', 'John'];foreach($names as $name) {    echo 'Hello ' . $name;}

Le premier paramtre cest le nom du tableau parcourir, le second paramtre reprsente la rfrence llment en cours.

Break et Continue

Les instructions break et continue permettent de modifier la boucle

for ($i = 0; $i < 20; $i++) {    if ($i % 2 === 0) {        continue;    }    echo $i . '<br>';}

Cette boucle va imprimer la valeur de $i, seulement lorsque la valeur sera impaire.

Si la valeur est paire ($i % 2 === 0). Alors on demande la boucle de faire un continue avec la prochaine valeur.

Il est possible de sortir de la boucle tout moment avec linstruction break

$i = 0;while ($i < 10000) {    $i++;    if ($i == 10) {        break;    }    echo $i . '<br>';}

Ici la boucle va sarrter lorsque $i aura 10 comme valeur

Les fonctions

En PHP il existe plusieurs fonctions dj pr-dfinit. Il est galement possible de crer nos propres fonctions.

Les fonctions permettent dviter de rpter notre code plusieurs fois. Elles permettent galement de diviser notre application en petit morceau plus facile maintenir.

La syntaxe pour crer une fonction est assez simple

function hello() {    echo 'Hello World';}

Ici nous utilisons le mot-cl function suivit du nom de notre fonction.

Une fois notre fonction cre, il est possible de lancer son excution

hello();

Il est possible dinclure un ou des paramtres notre fonction

function hello($firstName, $lastName) {    echo 'Hello' . $firstName . ' ' . $lastName;}

Le lancement de la fonction devra inclure les paramtres dans lordre quils ont t dclars

hello('Mike', 'Taylor');

Une valeur par dfaut peut-tre attribu un paramtre ce qui du coup rendra se paramtre optionnel lors de lappel de la fonction.

function hello($firstName, $lastName = 'none') {    echo 'Hello' . $firstName . ' ' . $lastName;}hello('Mike');// Mike none

noter que les paramtres avec une valeur par dfaut doivent absolument tre dfinit en dernier ordre.

Depuis la version 8 de PHP il est possible de lancer une fonction en nommant les paramtres. Lappel est plus clair et lordre des paramtres na pas tre respect.

hello(lastName: 'Taylor', firstName: 'Mike');

Linstruction Return

Permet de retourner une valeur lorsque lon l'appel la fonction.

function fullName($firstName, $lastName) {    return $firstName . ' ' . $lastName;}echo fullName('John', 'Doe');

Ici la fonction retourne une string concatn avec prnom et nom

La fonction echo va afficher sur la page web la valeur retourne par la fonction fullName()

Fonctions anonymes (closure)

Permet la cration de fonctions sans prciser leur nom. Voici un exemple :

$sum = function ($a, $b) (    return $a + $b;);echo $sum(10, 15);

Les fonctions anonymes se terminent par un semi colon ; Et elles ne peuvent pas accder aux variables du contexte parent.

Il est possible de passer une variable depuis le contexte parent avec linstruction use

x$ = 10;$sum = function ($a, $b) use $x (    return $x + $a + $b;);echo $sum(10, 15);// 35

Callback functions

Les fonctions Callback sont des fonctions anonymes pass comme paramtre. Voici un exemple

$products = ['iPhone 12', 'iPhone 13', 'iPad', 'iWatch'];$filtered_products = array_filter($products, function ($product) {    return str_contains($product, 'Phone');});print_r($filtered_products);// Array ( [0] => iPhone 12 [1] => iPhone 13 )

Ici la fonction array_filter() possde une fonction anonyme comme deuxime paramtre.

Arrow functions

Permet lutilisation dune syntaxe raccourci:

$products = ['iPhone 12', 'iPhone 13', 'iPad', 'iWatch'];$filtered_products = array_filter($products, fn ($product) => str_contains($product, 'Phone'));print_r($filtered_products);

noter que pour le moment, les Arrow fonctions permettent lexcution de seulement une expression. Les Arrow function sont excut dans le contexte en cours donc peuvent utiliser les variables sans avoir utiliser linstruction use.

Fonction Type Hint

noter que les fonctions peuvent tre typ (string, int, etc.). Il est possible de dfinir un type pour chacun des paramtres et un type pour la valeur de retour de la fonction.

function display(string $first, string $last) : string {    return "$first $last";}

Ici les paramtres $first et $last devront tre de type string ainsi que le valeur de retour.

Il existe plusieurs autres trucs savoir sur les fonctions typ, nous y reviendrons un peu plus tard.

Strict Type

Voici un exemple dune fonction avec type

function add(int $a, int $b): int{    return $a + $b;}echo add('10', 20);// 30

Dans cette exemple le paramtre $a est de type integer. Malgr tout PHP ne retourne pas derreur. La raison cest que PHP va tenter de convertir la string 10 en integer. Si la conversion est possible alors aucune erreur nest rapport.

Il arrive parfois que vous aimeriez que PHP ne permette pas cette conversion et excute seulement si le paramtre est vraiment du type spcifi. Pour ce faire il faut ajouter un instruction au dbut de votre fichier.

declare(strict_types=1);function add(int $a, int $b): int{    return $a + $b;}echo add('10', 20);// TypeError

Ici une erreur est retourne car le type du paramtre nest pas un integer

Conclusion

C'est tout pour aujourd'hui, je publierai un nouvel article tous les deux jours environ. Pour tre sr de ne rien rater vous pouvez me suivre sur twitter : Suivre @EricLeCodeur


Original Link: https://dev.to/ericlecodeur/apprendre-le-php-conditions-boucles-et-fonctions-1ed1

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To