Classes PHP
Introduction à la programmation orientée objet en PHP
Fichier de classe
Le fichier classes/utilisateur.class.php<?php
class Utilisateur {
// Propriétés (attributs)
public $user_name;
public $user_pass;
}
Les variables créées dans les classes sont appelées des propriétés (attributs). Public signifie ici que l'on va pouvoir accéder à nos propriétés depuis l'intérieur et l'extérieur de notre classe.
Valeurs des propriétés
Les valeurs des propriétés seront ici passées lors de la création d'un nouvel objet (lorsqu'un visiteur s'inscrira sur notre site). Notez qu'il est tout-à-fait permis d'initialiser une propriété dans la classe, c'est-à-dire lui attribuer une valeur de référence à la condition que ce soit une valeur constante.
Pour accéder aux propriétés définies originellement dans la classe depuis nos objets, on utilise l'opérateur -> qui est appelé opérateur objet.
Fichier principal
Fichier index.php<!DOCTYPE html>
<html lang="fr">
<head>
<title>POO PHP</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/mesStyles.css">
</head>
<body>
<h1>Inscription</h1>
<?php
require 'classes/utilisateur.class.php';
// nouvelles instances de notre classe Utilisateur
$Utilisateur1 = new Utilisateur();
$Utilisateur2 = new Utilisateur();
// opérateur d'objet -> pour accéder aux propriétés définies dans la classe
$Utilisateur1->user_name = 'Mimi';
$Utilisateur1->user_pass = 123456;
$Utilisateur2->user_name = 'Fifi';
$Utilisateur2->user_pass = 'abcdef';
// Affichage des noms d'utilisateurs
echo $Utilisateur1->user_name.'<br>';
echo $Utilisateur2->user_name;
?>
</body>
</html>
-> Voir cet exemple Easy-Micro
Problème de sécurité
Dans le cas présent, on va pouvoir accéder aux propriétés depuis notre objet (c'est-à-dire depuis l'extérieur de notre classe) car nous l'avons définie avec le mot clef public.
Notez cependant qu'il est généralement considéré comme une mauvaise pratique de laisser des propriétés de classes accessibles directement depuis l'extérieur de la classe et de mettre à jour leur valeur comme cela car ça peut poser des problèmes de sécurité dans le script.
Pour manipuler des propriétés depuis l'extérieur de la classe, nous allons plutôt créer des fonctions de classe dédiées afin que personne ne puisse directement manipuler nos propriétés et pour protéger notre script.