Je veux quelques constructeurs définis dans une classe PHP. Cependant, mon code pour les constructeurs est actuellement très similaire. Je préférerais ne pas répéter le code si possible. Existe-t-il un moyen d'appeler d'autres constructeurs à l'intérieur d'un constructeur dans une classe php? Existe-t-il un moyen d'avoir plusieurs constructeurs dans une classe PHP? Je sais que je pourrais résoudre cela en créant par exemple certaines méthodes Init. Mais y a-t-il un moyen de contourner cela?Appel d'un autre constructeur à partir d'un constructeur en PHP
3
A
Répondre
5
Vous ne pouvez pas surcharger des fonctions comme celle de PHP. Si vous faites ceci:
class A {
public function __construct() { }
public function __construct($a, $b) { }
}
votre code ne sera pas compilé avec une erreur que vous ne pouvez pas redéclarer __construct()
.
La méthode consiste à utiliser des arguments facultatifs.
function __construct($service, $action, $security = '') {
if (empty($service) || empty($action)) {
throw new Exception("Both service and action must have a value");
}
$this->$mService = $service;
$this->$mAction = $action;
$this->$mHasSecurity = false;
if (!empty($security)) {
$this->$mHasSecurity = true;
$this->$mSecurity = $security;
}
}
3
Et si vous avez vraiment besoin d'avoir des arguments complètement différents, utilisez le modèle Factory.
class Car {
public static function createCarWithDoors($intNumDoors) {
$objCar = new Car();
$objCar->intDoors = $intNumDoors;
return $objCar;
}
public static function createCarWithHorsepower($intHorsepower) {
$objCar = new Car();
$objCar->intHorses = $intHorsepower;
return $objCar;
}
}
$objFirst = Car::createCarWithDoors(3);
$objSecond = Car::createCarWithHorsePower(200);