• Aucun résultat trouvé

Programmation web avec PHP (Personal Home Page)Olivier Le Cadet PHP

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation web avec PHP (Personal Home Page)Olivier Le Cadet PHP"

Copied!
71
0
0

Texte intégral

(1)

PHP

Programmation web avec PHP (Personal Home Page)

Olivier Le Cadet

IUT Vélizy SRC2

(2)

Le HTML

HTML est un langage de marquage indiquant au navigateur comment doit afficher une page web.

Il permet de mettre en forme des textes,

d'afficher des images, de créer des tableaux etc...

(3)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Le titre de la page web</title>

</head>

<body>

Ceci est une <b>page web</b> avec des <big> mots </big> en gras, en <i>italique</i> et

<table width="20%" border="1">

<tr>

<td>un</td>

<td>tableau</td>

</tr>

</table>

</body>

Code source de la page web

(4)

Protocole http

(5)

Rendre dynamique le html

Afficher l'heure actuelle

Ne pas avoir à réécrire une page web dès qu'un fichier y est rajouté

Traiter les formulaires

Envoyer automatiquement des news quand une modification est faite

Gérer une base de données

Nombre de visiteurs

etc...

Oui, mais comment :

(6)

Une solution : le PHP

+

Langage de script interprété (pas compilé)

Donc, portable (le même script marchera sur plusieurs plateformes)

Simple à apprendre

Librairies riches

Open Source (gratuit)

Peu robuste : éviter pour les très gros projets!

-

(7)

Historique du PHP

1994 : création de PHP par Rasmus Lerdorf (compter le nombre de visiteurs de son cv!).

Même année : connexion à des bases de données rendue possible.

1995 : PHP 2

1998 : PHP3 (prog. Orientée Objet).

2000 : PHP 4

2004 : PHP 5 (15 millions de pages web!)

(8)

Un exemple : horloge.

Page présente sur le serveur.

<html>

<head>

<title>Horloge</title>

</head>

<body>

<p> Nous sommes le

<?php setlocale(LC_TIME,'fr_FR');

echo strftime("%A %e %B %Y")?>.<br>

Il est <?php echo strftime("%H h %M") ?>

</p>

</body>

</html>

(9)

Ex2: traitement des formulaires

<form name="formulaire" method="POST"action="ResultatRequete.php">

<table width="80%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td>Matière

<select name="matiere[]" multiple>

<option value="tout" selected>Tout</option>

<option value="geometrie">Géométrie</option>

</select>

</td>

<td></td>

<td>Niveau

<select name="niveau[]" id="niveau" multiple>

<option value="tout" selected>Tout</option>

<option value="seconde">Seconde</option>

</select>

</td>

</tr>

<tr>

<td><input type="submit" name="Submit" value="Envoyer"></td>

</tr>

(10)

Page vue par le client

<html>

<head>

<title>Horloge</title>

</head>

<body>

<p> Nous sommes le

mercredi 3 septembre 2008.<br />

Il est 21 h 13 </p>

</body>

Lorsqu'un client requiert la page précédente, le serveur

traite les instructions php et les traduit en html. On obtient :

(11)

PHP à grands traits

Code entre <?php et ?>

Inclus dans du html

Sensible à la casse : header() ≠ Header() Instructions terminées par ;

Blocs d'instructions délimités par { . . . }

Commentaires avec // en fin de ligne ou /* . . . */

Toujours se référer à la documentation officielle:

http://fr.php.net/manual/fr/

(12)

Premiers pas en PHP

Les données

(13)

Variables

Préfixées par $

Déclaration :

La déclaration n'est pas obligatoire

Règles de nommage identiques à java.

La variable est créée à la première utilisation (ex: $var = 1).

Par défaut, elle vaut NULL

Quelques fonctions utiles :

isset() teste l'existence d'une variable

unset() supprime une variable

(14)

Constantes

Définies grâce à define Ex : define('PI', 3.14);

On ne peut pas les modifier.

define('CARRE',$a*$a) //ERREUR

Par convention, on les écrit en majuscules.

(15)

Types de données

PHP est faiblement typé (typage implicite)

PHP connaît en interne différents types :

Entiers : -152 Flottants : 13.2

Chaînes : " Ceci est une chaine "

Booléens : TRUE, FALSE Tableaux

Objets

Fonctions utiles : get_type(), is_integer(), is_string() ...

(16)

Les nombres

Opérateurs numériques :

identiques à ceux du C et du java.

Affectation : =

Calcul : + - * /

Combiné : += -= *= /=

Modulo : %

Comparaison : == < <= > >= !=

Incrémentation/décrémentation : ++ --

Exemple :

$a = 1;

$a++;

(17)

Les chaînes de caractères

Sans interpolation : ' . . . '

$a="Leduc"; // affichera :

$t='Salut à toi M. $a'; // salut à toi M. $a

Avec interpolation " . . . "

$a="Leduc"; // affichera :

$t="Salut à toi M. $a"; // salut à toi M. Leduc

(18)

Les chaînes de caractères (string)

Affichage : echo / printf()

Exemple : echo "<p>La variable $a</p>";

Opérateur :

Concaténation : . // $t = "Bonjour ".$a;

Comparaison : == < <= >= !=, strcmp() Caractères spéciaux pour contrôler le flux affiché :

\n saut de ligne \t tabulation \' \"

(19)

Tests et boucles

PHP utilise la syntaxe du C (et du java)

for ($i=0;$i<100; $i++){ if ($a>10){

. . . . . . } }

else{

switch($var){ . . .

case 'a' : . . . }

break;

default: . . .

break; while ($i<100){

} . . .

}

(20)

Exercices

1. Qu'affichent les instructions suivantes?

$a=1;

$b="2+$a";

$a=2;

echo $b . $a;

2. Ecrivez un programme, qui en fonction de la valeur d'une variable $jour (entier compris entre 1 et 7) affiche le jour de la semaine.

3. Faites afficher la table de multiplication par 7.

(21)

Attention aux comparaisons!

Pour comparer deux variables de types différents, PHP effectue des conversions implicites.

if (3=="3") echo "1\n";

if (0=="") echo "2\n";

if ("FALSE"==TRUE) echo "3\n";

Pour interdire les conversions lors d'une comparaison il faut utiliser les opérateurs === et !==

if (3==="3") echo "1\n"; //FALSE if (0==="") echo "2\n"; //FALSE

if ("FALSE"===TRUE) echo "3\n"; //FALSE

(22)

Les fonctions

(23)

Les fonctions

Syntaxe similaire au C (et java), sans le typage

Définition d'une fonction :

Appel d'une fonction : $nombre= fact(4);

Les variables définies à l'extérieur de la fonction n'y sont pas connues (sauf var. globales).

Récursivité possible.

En sortie, les paramètres passés à la fonction sont inchangés (passage par valeur).

Mais on peut passer les paramètres par référence (&):

function factoriel($n){

. . .

return $res;

}

Function puissance(&$nombre,&$indice){ . . . }

(24)

Exemples et exercices

Ecrivez la fonction qui calcule le carré d'un nombre.

Qu'affiche le programme ci-dessous? Et si l'on rajoute un & devant chacun des paramètres?

function puissance($nombre,$indice){

$resultat=$nombre;

for ($x=$indice; $x>0; $x--){

$resultat = $resultat * $nombre;

}

$nombre=$resultat;

return $nombre;

}

$nombre=2; $indice=5;

echo $nombre." puissance ".$indice." vaut ".puissance($nombre,

(25)

Variables globales

On peut déclarer des variables qui seront

connues dans tout le script, y compris dans le champ de définition des fonctions : global

global $var=3;

function test($n){

return $n+$var;

}

A éviter autant que possible!!

(26)

Les tableaux

(27)

Les tableaux

Un tableau est une collection ordonnée de couples clé/valeur. La clé peut être de type entier ou de type chaîne de caractères (tableaux associatifs)

Déclarations : $fruits=array();

Affectations :

$fruits[0]="pommes";

$fruits[1]= "poires";

$fruits[]="oranges";

Déclaration+affectation :

$fruits=array("pommes", "poires", "oranges");

Quelques fonctions utiles sur les tableaux : sizeof(), sort(), count(), in_array() ...

(28)

Les tableaux associatifs

Déclaration : $calories=array();

Affectations :

Affectation + déclaration :

$calories=array("pommes"=>300, "bananes"=>500);

Exemple : $tab["nom"]="Le Cadet";

echo $tab["nom"];

$calories["pommes"]=300;

$calories["bananes"]=500;

(29)

Parcours de tableau

Pour un tableau numérique, méthode classique:

Pour un tableau associatif : foreachforeach

for ($i=0; $i<count($tab); $i++){

echo "$tab[$i]\n";

}

foreach ($tableau as $indice => $valeur){

echo "$indice : $valeur\n";

}

(30)

Tableaux multidimensionnels

On peut créer des tableaux de tableaux (voir TDs) => tableaux multidimensionnels.

Pour parcourir de tels tableaux, il faut en général imbriquer plusieurs boucles foreach

Exemple :

$couleurs=array("vives"=>array("rouge"=>"FF0000", "vert"=>"00FF00", "bleu"=>"0000FF"), "douces" => array("rose"=>"FE9ABC", "jaune"=>"FDF189"));

(31)

Exercice (tableau)

Créez un tableau qui associe à la France, à l'Allemagne, et à l'Angleterre leurs capitales (Paris, Berlin, Londres), puis faites écrire une phrase qui recense les villes présentes dans le tableau et affiche leurs capitales ("la capitale de la France est Paris", etc…)

(32)

Compléments sur les tableaux

On peut parcourir un tableau à l'aide d'un pointeur grâce aux fonctions current(), next(), prev()

key($tab) renvoie l'indice courant de $tab.

Exo : écrire une fonction qui affiche le contenu d'un tableau grâce à current() et next()

shuffle() mélange aléatoirement les val. d'un tableau

Un tableau peut être géré comme une pile (fonction array_push() et array_pop() ).

(33)

Compléments sur les chaînes de caractère. Expressions régulières.

$chaine{$i} -> ième (en commençant à 0..) caractère de la chaîne

strlen($chaine) -> longueur de la chaîne

strtolower(), strtoupper() -> met en minuscule, majuscule

substr($chaine,$debut,$n) -> extrait $n caractères de $chaine

ereg() -> Teste des expressions régulières. Exemple :

^[a-z|\.|\-]+@[a-z|\.|\-]+\.(org|com|net|fr)$ désigne toutes les adresses mails composées d’un mot en lettres en minuscules avec éventuellement des . Et des -, suivies du caractère @, suivi d’un nouveau mot composé de minuscule, de . Et de tirets. Le mail doit se terminer par .org, .com, .net, ou .fr.

Ainsi, ereg("^[a-z|\.|\-]+@[a-z|\.|\-]+\.(org|com|net|fr)$« ,$courrier)

va tester si la chaîne de caractère $courrier suit bien le patron indiqué en premier argument.

ereg_replace($expr_reg,$nouvelle_chaine,$texte)

(34)

Les Formulaires

(35)

Formulaire HTML

Balise <form>. Attributs obligatoires method et action.

Peut être composé de (INPUT type=…):

Texte (text)

Cases à cocher (checkbox)

Bouton d'envoi, reset (submit, reset)

Password (password)

Bouton radio (radio)

Ou de liste de sélection (SELECT name=), zone de texte (textarea)

(36)

Traitement d'un formulaire grâce à PHP

Exemple 1

Poster ce formulaire se traduira par un accès à la page

http://localhost/formulaire.php?login="Jean"&form=1

Accéder à ces infos en php : $_GET["login"]

<form action="http://localhost/formulaire.php method="GET">

<p>

<input type="text" name="login" value="" />

<button type="submit" name="form" value="1">OK</button>

</p>

</form>

(37)

Variables super-globales

Les valeurs saisies sont enregistrées dans un tableau associatif $_GET (ou

$_POST pour la méthode POST). Ce sont des variables super-globales (toujours accessibles).

Méthode POST plus sure : les variables n'apparaissent pas en clair dans la barre d'adresse…

Le tableau $_REQUEST est la fusion de $_GET et $_POST.

Afficher le login entré par l'utilisateur, dans l'exemple précédent :

Il existe d'autres variables super-globales : $_FILES (tableau pour les fichiers envoyés), $_SERVER (info diverses sur le serveur), $_COOKIE et

$_SESSION (voir plus loin). Ce sont des tableaux.

<?php if (isset($_GET["login"])

echo "<br />Bonjour, ".$_GET["login"]." !\n";

?>

(38)

Traitement des valeurs multiples

Certains champs autorisent la saisie de plusieurs valeurs sous le même nom

(checkbox, listes à choix multiple).

Il faut récupérer les infos sous forme de tableau.

Exemple 2

(39)

Formulaire html de l'exemple 2

<form name="formulaire" method="POST" action="ResultatRequete.php">

<table width="80%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td></td>

<td>Niveau

<select name="niveau[]" id="niveau" multiple>

<option value="tout" selected>Tout</option>

<option value="terminale">Terminale</option>

<option value="universite">Université</option>

</select>

</td>

<td></td><td>

<td>N'afficher que les <br>

pdf <input name="format[]" type="checkbox" value="pdf">

tex <input name="format[]" type="checkbox" value="tex">

doc <input name="format[]" type="checkbox" value="doc">

</td>

<td></td>

<td><input type="submit" name="Submit" value="Envoyer"></td>

</tr>

(40)

Traitement des données multiples

$_POST["niveau"] et $_POST["format"] sont eux-mêmes des tableaux.

Les valeurs qu'ils contiennent peuvent être

récupérées à l'aide d'un foreach, par exemple.

foreach ($_POST["niveau"] as $indice=>$valeur){ … }

Exercices :

en parcourant le tableau $_POST["format"] de

l'exemple précédent, faites afficher les formats demandés par l'utilisateur.

Ecrire un formulaire d'authentification avec mot de passe

(41)

Les fichiers

(42)

Ouvrir/fermer/lire/écrire un fichier

Ouvrir en lecture: fopen() $fp=fopen("fichier.txt","r");

Ouvrir en écriture: $fp=fopen("fichier.txt","w");

Lire : fread(), fgets() $ligne=fgets($fp,256);

Fin de fichier : feof() while (!feof($fp)){…};

Ecrire : fwrite() fwrite($fp,"Bonjour");

Fermer : fclose() fclose($fp);

Copier : copy() copy("un.txt","deux.txt");

Effacer : unlink() unlink("un.txt");

Renommer : rename() rename("un.txt","deux.txt");

(43)

Charger des fichiers

Charger sur le serveur :

Télécharger :

<HTML><BODY>

<form action="charger.php" method="POST" enctype="multipart/form-data">

Introduire le fichier : <input type="file" name="fichier"><br />

<input type="hidden" name="taille_max" value=1000>

<input type="submit">

</BODY></HTML>

<?php

$fichier="ex.zip";

$mimeType="application/zip";

header("content-disposition: attachment; filename="ex.zip");

header("content-type: ".$mimeType);

header("content-length: ".filesize($fichier));

readfile($fichier);

(44)

Exercices sur les fichier

Faites un script qui affiche à l'écran le contenu d'un fichier texte.txt, ligne par ligne (fgets()).

Soit un tableau $peinture dont chaque élément est un tableau comprenant un champ oeuvre contenant le nom d'une œuvre et un champ

artiste qui contient le nom de l'artiste qui l'a réalisé. Créez un fichier peinture.txt qui à

chaque ligne contient un doublon œuvre-artiste du tableau $peinture.

(45)

Fonctions diverses :

include, date, …

(46)

Inclusion de fichiers, die

include("fichier.php") : le contenu de ce fichier est inséré ici. (ex : include("en_tete.inc")).

include_once() : le fichier est inclus s'il ne l'a pas encore été.

require() : en cas d'absence du fichier, arrêter tout sur une erreur.

require_once() : fusion des deux précédents.

die("message") : stoppe l'exécution du script avec le message d'erreur indiqué.

(47)

Mail, date

Exemple simple pour le mail :

Dates (cf manuel) :

date($format,$dateheure) : formate une date/heure (par défaut, maintenant)

strftime($format,$dateheure) : idem,

localisé. Précéder d'un setlocale(LC_TIME,

"fr_FR");

$message="Bonjour\n Au revoir";

Mail('[email protected]', 'Sujet',$message);

(48)

programmation objet en

PHP

(49)

Définition de classes (class)

Syntaxe et principes similaires à java.

Définition de classe :

class page_web{

private $titre; //attribut

function setTitre($titre){ //méthode setTitre

$this->titre=$titre;

}

function getTitre($titre){ //méthode getTitre return $this->titre;

}

function __construct($titre){ //constructeur

$this->setTitre($titre);

(50)

Instances de classe

Créer une instance de classe : new()

$ma_page=new page_web("nouvelle page");

C'est la fonction constructeur (__construct, avec deux _) qui est appelée lors de la

création d'une instance de classe.

private, public, protected gèrent la visibilité des méthodes et attributs (public par défaut).

(51)

Héritage

Mot clef extends : class felin extends animal

Pas d'héritage multiple

La classe fille hérite des méthodes de la classe mère (mais ne peut utiliser ses méthodes private), et peut en redéfinir.

$formulaire = new page_formulaire("formulaire");

class page_formulaire extends page_web{

function débutFormulaire($action){

echo "<form action=\"$action\">";

}

function finFormulaire(){

echo "</form>";

} }

(52)

Quelques fonctions utiles

get_class()

get_parent_class()

class_exists()

is_subclass_of()

method_exists()

get_class_method()

(53)

PHP et les bases de

données (MySQL)

(54)

Généralités

Intérêt des bases de données :

Stocker les données persistantes de l'application (ex : gestion de CDs).

Facilité de traitement de ces données

Principe de fonctionnement :

Le script PHP ouvre une connexion à un serveur MySQL ou PostgreSQL.

Le script exécute une ou plusieurs requêtes.

Les résultats de la requête sont reçus ligne par ligne dans des tableaux PHP.

(55)

Connexion

mysql_connect($serveur,$user, $pass)

mysql_select_db($data_base,$link)

Fermeture avec mysql_close($link);

$dbhost = 'venus';

$dbuser = 'olecadet';

$dbpass = ''; //Pas de mot de passe ici

$link = mysql_connect($dbhost, $dbuser, $dbpass);

$data_base='Médiathèque';

$db =mysql_select_db($data_base, $link);

(56)

Envoyer une requête

mysql_query($requete,$link)

Lire le résultat de la requête : ligne par ligne avec

mysql_fetch_array($resultat)

MYSQL_ASSOC élimine la possibilité de récupérer les données avec un indice numérique.

$requete="SELECT titre FROM Cds WHERE auteur=\"$auteur\" ";

$resultat=mysql_query($requete,$link);

while ($ligne=mysql_fetch_array($resultat, MYSQL_ASSOC)){

$titre=$ligne["titre"]; //etc…

}

(57)

Gestion de bases de données en objet

Exo Complétez la classe suivante :

Class Serveur_Base_Donnees{

private $serveur; private $user; private $pass; private $bd; private $link; private $resultat;

function __construct($serveur,$user,$pass,$bd){

. . . }

function connexion_bd(){

. . . // Ouvre la connexion; selectionne la bd$bd;

}

function interroger($requete){

. . . // Envoie la requete $requete

}

function extraire_un_resultat(){

. . . // Retourne une ligne de résultat

}

(58)

Requêtes SQL :

révisions.

(59)

Généralités

• Données regroupées dans des tables, chaque élément représenté sur une ligne.

• Chaque objet caractérisé par des attributs, ou champs (colonnes)

• Ex : Acheteurs – Produits – Chariots.

id_user nom compte

1 Marc 701

2 Jean 202

3 Pierre 803

id_produit nom prix

1 souris 6

2 ordi 1000

id_achat id_user id_produit

1 1 2

2 1 1

(60)

Généralités

Les colonnes sont typées :

Numérique (BOOLEAN, INT, DOUBLE, …)

Texte (VARCHAR(taille), TEXT, …)

Date/Heure (DATE, TIMESTAMP)

Outil web pour gérer la base : phpMyAdmin

Gestion des utilisateurs, permissions,

Création de bases de données,

Visualisation et recherche,

(61)

La requête SELECT

Renvoie une "table" : résultats en lignes/colonnes

SELECT expression FROM matable WHERE condition;

* : tout

Exemples :

SELECT * FROM Acheteurs;

SELECT nom FROM Produits WHERE id_produit=1;

Exo : faites une requête pour extraire les noms de tous les produits de la table Produits dont le prix est > 18 euros.

(62)

Compléments sur SELECT

ORDER BY : trier les résultats

SELECT * FROM Produits ORDER BY nom ASC;

LIMIT : limiter le nombre de résultats.

DISTINCT : supprimer tout doublon dans les résultats (SELECT DISTINCT …)

LIKE : chaînes contenant un motif donné :

SELECT id_user from Acheteurs WHERE nom LIKE 'J %';

SELECT count(*) FROM Produits -> pour compter le nombre de résultats.

(63)

Jointures (JOIN)

But : interroger plusieurs tables à la fois.

SELECT * FROM Acheteurs JOIN Chariots WHERE Acheteurs.id_user = Chariots.id_user;

Autre exemple :

nom id_pays

Federer 1

Nadal 2

Ferrer 2

id_pays pays

1 Suisse

2 Espagne

3 France

id_pays pays nom

1 Suisse Federer

2 Espagne Nadal

SELECT * from Joueurs; SELECT * from Pays; SELECT * from Pays JOIN

Joueurs WHERE

Pays.id_pays=Joueurs.id_pays;

(64)

INSERT

Insérer une ligne dans une table

2 syntaxes :

INSERT INTO Joueurs (id_pays,nom) VALUES (3,'Gasquet');

INSERT INTO Joueurs SET nom='Gasquet', id_pays=3;

Si un champ n'a pas de valeur, s'il est en AUTOINCREMENT il vaudra 1 de plus que le précédent, sinon valeur par défaut

(65)

UPDATE, DELETE

UPDATE : mettre à jour une ligne dans une table

UPDATE Joueurs SET nom='Tsonga' WHERE id_pays=3;

DELETE : supprimer une ligne (attention…)

DELETE FROM Joueurs WHERE nom LIKE 'Fe%';

On peut créer une table avec CREATE.

(66)

Sessions et cookies

(67)

Garder des valeurs d'une page à l'autre

Pour passer des valeurs d'une page à l'autre, la méthode POST est sure, mais il faut utiliser à chaque fois un formulaire.

Solution : les sessions, les cookies.

Les cookies sont de petits fichiers conservés du côté client (ordi du visiteur). Ils permettent de

conserver par exemple ses préférences.

Une session est un fichier conservé sur le serveur et accessible par les scripts en fonction d'un

identifiant généré à sa création.

(68)

Les cookies et leurs limites

Créer un cookie : setcookie($var,$valeur,..)

Effacer un cookie : setcookie($var,..) (pas de valeur).

Cookies écrits sur le disque du visiteur : permissions limitées voire interdites suivant les paramètres du

navigateur.

Pas plus de 20 cookies sur un même poste client. Taille d'un cookie limitée.

(69)

Mécanisme des sessions

Ouverture d'une session dans chaque page de l'application avec session_start(). A placer tout au début des pages.

Stockage des variables de session dans le tableau super-global $_SESSION.

Lecture des variables de la session possible

dans les différentes pages de l'appli à l'aide du tableau $_SESSION.

Fermeture de la session : session_destroy()

(70)

Exemple élémentaire

page1.php <?php session_start();

$_SESSION['nom']='Paul';

echo "<a href=\"page2.php\">Vers la page 2</a>";

?>

page2.php <?php session_start();

echo "<br />Bonjour, ".$_SESSION['nom']."!";

?>

(71)

Fin!

Beaucoup d'autres possibilités avec php :

Lecture et écriture de fichiers XML (->RSS)

Génération de graphique, manipulation d'images (créer des miniatures,…)

Gestion des erreurs (classe Exception, throw, try.. catch)

Connexion ftp

Création de fichiers pdf (librairie FPDF).

Références

Documents relatifs

Vous devez créer un tableau contenant 5 prénoms qui ne seront pas dans l’ordre alphabétique, et les afficher sous forme de liste à puce (en utilisant les balises HTML

• Lorsque vous allez produire des informations dans votre script PHP, vous devez les stocker quelque part. • Si ce n'est pas le cas, elles seront alors perdues lorsque le

8 Bases de Données et PHP Data Objects 129 8.1 Créer un Base de Données dans

La fonction session_start() essaye de trouver un identificateur de session existant, sinon une nouvelle session est créée et un identificateur unique est assigné par PHP.. Toutes

 Par valeur , c'est a dire que s'ils ont une valeur à l'extérieur de la fonction, seule la valeur est transmise à la fonction, si la variable subit des modifications à

À l'intérieur de guillemets simples, aucune interpolation de variable

Cela a vous a peut être parut un peu lourd, mais si vous n'avez fait que survolez cette partie, vous verrez que vous y reviendrais car c'est vraiment des bases très importants à

Cette formation PHH Objet vous permettra de maîtriser d'une manière opérationnelle le langage PHP dans le contexte d'un développement objet.. Il vous permettra aussi d'aborder