Les méthodes magiques
                    
                        
                         3 h 
                    
                                            
                            
                            1 exercice
                        
                                        
                            
                            Niveau 7
                    
                
            Les méthodes magiques sont des méthodes spéciales qui écrase l'action par défaut de PHP quand certaines actions sont réalisées sur un objet.
Les méthodes suivantes sont considérées magiques :
__construct()__destruct()__call()__callStatic()__get()__set()__isset()__unset()__sleep()__wakeup()__serialize()__unserialize()__toString()__invoke()__set_state()__clone()__debugInfo()
Exemple __construct()
__construct(mixed ...$values = ""): void
PHP permet aux développeurs de déclarer des constructeurs pour les classes. Les classes qui possèdent une méthode constructeur appellent cette méthode à chaque création d'une nouvelle instance de l'objet, ce qui est intéressant pour toutes les initialisations dont l'objet a besoin avant d'être utilisé.
Exemple :
<?php
class BaseClass {
    function __construct() {
        print("Dans le constructeur de BaseClass\n");
    }
}
class SubClass extends BaseClass {
    function __construct() {
        parent::__construct();
        print("Dans le constructeur de SubClass\n");
    }
}
class OtherSubClass extends BaseClass {
    // Constructeur hérité de BaseClass
}
// Dans le constructeur de BaseClass
$obj = new BaseClass();
// Dans le constructeur de BaseClass
// Dans le constructeur de SubClass
$obj = new SubClass();
// Dans le constructeur de BaseClass
$obj = new OtherSubClass();
?>
Exemple : arguments dans le constructeur
<?php
class Point {
    protected int $x;
    protected int $y;
    public function __construct(int $x, int $y = 0) {
        $this->x = $x;
        $this->y = $y;
    }
}
$p1 = new Point(4, 5);
$p2 = new Point(4);
$p3 = new Point(y: 5, x: 4);
?>
Exemple __destruct()
Besoin d'aide ?
Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !