我听说你不能使用延长两次。
我有两个班级:
Base32和SecureRandom
我需要TOTP。
我怎样才能同时使用它们?
答案 0 :(得分:5)
使用interfaces或composition(包括其中一个类的实例作为类的成员变量)。
接口允许您为类中的方法定义原型。然后是一个类implements
,该接口必须为接口中的每个原型定义一个方法。您只能直接从一个类(extends
)继承,但可以implements
任意数量的接口。
如果您发现界面不适合您的任务,请使用合成。
答案 1 :(得分:2)
看看PHP5.4 Traits他们解决多重延伸的问题。
将它们与接口结合以获得instanceof功能。
例如:
interface ClientAwareInterface {
public function setClient($client);
}
trait ClientAwareTrait {
protected $client;
public function setClient($client)
{
$this->client = $client;
}
}
class Shop implements ClientAwareInterface extends SomeClass {
use ClientAwareTrait; // use our trait to implement interface methods
use OtherTrait;
}
$shop = new Shop();
if($shop instanceof ClientAwareInterface) {
$shop->setClient('test');
var_dump($shop);
}
结果将是:
object(Shop)[1]
protected 'client' => string 'test' (length=4)
答案 2 :(得分:0)
PHP不允许多重继承。你需要扩展其中一个并将另一个作为私有变量,或类似的东西。