我有這些相關的類:指定子類中的變量父
class cars {
public $cars;
public function addCar($name, $car)
{
$this->cars[$name] = $car;
}
public function getCars()
{
return $this->cars;
}
public function getCar($name)
{
return $this->cars[$name];
}
public function getParams()
{
return $this->params;
}
}
$cars = new cars();
class bmw extends cars {
private static $_instance = null;
protected $params;
function __construct()
{
$this->params['param'] = 'foo';
}
public static function init()
{
if (self::$_instance === null) {
self::$_instance = new self;
}
return self::$_instance;
}
}
$cars->addCar('bmw', bmw::init());
基本上我需要從父類訪問所有子類。並使用父類中定義的方法定義這些子類。添加新的子類時不應修改父類。
到底這應該是這樣的:
foreach($cars->getCars() as $car)
{
foreach($car->getParams() as $key => $param)
echo "$key = $param";
}
什麼是做到這一點的正確方法?
'基本上我需要從父class'訪問所有子類,所以你想重塑OOP?這是非常令人難以置信的:-) – Alex 2015-02-06 14:13:57
有一些真正奇怪的事情。 「Cars」是一個數組,但擴展它的「bmw」是一個單獨的實例。這是不是很清楚你在這裏做什麼。 – Erik 2015-02-06 14:13:58
我想要在var中獲取所有類汽車的子實例,然後使用在這些實例中的汽車類中定義的方法。 – code9 2015-02-06 14:21:52