< PHP
fin de la boite de navigation du chapitre

Séparateur d'instruction

Un 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

Il 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

Il existe plusieurs versions du langage, selon les logiciels installés, certaines commandes ne fonctionneront donc pas forcément.

Principe
// 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
Fin du principe

Ces deux codes afficheront exactement la même chose.

Variables

Les 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 constante doit débuter par un underscore (_), chaque variable 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.

Principe
 // 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 !'
Fin du principe

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

Le 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

Comme vu ci-dessus, il s'agit du signe égal : "=", utilisable tant avec les nombre qu'avec les chaînes.

Principe
$var = 5;
$foo = $var;
Fin du principe

Opérateurs binaires de calcul

  • 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 "/".
Exemple
$var = 25;
$foo = 12 + $var / 15 - $var; 
/* $foo vaut maintenant -11.33333… 
   (Voir priorité des opérateurs, plus bas) */
Fin de l'exemple

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 :

Exemple
$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
Fin de l'exemple

Dates

Pour 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

Ceux-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…)
Exemple
$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
Fin de l'exemple

Note: Vous ferez toujours très attention à ne pas confondre les symboles "=" et "==". C’est une erreur courante de débutant.

Concaténation

La concaténation revient à "coller" deux chaînes de caractère entre elles. L'opérateur utilisé est le ".".

Exemple
$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 +,-,*,/.
Fin de l'exemple

Notez bien qu'en PHP, presque tout peut être concaténer.

Panneau d’avertissement 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

Pour 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.

Exemple
$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".
Fin de l'exemple

Opérateurs unaires

  • 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:

Principe
$var = 25;
echo !($var > 26);   //affichera true (vrai) car 25 n’est pas supérieur à 26. Équivaut à $var <= 26;
Fin du principe

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

Apparus en C, ces opérateurs ont été repris en PHP. l'opérateur ++ signifie "ajouter 1" et l'opérateur -- signifie "retrancher 1".

Principe
$var = 5;
$var++;   //$var vaut 6
$var++;   //$var vaut 7
$var--;   //$var revaut 6
Fin du principe

CF en fin de chapitre pour la différence entre pre et post-incrementation.

Opérateur de contrôle d'erreur

@ 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

Le 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 :

Exemple
$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.
Fin de l'exemple

Références

  1. http://php.net/manual/fr/datetime.add.php
  2. http://www.php.net/manual/fr/function.date-add.php
  3. http://www.commentcamarche.net/forum/affich-781989-php-comment-mettre-la-date-en-francais
  4. http://php.net/manual/fr/function.substr.php
  5. http://php.net/manual/fr/language.operators.errorcontrol.php
Cet article est issu de Wikiversity. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.