# PHP/Syntaxe du langage
## 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.
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 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.
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 :

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

### 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 "/".
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 :

#### Dates

Pour manipuler des dates, il existe la classe DateTime, également appelée add_date :
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 :

### 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…)
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 ".".
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

Pour tronquer une chaine (le contraire de la concaténation), il existe la fonction substr. 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.

### 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:
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".
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. 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.

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