PHP Accueil
Chapitres :
PHP Chapitre 5 : Syntaxes
5.1 Générales
5.1.1 Insérer du texte sur la page : Echo et Print
L'instruction echo permet d'insérer du texte dans la page Web.
<?php echo "Ceci est du texte"; ?>
L'instruction print fait la même chose.
<?php print "L'échappement de caractères se fait : \"comme ceci\".";?>
L'un comme l'autre peuvent utiliser les parenthèses mais ce n'est pas obligatoire.
L'insertion de variable se fait comme ceci, aussi bien pour l'un que pour l'autre :
<?php
$monnom = Nicolas;
print "Bonjour, Mon Nom est $monnom";
?>
Les différences entre les deux sont :
· echo peut prendre autant d'arguments que l'on souhaite, print n'en prend qu'un.
· echo ne renvoie rien, print renvoie 1, qui peut être utile dans des expressions conditionnelles.
5.1.2 Insérer un sous-fichier PHP
Ce qui est particulièrement intéressant dans le développement de site, d'un point de vue optimisation, c'est l'aspect modulaire.
Ainsi, pour pouvoir rendre votre futur site modulaire, il est intéressant de pouvoir le penser en différents sous-ensembles (sous-fichiers) modulaires et modifiables à souhait. Pour cela, il est très intéressant d'envisager l'ensemble de la page comme une structure, tel que nous l'avions découpé dans le cours HTLM + CSS :
Ainsi, Il nous est très facile d'envisager que chaque module sera décrit par son propre fichier PHP, et le tout mis ensemble dans ma page finale, le fichier global PHP. Pour cela, plusieurs fonctions d'inclusion de fichier existent:
- include
Ex :
<?php include("entete.php"); ?>
Avec cette fonction, le programme ira chercher le fichier nomme (ici dans le même répertoire que le fichier actuel) et viendra y inclure le code a cet emplacement.
Il est conseillé de procéder avec un répertoire « includes » :
<?php include("includes/menus.php"); ?>
Grâce à ceci, la page principale dessine l'ossature générale de notre page, et chaque sous-fichier viendra s'occuper de l'aspect modulaire de notre page, en ne se préoccupant que de son propre sous-ensemble.
PS : ne pas oublier qu'un fichier PHP peut ne contenir que des lignes HTML sans PHP, même si ceci ne montre que peu d'intérêt. Cependant, il est recommandé de ne pas mélanger des fichiers HTML et PHP et d'uniformiser le tout avec uniquement des fichiers PHP.
- include_once :
Cette fonction est la même que sa « mère » include à ceci près que le fichier ne sera inclus qu'une seule fois.
Ex :
Dans le premier cas, le fichier sera inclus et répété. Dans le second, il ne sera inclus qu’une fois.
L'utilisation la plus courante de cette fonction est lorsque vous avez plusieurs fonctions définies dans le fichier qui sera inclus. Pour éviter d'avoir des erreurs sur la redéfinition de fonctions, on utilise include_once pour n'inclure le fichier qu'une seule et unique fois.
- require :
La fonction require agit de la même manière que sa « sœur » include à ceci près qu'elle génère une erreur si le fichier à inclure n'est pas trouvé. Comme son nom l'indique, le fichier est requis pour que l'application fonctionne.
L'erreur générée s'il y a lieu sera une E_COMPILE_ERROR qui arrête l'application là où la fonction include génère un warning qui n'influe pas le fonctionnement de l'application.
Ex :
require 'main_page.php';
- require_once :
Ex :
Cette fonction est la plus stricte des quatre et est celle à préférer.
Davantage de détails : ( (Différences entre les fonctions PHP "include" et "require"))
5.1.3 Structures conditionnelles (if / elseif / else, switch)
· Expressions booléennes, tests.
Les symboles de tests classiques sont semblables au C/C++ :
Symbole |
Signification |
== |
Est égal |
> |
Est supérieur |
< |
Est inférieur |
>= |
Est supérieur ou égal |
<= |
Est inférieur ou égal |
!= |
Est différent |
=== |
Est identique |
L’opérateur d’identité est plus strict que l’égalité simple : il exige l’égalité des termes ET des types.
Concaténation d’expressions booléennes :
Mot-clé |
Symbole |
Signification |
AND |
&& |
Et logique |
OR |
|| |
Ou logique |
Inversion logique :
Mot-clé |
Symbole |
Signification |
NOT |
! |
Inverse de |
· If, elseif, else :
Les conditions sont semblables au C/C++ :
Ex :
<?php
if ($age <= 12 AND $sexe == "garçon")
echo "Bienvenue sur le site de Captain Mégakill !";
elseif ($age <= 12 AND $sexe == "fille")
echo "Retourne jouer à la Barbie !";
else
echo "Désolé, ce site n'est pas pour toi !!";
?>
NOTER LE « ELSEIF » DIFFÉRENT DU « ELSIF » DU C/C++.
Exécution de code conditionnelle en utilisant le if-else du PHP :
Voici un moyen simple de structurer son code PHP lorsqu’on veut y conditionner l’exécution d’un bloc de code HTML :
<?php if
(condition): ?>
// html code si la condition est vraie
<?php else: ?>
// html code si la condition est fausse
<?php endif ?>
· Switch :
Idem qu’en C/C++ :
Ex :
<?php
$nb_auto_dans_vie = 0;
echo "combien d'auto avez-vous eu dans votre vie ?";
switch ($nb_auto_dans_vie)
{
case 0: // dans le cas où $nb_auto_dans_vie vaut 0
echo "Vous préférez le vélo?";
break;
case 1: // dans le cas où $nb_auto_dans_vie vaut 1
echo "Quelle fidélité !";
break;
case 2: // dans le cas où $nb_auto_dans_vie vaut 2
echo "Changé pour meilleur ou pour pire?";
break;
case 3: // etc. etc.
echo "vive le changement?";
break;
default: // aucun des 3 choix ci-dessus : + de 3 autos ...
echo "Beaucoup de changements!!!";
}
?>
À noter que Switch ne se limite pas aux integer, il peut également s'appliquer aux string.
(Source : (switch))
· Expressions ternaires :
Ce sont des formes raccourcies du if-else :
<?php
$age = 21;
if ($age >= 18)
$majeur = true;
else
$majeur = false;
?>
Forme raccourcie (forme ternaire):
<?php
$age = 21;
$majeur = ($age >= 18)? true:false;
?>
5.1.4 Structures itératives (while, for, foreach)
· While
Comme en C/C++ encore une fois. Ex :
<?php
$nombre_de_lignes = 1;
while ($nombre_de_lignes <= 100)
{
echo 'Je ne tirerai plus la langue au professeur.<br />';
$nombre_de_lignes++;
}
?>
· for
Idem. Ex :
<?php
for ($nb_lignes = 99; nb_lignes >=0; nb_lignes --)
{
echo "Il reste $nb_lignes lignes à taper.<br />";
echo 'Je ne tirerai plus la langue au professeur.<br />';
}
?>
· foreach
C'est une boucle spécialisée dans le parcours des tableaux :
<?php
$prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît');
foreach($prenoms as $element)
echo $element . '<br />'
?>
Ici, dans notre boucle, nous parcourrons l'ensemble des éléments du tableau $prenoms, qui seront tour à tour placés dans la variable $element pour être affichés.
5.2 Fonctions utiles
· ceil(), floor(), round()
Fonctions qui effectuent des conversions de double vers integer, dans les conditions suivantes :
- ceil fait un arrondi supérieur
- floor fait un arrondi inferieur
- round fait un arrondi le plus proche
· chr(), ord()
chr retourne le caractère correspondant au code ASII de l'integer donné en paramètre d'entrée. ord effectue le contraire, et renvoie le code ASCII du premier caractère de la chaine string donnée en paramètre.
· implode(), explode()
implode permet de passer d'un array de strings à un string unique concaténé de ses éléments.
explode effectue le contraire, rangeant tous les éléments d'une string unique dans un tableau.
Ex :
$mes_mots[0] :"Bonjour";
$mes_mots[1] :"les";
$mes_mots[2] :"amis!";
$ma_phrase = implode(" ", $mes_mots);
print("$ma_phrase");
Ceci donne :
Bonjour les amis!
Autre exemple :
$mes_autres_mots = explode (" ", "Bonjour les amis!");
Ceci donne un tableau de 3 éléments.
· strlen () : longueur d'une string
<?php
$phrase = 'Bonjour les gens ! Je suis une chaîne de caractères !';
$longueur = strlen($phrase);
echo $phrase.'<br />Cette phrase possède ' . $longueur . ' caractères.';
?>
· str_replace () : rechercher et remplacer une string dans une autre par une autre.
<?php
$ma_str = str_replace ('a', 'i','hahaha');
echo ma_str;
?> // on obtient hihihi
· str_shuffle () : mélange les caractères
· strtolower () : met les caractères en minuscules.
Voir aussi strtoupper () pour mettre en majuscules.
· date () : pour récupérer la date dans une chaîne de caractères.
Exemples (Source : (date)) de structuration de votre date :
<?php
// Aujourd'hui, le 12 Mars 2001, 5:16:18 pm, Fuseau horaire
// Mountain Standard Time (MST)
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // It is the 10th day (10ème jour du mois).
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \e\s\t\ \l\e\ \m\o\i\s'); // 17:03:18 m est le mois
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (le format DATETIME standard de MySQL)
?>
5.3 Fonctions personnalisées
Créer ses fonctions en PHP est évidemment possible, et encore une fois très similaire au C/C++, mais encore plus facile et rapide : pas de prototypage, de déclaration. Juste une définition et un/des appels.
5.3.1 Sans paramètre sortant
Juste un ou des paramètres entrants :
<?php
function DireBonjour($nom) // définition de la fonction
{ // avec 1 paramètre entrant
echo 'Bonjour ' . $nom . ' !<br />';
} // pas de paramètre sortant
DireBonjour('Marie'); // appel de fonction.
DireBonjour('Patrice'); // encore ...
DireBonjour('Edouard'); // et encore ...
DireBonjour('Pascale');
DireBonjour('François');
DireBonjour('Benoît');
DireBonjour('Père Noël');
?>
5.3.2 Avec paramètre sortant
Comme on a l'habitude, on emploie le mot-clé return.
Voici l'exemple d'une fonction qui calcule le volume d'un cône :
– 2 paramètres entrants (hauteur, rayon de la base)
– 1 paramètre sortant (volume du cône)
<?php
function VolumeCone($rayon, $hauteur)
// on précise nos param. entrants
{
$volume = $rayon * $rayon * 3.14 * $hauteur * (1/3);
// calcul du volume
return $volume;
// indique la valeur à renvoyer, ici le volume
}
$volume = VolumeCone(3, 1); // appel de fonction
echo 'Le volume d\'un cône de rayon 3 et de hauteur 1 est de ' . $volume;
?>
5.4 Fonctions de recherche dans les tableaux
5.4.1 array_key_exists
Cette fonction permet de vérifier si une clé existe dans un tableau d'associations clé-valeur.
<?php array_key_exists('ma_cle', $my_array); ?>
La fonction renvoie un booléen pour nous dire si oui ou non, la clé ma_cle existe dans le tableau mon_array.
5.4.2 in_array
Cette fonction permet de vérifier si une valeur est présente dans un tableau.
<?php in_array('ma_valeur', $my_array); ?>
La fonction renvoie un booléen pour nous dire si oui ou non, la valeur ma_valeur existe dans le tableau mon_array.
5.4.3 array_search
Cette fonction permet de récupérer la clé d'une valeur dans un array :
$position = array_search('ma_valeur', $my_array);
La fonction renvoie le numéro ou la chaine de caractères si la valeur est trouvée.
La fonction renvoie FALSE si la valeur est non trouvée.
Exemples :
<?php
$coordonnees = array (
'prenom' => 'François',
'nom' => 'Dupont',
'adresse' => '3 Rue du Paradis',
'ville' => 'Marseille');
if (array_key_exists('ville', $coordonnees)
echo 'La clé "ville" se trouve dans les coordonnées !';
if (in_array('Marseille', $coordonnees))
echo 'La valeur "Marseille" se trouve dans le tableau !';
$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise');
$position = array_search('Fraise', $fruits); // fraise position 4
echo '"Fraise" se trouve en position ' . $position . '<br />';
$position = array_search('Banane', $fruits); // banane position 0
echo '"Banane" se trouve en position ' . $position;
?>