2
A
回答
5
使用interfaces或composition(包括其中一个类的实例作为该类的成员变量)。
接口允许您定义类中方法的原型。一个类然后implements
接口,并且必须为接口中的每个原型定义一个方法。您只能从一个类直接继承(extends
),但您可以implements
任意数量的接口。
如果您发现接口不适合您的任务,只需使用组合。
+1
组合绝对是在这种情况下走的路。仅仅因为你想让一个类继承另一个对象的功能并不意味着它非常适合继承。 – 2011-04-25 14:29:54
0
PHP不允许多重继承。你需要扩展其中的一个,把另一个作为私有变量,或者类似的东西。
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)
相关问题
- 1. 创建一个扩展另一个PHP扩展的PHP扩展?
- 2. StackPanel中有多个扩展
- 3. 多个实体的扩展
- 4. htaccess从多个正斜杠的URL中删除.php扩展
- 5. WAMP - PHP负载了太多的扩展
- 6. PHP的Yaml扩展
- 7. 扩展PHP的SimpleXMLElement
- 8. PHP扩展的MySQL
- 9. DialogResult筛选多个扩展
- 10. Recycleview扩展多个iterms
- 11. Struts 2多个URL扩展
- 12. hdf5多个可扩展表
- 13. 多个条件Linq扩展
- 14. php扩展类
- 15. php类扩展
- 16. mysqli php扩展
- 17. 扩展PHP类
- 18. PHP - 扩展__construct
- 19. 扩展PHP echo?
- 20. PHP Gmagick扩展
- 21. PHP扩展类
- 22. 扩展在PHP
- 23. PHP扩展persistent_list?
- 24. PHP MAPI扩展
- 25. SSH2 PHP扩展
- 26. PHP类扩展
- 27. PHP扩展 - RETURN_STRING
- 28. 扩展在PHP
- 29. PHP 5.4扩展
- 30. pthread PHP扩展
我也可能这样做不对,我应该做一个公共职能的setkey()和传递的$输出secRand->字节(10); ? – Steven 2011-04-24 03:51:17
你可以实例化你所需要的类中的类。 – 2011-04-24 03:52:10
你仍然可以链接类: http://stackoverflow.com/a/9818728/277619 – FlycKER 2013-07-25 17:31:14