當對象用作字符串時調用_toString()。我怎樣才能做類似的數值,如__toInt()或__toArray()。這樣的方法存在嗎?有沒有解決辦法?即使有解決方法,使用類似這樣的東西是不是一個好主意?PHP中其他簡單類型的__toString()方法是否等價?
0
A
回答
1
有沒有__toArray
魔法(只是check the ones that exist here),但不應該是,國際海事組織。
雖然人們要求一種神奇的方法,但看起來這種方法不會很快實施。
考慮是什麼對象的,以及我們如何使用它,一個toInt
方法就沒有太大的意義,因爲所有的對象可以是澆鑄到一個數組,並且可以重複過去,我很少看到點無論如何,在使用__toArray
。在對象
要「轉換」到一個數組,你可以使用以下任何一種方法:
$obj = new stdClass;
$obj->foo = 'bar';
var_dump((array) $obj);
//or
var_dump(json_decode(json_encode($obj), true));
這可以與兩個自定義對象來完成,如stdClass
實例的一致好評。
只要將它們作爲數組訪問,我就看不到這一點。爲什麼要寫一個緩慢魔術方法,能夠做一些事情,如:
$bar = 'foo';
$obj[$bar];
如果你能做到:
$obj->{$bar}
,或者如果你可以這樣做:
foreach($obj as $property => $value){}
或者,如果您需要更具體的東西,只需實現任何Traversable
接口。
對於那些罕見的情況,您希望某個對象以特定的方式從特定屬性中生成數組,只需爲其編寫一個方法並明確調用該方法即可。
class ComplexObject
{
private $secret = null;
private $childObject = null;
public $foo = null;
//some methods, then:
public function toArray()
{//custom array representation of object
$data = array();
foreach($this->childObject as $property => $val)
{
if (!is_object($this->childObject->{$property}))
{
$data[$property] = $val;
}
}
$data['foo'] = $this->foo;
return $data;
}
//and even:
public function toJson()
{
return json_encode($this->toArray());
}
}
好的,你必須明確地自己調用這些方法,但這並不難,真的......是嗎?
+0
需要在'$ data [property'因爲它缺少一個 - '以防某人按照這個例子學習:)' – aequalsb
相關問題
- 1. 是否有PHP的__toString方法的Go等價物?
- 2. php 5.1.6魔法__toString方法
- 3. set方法中其他類型的單詞是指什麼?
- 4. PHP中是否有等價的$ .get()方法?
- 5. 與其他語言中的Ruby的method_missing是否等價?
- 6. PHP調用其他類中的方法是不是
- 7. Flash vs其他方法,快速簡單
- 8. 簡單助手方法應該是私有實例方法,類類還是其他所有方法?
- 9. 其他包中定義的類型的方法集是否可以修改?
- 10. 是否有R等價於其他語言的三重引號?
- 11. Java泛型 - 這兩個方法聲明是否等價?
- 12. 的方法是未定義的類型 - 從其他類
- 13. 「RequestVar」的方法名稱「is」是其他單詞的簡稱嗎?
- 14. C++中的等價類方法
- 15. 檢查班級類型(.class)是否等於其他班級類型
- 16. Python:類方法中的類屬性是否等價於局部變量?
- 17. 檢查4個數字是否相等的最簡單方法?
- 18. Doctrine_Collection __toString()函數的類型
- 19. ruby中的instance_variable_set方法的dart中是否有等價物?
- 20. Delphi類型等價和類型相等的語法
- 21. PHP的ArrayObject是否有in_array等價物?
- 22. 是否有C#等價於PHP的array_key_exists?
- 23. 將NSString轉換爲Cocoa等價貨幣的最簡單方法
- 24. 等價類型CStringList
- 25. 如何使用__toString()方法返回不同的類型?
- 26. 在swift/objective c中是否有與getServingUrl()等價的方法?
- 27. 在C++中是否有等價的Java equals方法?
- 28. PHP mysqli是最簡單的方法嗎?
- 29. CGPDFContext是否有其他替代方法?
- 30. PHP等價的Java類型轉換解決方案
簡單地說,不存在 –