私は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のオブジェクトです。リターン型はホンダ型のオブジェクトなので、なぜホンダ型のオブジェクトを作成しないのですか?コンストラクターを使用しているからですか?
ただし、以下のようにCarFactory内のメソッドを使用すると、Hondaタイプのオブジェクトが作成されます。
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