Module PHP.4 – Types & données
Objectif
Maîtriser tous les types de données PHP : types scalaires, null, conversions de types, et comprendre le typage faible vs strict.
Théorie
Types scalaires
int (entier)
$nombre = 42;
$negatif = -15;
$zero = 0;
$grand = 1000000;
Caractéristiques :
- Pas de limite de taille pratique (64 bits)
- Peut être décimal, hexadécimal, octal, binaire
$decimal = 42;
$hexa = 0x2A; // 42 en hexadécimal
$octal = 052; // 42 en octal
$binaire = 0b101010; // 42 en binaire
Fonctions utiles :
is_int($nombre); // Vérifier si c'est un entier
intval($valeur); // Convertir en entier
(int) $valeur; // Cast vers entier
float (décimal)
$prix = 19.99;
$temperature = -5.5;
$scientifique = 1.5e3; // 1500
Précision :
- Précision limitée (problèmes d'arrondi connus)
- Pour l'argent, utiliser des entiers (centimes) ou des bibliothèques spécialisées
Fonctions utiles :
is_float($valeur);
floatval($valeur);
(float) $valeur;
round($nombre, 2); // Arrondir à 2 décimales
number_format($prix, 2); // Formater : 19.99
string (chaîne de caractères)
$simple = 'Simple guillemets';
$double = "Double guillemets";
$heredoc = <<<EOT
Texte sur
plusieurs lignes
EOT;
Différences guillemets :
$nom = "Jean";
// Double guillemets : interpolation
echo "Bonjour $nom"; // Bonjour Jean
echo "Bonjour {$nom}"; // Bonjour Jean (recommandé)
// Simple guillemets : littéral
echo 'Bonjour $nom'; // Bonjour $nom
// Échappement
echo "Il a dit \"Bonjour\""; // Il a dit "Bonjour"
echo 'Il a dit \'Bonjour\''; // Il a dit 'Bonjour'
Fonctions string courantes :
$texte = "Bonjour le monde";
strlen($texte); // Longueur : 17
strtoupper($texte); // "BONJOUR LE MONDE"
strtolower($texte); // "bonjour le monde"
ucfirst($texte); // "Bonjour le monde"
substr($texte, 0, 7); // "Bonjour"
str_replace("monde", "PHP", $texte); // "Bonjour le PHP"
trim($texte); // Enlève espaces début/fin
explode(" ", $texte); // ["Bonjour", "le", "monde"]
bool (booléen)
$vrai = true;
$faux = false;
Valeurs considérées comme false :
false0(entier)0.0(float)""(chaîne vide)"0"(chaîne "0")[](tableau vide)null
Tout le reste est considéré comme true.
Fonctions :
is_bool($valeur);
(bool) $valeur;
null
null représente l'absence de valeur.
$variable = null;
$variable = NULL; // Même chose (insensible à la casse)
Utilisations :
- Variable non initialisée
- Variable explicitement vidée
- Valeur par défaut
Vérification :
is_null($variable);
$variable === null; // Comparaison stricte recommandée
isset($variable); // Vérifie si existe et n'est pas null
Différence isset() vs is_null() :
$var1 = null;
$var2; // Non définie
isset($var1); // false
isset($var2); // false
is_null($var1); // true
is_null($var2); // true (mais génère un warning)
Conversion de types
Conversion explicite (cast) :
$nombre = (int) "42"; // 42
$texte = (string) 42; // "42"
$bool = (bool) 1; // true
$float = (float) "3.14"; // 3.14
Fonctions de conversion :
intval($valeur); // Vers entier
floatval($valeur); // Vers float
strval($valeur); // Vers string
boolval($valeur); // Vers booléen
Conversion automatique (coercion) :
$resultat = "5" + 3; // 8 (conversion automatique)
$resultat = "5" . 3; // "53" (concaténation)
$resultat = "5" * "3"; // 15 (multiplication)
Typage faible vs strict
Typage faible (par défaut) : PHP convertit automatiquement les types selon le contexte.
$nombre = "5";
$resultat = $nombre + 3; // 8 (conversion automatique)
$age = "25";
if ($age > 18) { // "25" converti en 25
echo "Majeur";
}
Typage strict (déclaré) : Depuis PHP 7.0, on peut déclarer un typage strict.
Activer le typage strict :
<?php
declare(strict_types=1);
function additionner(int $a, int $b): int {
return $a + $b;
}
additionner(5, 3); // OK : 8
additionner("5", 3); // Erreur : type string non accepté
Types de déclaration :
// Paramètres typés
function calculer(int $a, float $b): float {
return $a + $b;
}
// Retour typé
function obtenirNom(): string {
return "Jean";
}
// Propriétés typées (PHP 7.4+)
class Personne {
public string $nom;
public int $age;
}
Types disponibles pour déclaration :
int,float,string,boolarrayobject?type(nullable) :?string= string ou null- Classes/interfaces
void(pas de retour)mixed(PHP 8.0+)
Vérification de types
Fonctions is_ :*
is_int($valeur);
is_float($valeur);
is_string($valeur);
is_bool($valeur);
is_array($valeur);
is_object($valeur);
is_null($valeur);
is_numeric($valeur); // Vérifie si numérique (int, float, ou string numérique)
gettype() :
gettype(42); // "integer"
gettype(3.14); // "double"
gettype("texte"); // "string"
gettype(true); // "boolean"
gettype(null); // "NULL"
var_dump() : Affiche le type et la valeur (utile pour déboguer) :
var_dump(42);
// int(42)
var_dump("Jean");
// string(4) "Jean"
Exercice
-
Types scalaires
- Créez des variables de chaque type (int, float, string, bool)
- Testez les fonctions is_* pour vérifier les types
- Utilisez var_dump() pour voir les détails
-
Conversions
- Testez les conversions explicites (cast)
- Testez les conversions automatiques
- Observez les résultats
-
Typage strict
- Créez une fonction avec typage strict
- Testez avec les bons types
- Testez avec les mauvais types (observez les erreurs)
-
Manipulation de strings
- Créez une chaîne de caractères
- Testez au moins 5 fonctions string différentes
- Concaténez plusieurs chaînes
-
Null et vérifications
- Créez des variables null
- Testez isset(), is_null(), empty()
- Comprenez les différences
Quiz
-
Quelle fonction vérifie si une variable est un entier ?
- is_integer()
- is_int()
- check_int()
-
Que retourne
(int) "3.14"?- 3.14
- 3
- "3"
-
Que signifie le typage strict en PHP ?
- Plus rapide
- Les types doivent correspondre exactement
- Moins d'erreurs
-
Quelle est la différence entre
isset()etis_null()?- Aucune différence
- isset() vérifie existence et non-null, is_null() seulement null
- is_null() est plus rapide
-
Que fait
gettype()?- Convertit le type
- Retourne le nom du type
- Vérifie le type
Mini défi
Mission : Créer un système de validation de types
Créez un script PHP qui valide et convertit différents types de données :
Fonctionnalités :
-
Fonction de validation
validerEntier($valeur): Vérifie et convertit en entiervaliderFloat($valeur): Vérifie et convertit en floatvaliderString($valeur): Vérifie et nettoie la chaînevaliderBool($valeur): Vérifie et convertit en booléen
-
Fonction de conversion sécurisée
convertirType($valeur, $type): Convertit vers un type spécifique- Gère les erreurs gracieusement
- Retourne null si conversion impossible
-
Tests
- Testez avec différentes valeurs
- Testez les cas limites (null, chaînes vides, etc.)
- Affichez les résultats de manière claire
Exemple d'utilisation :
$entier = validerEntier("42"); // 42
$entier = validerEntier("abc"); // null ou valeur par défaut
$float = validerFloat("19.99"); // 19.99
$string = validerString(" Test "); // "Test" (trim)
Critères :
- ✅ Toutes les fonctions de validation créées
- ✅ Gestion des erreurs appropriée
- ✅ Code bien documenté
- ✅ Tests complets avec différents cas
- ✅ Utilisation de typage strict si possible
Objectif : Maîtriser les types PHP et savoir les valider et convertir correctement.
Validation : Vous pouvez passer au module suivant quand vous maîtrisez tous les types PHP et leurs conversions.