回答
您應該封裝中含有類兩個類別,並提供了相應的接口(如私有變量
class YourFirstClass {
public $variable;
private $_variable2;
public function setVariable2($a) {
$this->_variable2 = $a;
}
}
class YourSecondClass {
public $variable;
private $_variable2;
public function setVariable2($a) {
$this->_variable2 = $a;
}
}
class ContaingClass {
private $_first;
private $_second;
public function __construct(YourFirstClass $first, YourSecondClass $second) {
$this->_first = $first;
$this->_second = $second;
}
public function doSomething($aa) {
$this->_first->setVariable2($aa);
}
}
研究(谷歌)制定者/吸氣:「組成了繼承」
腳註:對於非創造性的變量名稱感到抱歉。
您是要求在運行時或編程時執行此操作嗎?
我將假定運行時,在這種情況下使用c1有什麼問題屁股inheritance?
創建一個從您想要合併的兩個繼承的新類。
不下調,但PHP不支持(afaik)多重繼承。 – ChristopheD 2010-03-03 20:56:01
這不會讓您訪問繼承類的私有成員。 – tloach 2010-03-03 20:56:15
是的,對不起,PHP不支持多重繼承。但是,通過堆疊類來從一個或另一個繼承,可以模擬多重繼承。 私人會員不會被繼承,是的。但是,如果這是一個問題,將保護措施轉變爲公衆並不是特別困難(我們不會開始討論是否真的需要私人保護)。 – 2010-03-03 21:21:57
# Merge only properties that are shared between the two classes into this object.
public function conservativeMerge($objectToMerge)
{
# Makes sure the argument is an object.
if(!is_object($objectToMerge))
return FALSE;
# Used $this to make sure that only known properties in this class are shared.
# Note: You can only iterate over an object as of 5.3.0 or greater.
foreach ($this as $property => $value)
{
# Makes sure that the mering object has this property.
if (isset($objectToMerge->$property))
{
$objectToMerge->$property = $value;
}
}
}
# Merge all $objectToMerge's properties to this object.
public function liberalMerge($objectToMerge)
{
# Makes sure the argument is an object.
if(!is_object($objectToMerge))
return FALSE;
# Note: You can only iterate over an object as of 5.3.0 or greater.
foreach ($objectToMerge as $property => $value)
{
$objectToMerge->$property = $value;
}
}
你首先應該考慮的方法,就好像它在那裏的array_combine()
的對象對應。然後考慮第二種方法,就好像它在array_merge()
的對象所在的位置。
- 1. 如何合併兩個PHP Doctrine 2 ArrayCollection()
- 2. 如何合併兩個數組與PHP
- 3. 在php中合併兩個圖像
- 4. 在C#中合併兩個DateTime類型
- 5. 如何在C#中合併兩個XmlDocuments
- 6. 如何在Java中「合併」兩個URI?
- 7. 如何在Java中合併兩個GIF?
- 8. 如何在iPhone中合併兩個UITextView?
- 9. 如何使用SimpleXML在PHP中合併兩個XML文檔?
- 10. 如何通過在PHP中的值來合併兩個數組?
- 11. 如何在PHP中合併這兩個特定的數組?
- 12. 如何在PHP中合併兩個MVC系統?
- 13. 如何在php中合併兩個csv文件?
- 14. php合併兩個數組
- 15. 合併兩個資源PHP
- 16. 如何整合兩個java類並在android中使用它?
- 17. 如何在SQLAlchemy中合併兩個模型類
- 18. 如何在JSON.NET中合併/合併兩個JArrays
- 19. 如何在Android中鏈接/合併/合併兩個聯繫人?
- 20. 如何合併兩個priority_queue?
- 21. 如何合併兩個FBO?
- 22. 如何合併兩個表?
- 23. 如何合併兩個Javascript
- 24. 合併兩個陣列索引在PHP
- 25. 合併兩個對象在PHP
- 26. 在PHP合併兩個功能回聲
- 27. 如何使用PHP imagecopy()或imagecopymerge()組合/合併兩個圖像?
- 28. 如何合併兩個表在SSIS
- 29. 如何合併SQL中的兩個表?
- 30. 如何合併java中的兩個BST?
不,我需要運行它。 – user198729 2010-03-03 21:00:30
@ user198729:考慮到你的「在運行時」的要求,你真的想要合併兩個*類*,還是你的意思是說兩個*對象*? – 2010-03-03 21:07:35