2
A
回答
2
class Foo{
function __construct($arr){
foreach($arr as $k => $v)
$this->$k = $v;
}
}
您可以查看constructor/desctructor manual和properties manual。
要注意,因爲您沒有定義類中的屬性,所有設置爲public哪些恕我直言是危險的。我認爲使用reflection可能會達到同樣的效果。我只是更深入地檢查了反射,並且這是不可能的(使用PHP5),因爲從PHP6可能帶來的反射中能夠做到這一點是有意義的。
全樣本
<?php
class Foo{
function __construct($arr){
foreach($arr as $k => $v)
$this->$k = $v;
}
function getBar(){
return $this->bar;
}
}
$bar = new Foo(array(
'bar' => 'bar',
'foo' => 'foo'
)
);
var_dump($bar->bar);
?>
0
是的,你可以做到這一點。關閉我的頭頂
public function __constructor($data){
foreach($data as $k=>$v){
$this->{$k} = $v;
}
}
這應該這樣做,當然你需要數學定義字段。
我不太確定它是{$ k}還是$ {k}或$ {$ k},但其中任何一個都可以工作。
0
你當然可以這樣做,因爲RageZ以上描述,但我不認爲我會建議這樣做。這樣做會造成這個類的用戶之間的「契約」過於鬆散 - 即沒有人真正知道該類具有哪些屬性。
我敢打賭,你有一組預定義的「對象屬性集」,可以反過來定義一個類層次結構。
因此,而不是做
- 如果獲得帶有陣列 「A = 2和b = 3」,創建具有$ obj-對象> A = 3 和$ OBJ-B = 3
- 如果我得到 「C = 5」 的數組,創建 $ obj-> C = 5
對象做到這一點:
- 定義MyObjectOfTypeOne一類,具有屬性$ A和$ b
- 定義MyObjectOfTypeTwo一類具有屬性$ C
然後,使用工廠模式取決於以產生正確的對象類型在傳遞給靜態工廠方法的參數上。
相關問題
- 1. Javascript - 在構造函數或構造函數的prototype屬性中設置屬性?
- 2. 工廠或構造函數 - 在哪裏設置對象屬性?
- 3. 在構造函數中設置所有對象的屬性OR初始化後設置對象屬性
- 4. 設置屬性之前的Spring調用對象構造函數
- 5. 使用對象構造函數時定義不同數量的對象屬性
- 6. 屬性未被構造函數定義
- 7. 打字稿:如何設置對象屬性在構造函數中(根據對象的屬性)
- 8. 如何在構造函數中調用承諾對象以設置屬性
- 9. 對象應該在構造函數中設置自己的屬性嗎?
- 10. 在構造函數中使用mongoose.find()方法設置javascript對象屬性
- 11. c#構造函數vs自動屬性和對象初始值設定項
- 12. JavaScript的構造函數和屬性和對象屬性的可見性
- 13. PHP和策略模式。嘗試在構造函數中設置屬性時出現未定義的變量
- 14. 函數對象和構造
- 15. 在對象的構造函數編程方式定義JavaScript屬性
- 16. 在對象的構造函數中使用的屬性失敗
- 17. 按需或在構造函數中創建屬性對象?
- 18. 在構造函數中爲我設置共享屬性值VB.NET
- 19. 獲取屬性在構造函數中設置
- 20. PHP設置類屬性到類定義中的std對象
- 21. rails中的屬性和構造函數
- 22. 只列出在類的構造函數中定義的屬性?
- 23. 在Javascript構造函數中定義屬性的正確方法
- 24. 分配未定義的屬性在構造函數中
- 25. Javascript對象的構造函數的jQuery的getJSON設置屬性失敗
- 26. ES6傳遞一個對象來構造函數,並設置屬性
- 27. 原型和構造對象屬性
- 28. 當在js模塊中定義對象構造函數時,從C調用JS對象構造函數
- 29. 什麼應該是構造函數屬性值..a原型構造函數或對象構造函數本身
- 30. 如何在構造函數中設置對象枚舉類型?
我不知道他是否意味着這一點。 – DarthVader 2009-11-16 03:04:58
你是對的我已編輯,但我認爲有一個功能來做到這一點。我正在尋找 – RageZ 2009-11-16 03:05:33
$ this - > $ k = $ v會死。 – DarthVader 2009-11-16 03:07:11