PHP/Syntaxe du langage
Séparateur d'instruction
modifierUn script PHP est une suite d'instructions ordonnant à l'ordinateur d'effectuer certaines opérations. Comme dans la plupart des langages informatiques (C, Java, Perl…), chaque instruction doit être terminée par un point-virgule. Ce dernier permet de délimiter les instructions qui seront exécutées par le serveur PHP.
L'oubli d’un point-virgule déclenchera une erreur ou un fonctionnement incorrect du script. Il est donc indispensable d’être vigilant.
Il est à noter que la balise fermante ?>
joue le rôle de point-virgule. Le point virgule de la dernière instruction est, par conséquent, optionnel, mais fortement recommandé. C’est plus clair, et il vaut mieux prendre dès le début l'habitude de terminer ses instructions par un point-virgule.
Affichages
modifierIl y a deux façons d'afficher du texte à partir de PHP, avec les commandes echo
et print()
.
De plus, s'ils renvoient le résultat Array, cela signifie que la variable à afficher est un tableau et qu’il faudrait utiliser print_r()
pour montrer son contenu (ou var_dump()
).
Versions de PHP
modifierIl existe plusieurs versions du langage, selon les logiciels installés, certaines commandes ne fonctionneront donc pas forcément.
// En premier echo
echo 'Voici une ligne de texte en php'; //Affichera Voici une ligne de texte en php
// Puis le print
print ('Voici une seconde ligne en php'); // Affichera la même chose que l'echo
Ces deux codes afficheront exactement la même chose.
Variables
modifierLes variables sont un élément indispensable à tout langage de programmation. C’est grâce à elles que vous pourrez sauvegarder des données entre chaque instruction. En PHP, chaque variable commence par un dollar ($), et les variables d'environnements par $_ (ex : $_SESSION, $_GET, $_POST... voir les chapitres suivants). Comme PHP n’est pas typé (sauf cas très particulier en PHP5), vous pouvez affecter vos variables de la manière qu’il vous plaît avec des chaînes, des entiers… De plus, une variable n'a pas besoin d’être déclarée pour être utilisée : vous pouvez directement l'affecter avec le signe =.
Plus fort, si vous incrémentez une variable qui n'existe pas encore (cf ci-dessous) en faisant $variable++;, alors $variable prendra la valeur 1. PHP l'a implicitement initialisé à 0.
// Utilisation des constantes
define("_constante1", "Chaine2");
print _constante1;
// Utilisation des variables
$var = 64; // La variable $var vaut 64
$var = 'Chaine !'; // On passe d’un entier à une chaine sans soucis, la variable $var vaut maintenant Chaine !
$foo = $var; // La variable $foo est égal a la valeur de $var, soit $foo = 'Chaine !'
Les variables ne sont pas conservées entre les pages. Une fois votre script terminé, toutes les variables créées seront détruites. Il sera donc nécessaire des les sauvegarder en utilisant, par exemple, le mécanisme des sessions PHP.
Les noms de variables ne peuvent pas contenir n’importe quel caractère. Pour être valides, elles doivent commencer par une lettre (majuscules/minuscules), suivi de lettres capitales ou pas, chiffres ou autres underscores (ex : $MaVariable1, $ma_variable1
...).
La portée des constantes leur permet d’être utilisées dans les méthodes de classes, alors que les variables doivent y être déprotégées par le mot global
, ex :
global $var;
Opérateurs
modifierLe langage PHP définit naturellement une liste d'opérateurs, permettant d'effectuer en ensemble d'opération simple. Voici la liste :
Opérateur binaire d'affectation
modifierComme vu ci-dessus, il s'agit du signe égal : "=
", utilisable tant avec les nombre qu'avec les chaînes.
Opérateurs binaires de calcul
modifier- l'addition est réalisée avec le symbole "+".
- la soustraction est réalisée avec le symbole "-".
- la multiplication est réalisée avec le symbole "*".
- la division est réalisée avec le symbole "/".
$var = 25;
$foo = 12 + $var / 15 - $var;
/* $foo vaut maintenant -11.33333…
(Voir priorité des opérateurs, plus bas) */
Veuillez noter qu’il existe un raccourci pour ces quatre opérateurs : +=, -=, *=, /=, qui s'utilise lorsque l’on veut effectuer une opération sur une variable. La formule de base est :
var = var opérateur variable|valeur
devient var opérateur= variable|valeur
.
L'opération réalisée est la même, mais un petit exemple devrait vous éclairer :
$var = 2;
$var = $var + 5; //$var vaudra 2+5, soit 7
$var += 5; //c'est la même chose !
$var /= 2; //var vaudra 12/2, soit 6. C’est la même chose que $var = $var / 2
Dates
modifierPour manipuler des dates, il existe la classe DateTime()
[1], également appelée add_date()
[2] :
<?php
print 'Nous sommes le ' . date("l d-m-Y") . '<br />';
$DateFuture1 = new DateTime(date("Y-m-d"));
$DateFuture1->add(new DateInterval('P1D'));
print 'Demain, nous serons le ' . $DateFuture1->format('l d-m-Y') . '<br />';
$DateFuture2 = new DateTime(date("Y-m-d"));
$DateFuture2->add(new DateInterval('P1M'));
print 'Dans un mois, nous serons le ' . $DateFuture2->format('l d-m-Y') . '<br />';
$DatePassee1 = new DateTime(date("Y-m-d"));
$DatePassee1->sub(new DateInterval('P1D'));
print 'Hier, nous étions le ' . $DatePassee1->format('l d-m-Y') . '<br />';
$DatePassee2 = new DateTime(date("Y-m-d"));
$DatePassee2->sub(new DateInterval('P1M'));
print 'Il y a un mois, nous étions le ' . $DatePassee2->format('l d-m-Y') . '<br />';
?>
Le langage PHP ne peut afficher les noms des jours et des mois qu'en anglais par défaut. Il convient donc de créer des tableaux pour les obtenir en français[3] :
<?php
$jours = array('', 'dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi');
$mois = array('', 'janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre');
$datefr = $jours[date('w')].' '.date('d').' '.$mois[date('n')].' '.date('Y');
echo 'Nous sommes le '. $datefr; exit;
?>
Opérateurs de comparaisons
modifierCeux-ci fonctionnent de gauche à droite : valeur comparé symbole valeur comparante. Ils retournent un booléen qui vaut vrai si la condition testée est juste, faux sinon.
Voici la liste des opérateurs possibles:
- > : est supérieur à
- < : est inférieur à
- >= : est supérieur ou égal à
- <= : est inférieur ou égal à
- == : est strictement égal à
- === : est strictement égal à et est de même type (Boolean, Entier, String, Objets…)
$var = 25;
echo $var > 26; //affichera false (faux) car 25 n’est pas supérieur à 26
echo 50 == 21; //idem
echo $var <= 54; //affichera true (vrai) car 25 est bien inférieur ou égal à 54
Note: Vous ferez toujours très attention à ne pas confondre les symboles "=" et "==". C’est une erreur courante de débutant.
Concaténation
modifierLa concaténation revient à "coller" deux chaînes de caractère entre elles. L'opérateur utilisé est le ".".
$foo = 'chaine1' . 'chaine2'; //foo vaudra "chaine1chaine2"
$foo .= 'chaine3'; //foo vaudra "chaine1chaine2chaine3". On peut utiliser ".=" de la même
//manière que pour les opérateurs +,-,*,/.
Notez bien qu'en PHP, presque tout peut être concaténer.
En anglais les nombres décimaux sont séparés par des points, ces derniers ne concatènent donc pas les chiffres. Par exemple 1.5 signifie 1,5, et "1"."5" égal 15. |
Troncature
modifierPour tronquer une chaine (le contraire de la concaténation), il existe la fonction substr()[4]. Le premier paramètre est obligatoire et représente la position de début de la chaine à extraire, le second représente la taille de la chaine s'il est positif, ou la position de fin s'il est négatif.
$foo = 'chaine1_chaine2_chaine3';
echo substr($foo,8,7); // Affiche les 7 caractères à partir de 8 inclus, donc jusqu'à 8 + 7 = 15, donc "chaine2".
echo substr($foo,-7); // Affiche les 6 derniers caractères, donc "chaine3".
echo substr($foo,8,-8); // Affiche "chaine2".
echo substr($foo,0,strrpos($foo, "_")); // Affiche le début jusqu'à l'underscore, donc "chaine1".
echo str_replace('_', '', $foo); // Affiche "chaine1chaine2chaine3".
Opérateurs unaires
modifier- Le signe ! correspond à l'inverse (ainsi en valeur booléen, vrai devient faux et vice-versa).
On peut coupler ce symbole à ceux précédent pour inverser le résultat d’une comparaison:
$var = 25;
echo !($var > 26); //affichera true (vrai) car 25 n’est pas supérieur à 26. Équivaut à $var <= 26;
Dans le code ci-dessus, l'opérateur ">" renverra la valeur false car 25 n’est pas supérieur à 26. Cependant, l'opérateur unaire "!" renverra à son tour l'opposé, soit true.
Opérateurs d'incrémentations
modifierApparus en C, ces opérateurs ont été repris en PHP. l'opérateur ++ signifie "ajouter 1" et l'opérateur -- signifie "retrancher 1".
CF en fin de chapitre pour la différence entre pre et post-incrementation.
Opérateur de contrôle d'erreur
modifier@
permet d'ignorer certaines erreurs bloquantes[5]. Par exemple le fichier suivant n'affichera pas ce qui survient si on retire l'arobase, et qui pourrait sembler disgracieux à la vue des utilisateurs : Warning: Division by zero in test.php on line 2
.
@$operation = 1/0;
print $operation;
print '<br />Fin';
Priorité entre les opérateurs
modifierLe PHP n'interprète pas une suite d'opérateurs linéairement, de gauche à droite. Il le fait en fonction de la priorité liée à chaque opérateur utilisé (comme en maths où la multiplication prime sur l'addition). Voici la hiérarchie des principaux opérateurs, des plus prioritaires jusqu'au moins prioritaires :
- ++ et --
- !
- * et /
- + et -
- <, >, <=, >= et <>
- ==, !=, === et !==
- =
Si deux signes de mêmes priorités sont utilisés, alors le PHP les traite de gauche à droite.
On peut cependant modifier la priorité des termes grâce aux parenthèses. Une opération entre parenthèses sera effectuée en priorité, quel que soit son opérateur, et si elles sont imbriquées, on calcule en premier la plus petite.
Exemple d’utilisation des priorités :
$var = 2+6*4; //sera calculé 6*4 en premier, puis 2 seront ajoutés, soit 26
$var = (2+6)*4; //sera calculé 2+6, puis la multiplication par 4, soit 32
$var = ((2+6)*5)/(3+4); //seront calculés: 2+6, multiplié par 5, puis 3+4, et enfin la division entre les deux, soit 40/7.
Références
modifier- ↑ http://php.net/manual/fr/datetime.add.php
- ↑ http://www.php.net/manual/fr/function.date-add.php
- ↑ http://www.commentcamarche.net/forum/affich-781989-php-comment-mettre-la-date-en-francais
- ↑ http://php.net/manual/fr/function.substr.php
- ↑ http://php.net/manual/fr/language.operators.errorcontrol.php