Syntaxe

Commentaires

Comme dans tout langage, les commentaires permettent de préciser le sens du code utilisé et donc sa compréhension.

Ligne
// Commentaire
En fin de ligne
$x += 10; // Incrémente $x de 10
Multi lignes
/*Commentaire
sur
plusieurs
lignes.
*/

Instructions

Toutes les instructions se terminent par ; les retours à la ligne n'ont pas d'importance.

Variables

Ce sont les éléments permettant de stocker et de manipuler des données tout au long de l'exécution du programme.

Syntaxe

Les variables sont préfixées par le caractère $. Elles répondent aux critères de nommage suivants :

  • Premier caractère alphabétique ou _
  • Pour les caractères suivants : a-z,A-Z,0-9,_
  • Pas d'espace
  • Sensible à la casse

Exemples

Chaîne de caractères
$chaine = "Caractères";
Nombres
$entier = 1.5;

Manipulations

Test d'existence d'une variable
isset($var)
Renvoie TRUE si la variable contient une valeur (y compris une chaîne de caracètres vide), FALSE sinon.
Destruction
unset($var)
La variable en paramètre n'existe plus après cet instruction, sa valeur est perdue.

Variables dynamiques

Le nom d'une variable peut lui même être une variable :

$dvd = "30";
$produit = "dvd";
echo $$produit; /* On obtient 30 car $produit a été interprêté à
		l'intérieur de $$produit et donc faire l'appel à $dvd */

Chaînes de caractères

Les chaînes de caractères sont généralement encadrées par des guillemets.

Concaténation

L'opérateur . utilisé dans un contexte de chaîne de caractères permet de concaténer des contenus.

$count = 5;
echo "Il y a " . $count . " résultats."; //Il y a 5 résultats

Interprétation des variables

Les variables sont automatiquement interprêtées et leur contenu est substitué dans la chaîne de caractères.

$count = 5;
echo "Il y a $count résultats"; //Il y a 5 résultats

Pour des types complexes (comme par exemple des objet ou des tableaux), l'appel est délimité par des accolades.

$tableau['index'] = 5;
echo "Il y a {tableau['index']}résultats"; //Il y a 5 résultats

Echappement

Le caractère \ permet d'échapper les caractères.

$text = 'C\'est un exemple';
$text = "Citation : \"Waouh\"";
$text = "J'utilise la variable \$text";

Typage

PHP n'impose pas de déclarer les varaibles avant de les utiliser. Le type d'une variable est déterminé par la valeur qui lui est affectée.

PHP gère en interne quatre types de données simples : des entiers, des flottants, des chaînes de caractères et des booléens.

PHP effectue des conversions de type en fonction du contexte d'utilisation de la donnée.

Conversion
$number = 12345 * 67890;
echo substr($number, 3, 1);
Conversion
$pi = "3.1415927";
$rayon = 2;
echo $pi * (rayon * rayon);
Tests
gettype() : détermine le type
is_long() : teste s'il s'agit d'un flottant
is_bool() : teste s'il s'agit d'un booléen
is_array() : teste s'il s'agit d'un tableau
...

Tableaux

Les tableaux sont un type complexe de données permettant de regrouper des données.
L'instruction array() permet de créer un tableau.

Tableaux à index numérique

Ce sont des liste d'éléments dont la position dans le tableau constitue l'index. On appelle un élément en utilisant son index entre les caractères []

$etudiants = array('Bill', 'Bob', 'Joe', 'Jim');
echo $etudiants[3]; // Jim car l'index commence à 0

De la même manière, on peut écrire directement dans le tableau :

$etudiants[3] = 'Kelly'

Ou encore ajouter un élément à la suite du tabelau existant :

$etudiants[] = 'Tom'

Tableaux multi dimensionnels

Ce sont des "tableaux de tableaux", utilisés par exemple pour les matrices. On utilisera autant d'indices que de dimensions.

$matrice = array(array(1, 2, 3),
	array(4, 5, 6),
	array(7, 8, 9));
echo $matrice[1][2]; // 6

Tableaux associatifs

Les indexes ne sont pas numériques mais textuels. Il faut donc associer explicitement les clés et les valeurs à l'aide de l'opérateur =>. On accède directement à un élément en utilisant la clé associée.

$tableau = array("prenom" => "John",
	"nom" => "Smith");
echo $tableau['nom']; // Smith

Opérateurs

Arithmétiques

Il s'agit des opérateurs mathématiques usuels.

  • Addition : +
  • Soustraction : -
  • Division : /
  • Multiplication : *
  • Modulo : %
    • Il s'agit du reste de la division entière
    • $var = 20%3; // modulo : 2

Incrémentations

Ce sont les raccourcis de syntaxe permettant d'ajouter ou de retrancher 1.

$var++; // $var = $var + 1
$var--; // $var = $var - 1

La position de l'opérateur détermine l'ordre des opérations.

  • $var++ : évaluée puis incrémentée
  • ++$var : incrémentée puis évaluée

Assignations

L'opérateur d'affection est =. Il indique que la variable à gauche doit prendre spécifiée à droite

Opérateurs combinés

On utilise simultanément l'opérateur d'affectation et un opérateur arithmétique.

  • Addition : +=
  • Soustraction : -=
  • Division : /=
  • Multiplication : *=
  • Modulo : %=

On obtient donc des syntaxes équivalentes comme par exemple :

  • $a += 5;
  • $a = $a +5;

Comparaisons

Comparent les deux termes et renvoient un booléen.

==
Egalité des deux valeurs (le type peut être différent, PHP effectue des conversions automatiquement)
<
Inférieur à
>
Supérieur
<=
Inférieur ou égal
>=
Supérieur ou égal
!=
Différent de
===
Egalité de valeur ET de type
!==
Différence de valeur OU de type

Exemples :

1 == '1'; // test même valeur donc vrai
1 === '1'; // test même valeur, même type donc faux
1 !== '1'; // test valeur différente ou type différent, vrai

Logiques

Les opérateurs logiques permettent de combiner des résultats de tests selon l'algèbre de Boole.

!
Négation : renvoie l'opposé booléen de la valeur
&& ou AND
ET logique : vrai si les deux membres sont vrais
|| ou OR
OU logique : vrai si l'un des membres est vrai
XOR
OU exclusif logique : vrai si l'un des membres uniquement est vrai

Constantes

Les constantes sont définies grâce à la fonction define(). Leur valeur ne peu plus être modifiée par la suite.
Par convention, leur nom est composé de majuscules.

Utilisation

define("UDS", "http://www.unistra.fr")
$adresse = UDS;

Pré-définies

PHP met à disposition plusieurs variables comme par exemple :

__LINE__
numéro de ligne
__FILE__
chemin complet
__DIR__
répertoire
__FUNCTION__
nom de la fonction
__CLASS__
nom de la classe
__METHOD__
nom de la méthode de classe
__NAMESPACE__
espace de nommage

Exercices