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. 如何在php中擴展多個類?
- 3. StackPanel中有多個擴展
- 4. C中的PHP擴展:您能否從另一個單獨的擴展中繼承一個擴展中的類?
- 5. Java上的多個擴展
- 6. 多個實體的擴展
- 7. htaccess從多個正斜槓的URL中刪除.php擴展
- 8. PHP中的FreeType擴展
- 9. 在magento擴展中的多個http POST
- 10. PHP-OOP擴展兩個類?
- 11. WAMP - PHP負載了太多的擴展
- 12. PHP擴展的MySQL
- 13. 擴展PHP的SimpleXMLElement
- 14. hdf5多個可擴展表
- 15. 如何擴展多個類
- 16. Struts 2多個URL擴展
- 17. Recycleview擴展多個iterms
- 18. 替代擴展多個類
- 19. DialogResult篩選多個擴展
- 20. GNU使多個擴展
- 21. 多個條件Linq擴展
- 22. Chrome擴展多個匹配
- 23. php擴展類
- 24. PHP擴展類
- 25. PHP - 擴展__construct
- 26. C++擴展PHP
- 27. 擴展PHP類
- 28. 擴展PHP echo?
- 29. SSH2 PHP擴展
- 30. 在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