PHP Accueil
Chapitres :
PHP Chapitre 4 : Types de données
4.1 Constantes
4.1.1 Constantes système
Il y en a un assez grand nombre. Leur point commun est d'être systématiquement écrite sous la forme M_*.
Je vous fournis ici les plus utilisées :
– M_PI : Pi
– M_PI_2 : Pi/2
– M_PI_3 : Pi/3
– M_SQRTPI : Racine carrée de Pi
– M_SQRT2 : Racine carrée de 2
4.1.2 Constantes personnalisées
Pour les définir, on utilise la syntaxe suivante :
define("MONAGE", 24);
define("MONNOM", 'Nicolas');
On s'entend par convention pour toujours les écrire en majuscules. Elles ne doivent pas posséder de $ en premier caractère.
4.2 Variables
Le type de variable en PHP n'a pas besoin d'être précisé à la déclaration.
C'est à l'assignation que le type se fixe. Une variable se nomme avec un $ en premier caractère,
Et sans espace dans le nom.
Ainsi, les variables en PHP se déclarent et s'utilisent comme suit :
<?php
$maVariable = 17;
print ("Ma variable vaut : $maVariable");
?>
Les différents types considérés sont :
· Integer
· Double (nombre décimal)
· Boolean
· NULL
· String ('ceci est une string')
Mais aussi
· Array (tableaux)
· Object (instances de classes définies par le programmeur)
· Resource (variables pointant sur des ressources externes. exemple : connexions aux bases de données)
4.2.1 Entiers
Ce sont les « integer » en anglais, ou int.
Il doit être compris entre -(231-1) et 231-1.
Exemple :
<?php
$monentier = 123456;
?>
4.2.2 Nombres flottants
Aussi appelés « double », le type se nomme float. On les exprime a virgule pour ne pas les confondre avec les int.
<?php
$monflottant = 3.14159;
?>
Notes :
– Une somme d'un flottant et d'un entier donne un flottant.
– Noter le point et non la virgule pour séparer partie entière et partie décimale.
4.2.3 Booléens
Une variable de type boolean (ou bool) peut recevoir seulement une des deux valeurs constantes suivante : TRUE ou FALSE.
4.2.4 NULL
NULL est l'équivalent de l'absence de valeur.
Il est aussi égal à FALSE.
4.2.5 Chaînes de caractères
Les chaînes de caractères (ou string) ne diffèrent pas tellement des autres langages de programmation, à ceci près : elles peuvent être déclarées de 2 façons différentes : entre les guillemets simples ou doubles.
· Les guillemets simples stockent les chaînes de caractères sans chercher à en interpréter le contenu.
· Les guillemets doubles permettent l'analyse du contenu des caractères qui les compose.
Exemple de différence :
<?php
$monnom = "Nicolas";
echo "Je m'appelle $monnom "; // résultat : Je m'appelle Nicolas
echo 'Je m'appelle $monnom '; // résultat : Je m'appelle $monnom
?>
On concatène les chaînes de caractère en PHP en utilisant l’opérateur « . »
Ex :
print ($maPremiereVariable . "mon texte" . $maSecondeVariable);
On peut accéder à un caractère particulier dans une chaîne :
$monNom = "Nicolas";
$maLettre = $monNom{3};
Donnera 'o'.
4.2.6 Tableaux
Il faut bien se rappeler que contrairement à la plupart des autres langages, (Et surtout le C), les tableaux ne se déclarent pas.
Ils sont directement créés à l'assignation. Très pratique et rapide.
Quelques exemples d'utilisation de tableaux en PHP(tiré de (Converse & Park, 2000)) :
print ("my_array is $my_array<br>");
print ("my_array[0] is $my_array[0]<br>");
print ("my_array[5] is $my_array[5]<br>");
$my_array[5]="Slot #6";
print ("my_array is $my_array<br>");
print ("my_array[0] is $my_array[0]<br>");
print ("my_array[5] is $my_array[5]<br>");
Ceci donne :
my_array is
my_array[0] is
my_array[5] is
my_array is Array
my_array[0] is
my_array[5] is Slot #6
Dans les 3 premiers cas, la variable my_array n'a pas été attribuée, non-définie, donc inexistante.
Une fois assignée telle qu'un tableau, on s'aperçoit que my_array se fait attribuer le nom par défaut «Array» et devient un tableau.
De plus, seulement la case assignée se retrouve remplie de la valeur attribuée. Dans ce cas, une chaîne de caractères au sixième rang.
Autre méthode d'assignation possible :
$mon_tableau = array(166,233,399,477,522);
Dans ce cas, l'assignation se fait automatiquement de 0, 1 et en croissant. Il est possible d'assigner dans un array en PHP autrement qu'avec des nombres : par association clé-valeur
$capitale('Japon')="Tokyo";
$capitale('France')="Paris";
$capitale('Espagne')="Madrid";
Autre mode d'assignation possible par association clé-valeur:
$capitale = array (
'Japon' => "Tokyo",
'France'=> "Paris",
'Espagne'=>"Madrid");
4.2.7 Objets
Le PHP peut se programmer en style orienté-objet. Cette structure complexe nous permet tout d'abord d'agréger des types de données différentes ensemble (propriétés).
Ensuite, elle nous permet d'y agréger des fonctions (méthodes), et leurs statuts d'héritage liés.
Pour davantage de détails sur les propriétés de la programmation orienté-objet, se référer aux cours détaillant cette partie.
4.2.8 Ressources
Ceci est un type particulier qui gère les communications avec les données provenant de programmes externes.
Il peut s’agir d’accès aux données issues de bases, ou de résultat d'un programme graphique.
Ainsi, il s'agit ici surtout de localisateurs de mémoire que le programmeur utilise via des fonctions spéciales qui les créée pour lui.
Exemple(1): mysqli_connect() vous fournira une variable ressource pour se connecter à un base de données MySQL. Suite à cela, mysqli_query() vous permettra d'exploiter cette variable pour accéder aux données de la base.
$my_resource = mysqli_connect(); // on attribue l'espace mémoire
// ici on exploite la connexion avec mysqli_query() par exemple
$my_resource = NULL; // on libère l'espace mémoire
4.3 Conversions
4.3.1 Conversions de bases
Fonction |
Argument |
Résultat |
BinDec() |
String représentant un binaire |
String représentant un décimal |
DecBin() |
String représentant un décimal |
String représentant un binaire |
OctDec() |
String représentant un octal |
String représentant un décimal |
DecOct() |
String répresentant un decimal |
String représentant un octal |
HexDec() |
String représentant un hexadecimal |
String représentant un decimal |
DecHex() |
String représentant un decimal |
String représentant un hexadecimal |
4.3.2 Conversions de types par fonctions
intval() // convertit en int
doubleval() // convertit en double
strval() // convertit en string
4.3.3 Conversion par transtypage
Même procédure qu'en C/C++ (voir ci-dessous)
4.3.4 Conversion de type par la fonction settype ()
Exemple reprenant chacune de 3 techniques ( (Converse & Park, 2000)) :
$le_poids = intval (strval (doubleval ("33 tonnes et des pinottes")));
$le_poids = (int) (string) (double) "33 tonnes et des pinottes";
$le_poids = "33 tonnes et des pinottes";
settype ($le_poids, "double");
settype ($le_poids, "string");
settype ($le_poids, "int");
4.4 Portée des variables
4.4.1 Variable locale
Dans le corps d'une fonction (voir chapitre 5.3), si l'on définit une variable de façon classique, sa portée se limite à l'espace de la fonction.
Sa valeur sera réinitialisée à chaque appel de la fonction.
Dans ce cas, on dit que la variable est « locale ». C'est le cas par défaut.
Ex :
function CompteMesLettres ()
{
$compte = 0; // variable locale
while ($compte <10)
{
print (chr(ord ('A') + $compte));
$compte = $compte + 1;
}
print ("<br> J'ai maintenant $compte lettres <br>");
}
$compte = 0;
CompteMesLettres();
$compte = $compte + 1;
print ("J'ai fait appel à la fonction $compte fois.<br>");
CompteMesLettres();
$compte = $compte + 1;
print ("J'ai fait appel à la fonction $compte fois.<br>");
Ceci donne :
ABCDEFGHIJ
J'ai maintenant 10 lettres
J'ai fait appel à la fonction 1 fois.
ABCDEFGHIJ
J'ai maintenant 10 lettres
J'ai fait appel à la fonction 2 fois.
4.4.2 Variable globale
Il existe une alternative à cela : il est possible d'ouvrir la portée d'une variable définie dans le corps d'une fonction au reste du programme, en la rendant « globale ».
Ex :
function CompteMesLettres2 ()
{
global $compte; // variable globale
while ($compte <10)
{
print (chr(ord ('A') + $compte));
$compte = $compte + 1;
}
print ("<br> J'ai maintenant $compte lettres <br>");
}
$compte = 0;
CompteMesLettres2();
$compte = $compte + 1;
print ("J'ai fait appel à la fonction $compte fois.<br>");
CompteMesLettres2();
$compte = $compte + 1;
print ("J'ai fait appel à la fonction $compte fois.<br>");
Ceci donne dans notre navigateur :
ABCDEFGHIJ
J'ai maintenant 10 lettres
J'ai fait appel à la fonction 11 fois.
J'ai maintenant 11 lettres
J'ai fait appel à la fonction 12 fois.
Ce qui n'est pas le comportement souhaité dans ce programme.
Cependant, l'utilisation des variables globales peut s'avérer souvent utile.
4.4.3 Variable statique
La variable statique est une alternative entre le comportement local, qui se réinitialise à chaque accès, et le comportement global qui mélange les valeurs en dehors et en dedans de la fonction.
Ainsi, une variable statique peut porter le même nom dans et hors la fonction, mais n'aura pas la même valeur. De plus, à l'intérieur de la fonction, elle conservera mémoire de sa valeur, même entre les appels à la fonction.
Important : une variable statique assignée se fera attribuer la valeur au premier appel de fonction seulement.
Ex :
function CompteMesLettres3 ()
{
static $compte = 0; // statique à 0 au 1er appel.
$limite = $compte + 10;
while ($compte <$limite)
{
print (chr(ord ('A') + $compte));
$compte = $compte + 1;
}
print ("<br> J'ai maintenant $compte lettres <br>");
}
$compte = 0;
CompteMesLettres3();
$compte = $compte + 1;
print ("J'ai fait appel à la fonction $compte fois.<br>");
CompteMesLettres3();
$compte = $compte + 1;
print ("J'ai fait appel à la fonction $compte fois.<br>");
Ceci donne maintenant :
ABCDEFGHIJ
J'ai maintenant 10 lettres
J'ai fait appel à la fonction 1 fois.
KLMNOPQRST
J'ai maintenant 20 lettres
J'ai fait appel à la fonction 2 fois.