我有两个方法的对象让我们说他们的名字是'动物'和'狮子'
class animal{
public $var1;
public function doStuff(){
// do stuff
}
}
class lion{
public $var2;
public function doStuff2(){
// do stuff
}
}
我需要'狮子'来扩展'动物'但有条件。
$type = $_POST['type'];
if($type == 'animal') $obj1 = new lion(); // need to extends to `animal`
else $obj1 = new lion();
所以我认为最麻烦的方法就是施加物体,
但我无法在不丢失方法的情况下做到这一点。
有没有办法让它正确或延伸实例?
或任何可能的解决方案?
它是MVC的一部分,我正在为学习而做..
class model{
// many diffrent model class extends to this class..
}
class SQL{
// this is a class of SQL functions..
}
我不希望SQL类自动加载到模型类
我想在控制器中创建功能..
我试图避免这种结果:
$this->model->sql->someFunc();
答案 0 :(得分:0)
也许你可以制作两个不同的课程,
一个伸展动物的classe LionAnimal 还有另一个没有扩展Animal的狮子
在这种情况下,您在LionAnimal和Lion类中会有重复的代码, 但是因为PHP只允许单继承是别的办法(你只能扩展一个类)
在编程语言中,你可以拥有一个狮子和动物超类,并且有一个lionanimal(扩展动物和狮子)和lionnoanimal(扩展狮子)
答案 1 :(得分:0)
为什么不沿着这些方向做点什么:
<?php
class Animal
{
public $var1;
public function doStuff ()
{
// do stuff
}
}
class Lion
{
public $var2;
public function doStuff2 ()
{
// do stuff
}
}
class LionExtended extends Animal
{
private $lion;
public function __construct ()
{
$this->lion = new Lion;
}
public function __call ($method, $args)
{
$this->lion->$method($args[0]);
}
}
if ($type == 'animal')
$obj1 = new LionExtended();
else
$obj1 = new Lion();