我有这些相关的类:指定子类中的变量父
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