2.1 Identifiants
PHP
propose trois types de données : les entiers, les décimaux, et les
chaînes de caractères. PHP respecte la casse lors de l’identification
des variables. Ainsi, maVariable est différent que MaVariable. Une variable est toujours précédée du signe $ que les amateurs de Shell connaissent bien.
2.2 Types de données
En
fait, quand on utilise du PHP, on ne s’occupe pas de distinguer le
types des variables. Elles prennent le type des données qui leur sont
affectées. Néanmoins, il est possible de contourner ceci si nécessaire
en utilisant la fonction settype qui attribue un type spécifique à une variable. Il existe une autre solution par l’utilisation des fonctions intval, doubleval et strval permettant de réaliser des conversions de chaînes en entiers par exemple pour intval.
Il existe néanmoins un certain nombre de types de
données :
- Entier : pour les nombres entiers,
- Float (ou Double) : nombres réels,
- Chaînes : pour les chaînes de caractères,
- Booléen : pour des valeurs de type vrai ou faux,
- Tableau : pour stocker des données du même type,
- Objet : pour stocker des instances de classes,
Deux types particuliers sont également proposés
:
- NULL : pour des valeurs de type non définies,
- ressource :
retournées fréquemment par des fonctions accédant à des ressources
externes (fichiers, BD, etc.). Elles sont rarement manipulées.
Exemple
< ? $temperature = “ 30° ” ; settype($temperature, “ double ”) ; print “ Double : $temperature <BR> ” ; settype(“$temperature”, “integer”) ; print “ Integer : $temperature <BR> ” ; settype(“$temperature”, “string”) ; print “ String : $temperature <BR>”;
$temperature = “ 30° ” ; print ” <BR>String <BR>”; print “strval($temperature)”; print ”<BR>Double <BR>”; print “doubleval($temperature)”; print ”<BR>Integer <BR>”; print “intval($temperature)”;
$foo = "0"; // $foo est une chaine $foo++; // $foo est une chaine $foo += 1; // $foo est maintenant un entier $foo = $foo + 1.3; // foo est maintenant un double $foo = 5 + "10 Little Piggies"; // $foo is integer (15) $foo = 5 + "10 Small Pigs"; // $foo is integer (15) ?> |
Il est également possible de réaliser ceci de manière implicite en utilisant la coercition vue en C. Ainsi, intval ($temperature) et (integer) $temperature sont identiques.
Afin de connaître le type des variables, un certain nombre de fonctions sont disponibles et retournent true ou false :
- is_array(),
- is_double(), is_float(), is_real() - c'est la même fonction,
- is_long(), is_int(), is_integer() - c'est la même fonction,
- is_string(),
- is_object(),
- is_ressource(),
- is_null(),
- is_scalar() - si la variable est scalaire, c'est à dire si c'est un entier, une chaîne, ou un double.
- is_numeric() - si la variable est un nombre ou une chaîne numérique,
- is_callable() - le la variable est un nom de fonction valide.
Trois fonctions permettent également de connaître l'état de variables :
- isset () : retourne true ou false selon que la variable passée en paramètre existe ou pas,
- unset () : supprime la variable passée en paramètre,
- empty() : retourne un booléen selon que la variable est non vide et non nulle.
Enfin, trois fonctions aident à la réalisation du transtypage de variables :
- int intval(variable),
- float floatval(variable),
- string strval(variable).
Chacune de ces fonctions retourne la valeur transtypée de l'argument passé en paramètre.
2.3 Portée des variables
A
l’inverse d’autres langages comme le C, il est inutile en PHP de
déclarer les variables avant de les utiliser. C’est l’une des
caractéristiques des langages interprétés.
Il est à noter que comme
dans la plupart des langages, la portée des variables égale celle du
bloc où elle a été utilisée pour la première fois (ce qui équivaut à
une déclaration). Dans les cas où une variable déclarée dans une
fonction est nécessaire au niveau global, il est possible de lui
étendre sa portée de manière à ce qu’elle continue d’exister une fois
la fonction terminée.
On pourra pour cela la déclarer comme globale :
Exemple
function maFonction( ) { global maVar ; … } |
Une autre manière plus élégante est d’utiliser le mot clé static qui dans la plupart des cas permet de s’affranchir de l’utilisation peu élégante de global.
Exemple
static mavar ; // static a le même comportement qu’en C
2.4 Assignation de valeurs aux variables
Lorsque
l’on assigne une valeur à une variable (=), son type change pour
correspondre au type de données qui lui est affecté. Ce fonctionnement
est l’inverse du C qui lui essaie de convertir la donnée au type de la
variable.
Exemple
$machaine1 = “ Gérard ” ; $machaine2 = “ Dupont” ; integer var1 ; // déclaration de variable avec typage $var1 = 12 ; $var1 = -45 ; double var1 ; $var1 = -3.14 |
le signe \ permet d’éviter l’affichage du caractère suivant :
\ ‘’ Guillemets doubles \\ Caractère antislash \n Nouvelle ligne \r Retour chariot \t Tabulation \x00 - \xFF Caractères hexadécimaux |
Il est à noter qu’il est tout à fait possible d’inclure une variable dans une chaîne de caractères :
Exemple
print “ Je suis : $machaine1 <BR> ” ; // Affichera “ Je suis Gérard ” |
2.5 Constantes
Il
existe un certain nombre de constantes crées automatiquement par PHP
(nous en verrons quelques unes plus loin). Il est également possible de
définir ses propres constantes avec define (nomconstante, valeur constante).
En réalité, une constante est une variable dont le contenu ne peut être
paramétré qu’une seule fois. Comme les variables, les constantes sont
par défaut sensibles à la casse. Associé à la fonction define, une autre fonction defined(‘’nom constante’’) peut être utilisée afin de tester l’existence d’une constante (elle retournera true ou false selon le cas).
Exemple
define(“MACONSTANTE”, “Hello World”) ; if (defined(‘’MACONSTANTE’’)) { print ‘’La valeur de ma constante est : ‘’.MACONSTANTE //Attention, on accède au contenu sans le $. } |
2.6 Opérateurs logiques, binaires, autres
Nous n’allons pas décrire l’utilisation de chacun des opérateurs, ils sont quasi-identiques au C.
Opérateurs arithmétiques :
+
| Addition |
- | Soustraction |
* | Multiplication |
/ | Division |
% | Modulo |
++ | Incrémentation |
-- | Décrémentation |
Opérateurs logiques :
< | Inférieur à |
> | Supérieur à |
<= | Inférieur ou égal à |
>= | Supérieur ou égal à |
== | Égal à |
!= | Différent |
AND && | Et |
OR || | Ou |
XOR | Ou exclusif |
! | Sauf |
Autres opérateurs
Le . permet de faire une concaténation (print $var1.$var2 affichera le contenu de var1 concaténé à var2).