我是PHP編程新手,正在嘗試做一個基本的工廠模式。我正在嘗試使用方法創建一個類實例,並使用構造函數。在PHP中使用工廠模式創建對象
$ abstract class Car {
public $type;
public function getType(){
echo $this->type;
}
}
//Class that holds all the details on how to make a Honda.
class Honda extends Car{
public $type = "Honda";
}
class CarFactory {
const HONDA = "Honda";
public function __construct($carType){
switch($carType){
case self::HONDA:
return new Honda();
break;
}
die("Car isn't recognized.");
}
}
$Honda = new CarFactory(carFactory::HONDA);
var_dump($Honda);
結果是CarFactory類的一個對象。爲什麼它不創建Honda類型的對象,因爲返回類型是Honda類型的對象?是因爲我正在使用構造函數嗎?
然而,如果使用的方法內CarFactory如下,它預先創建類型的對象本田
class CarFactory {
const HONDA = "Honda";
public static function createCar($carType){
switch($carType){
case self::HONDA:
return new Honda();
break;
}
die("Car isn't recognized.");
}
$carFactory = new CarFactory();
//Create a Car
$Honda = $carFactory->createCar(CarFactory::HONDA);
var_dump($Honda);
}
感謝。 SV
你不能從構造函數返回的任何值,使用一個靜態方法,就像你用我第二個例子 –