Quand déclarer les variables dans les classes ?

Petit nouveau ! | 1 Messages

17 oct. 2021, 10:59

Bonjour,
Je n'ai pas compris quand il faut déclarer les variables dans les classes. Dans mon exemple, je n'ai pas déclaré et cela marche très bien (j'ai mis la variable $db en commentaire) :

Code : Tout sélectionner

class Database { // protected $db; // Faut-il mettre ??? public static function connectDB() { /* Une Méthode Statique (pas besoin de faire new Database() pour y accéder) */ $db = new PDO('mysql:host=localhost; dbname=nombdd; charset=utf8', 'root', '', [ PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING, /* Active les erreurs SQL */ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC /* On récupère tous les résultats en tableau associatif indexé par Nom de colonne */ ]); return $db; } } // ============================== abstract class Model { /* abstract pour dire qu"il ne sert qu'à l'héritage. Empêche de faire new Model() */ // protected $db; // Faut-il mettre ??? public function __construct() { $this->db = Database::connectDB(); // Accès à une Méthode Statique. Connexion à la base de données } } // ============================== class Movie extends Model { // protected $db; // Faut-il mettre ??? public function findAllMovie() { $query = $this->db->query('SELECT * FROM movie ORDER BY id DESC'); $movies = $query->fetchAll(PDO::FETCH_OBJ); // En PHP Objet, ne pas oublier le paramètre PDO::FETCH_OBJ, sinon ça ne marche pas return $movies; } public function showAllMovie() { foreach ($this->findAllMovie() as $movie) { echo '<div><a href="watching.php?id='.$movie->slug.'"><img src="assets/img/'.$movie->cover.'" alt="'.$movie->title.'"></a></div>'; } } } $movie = new Movie(); $movie->showAllMovie();