我在PHP中創建了一個對象(我們稱之爲Decimal
),它包裝了bcmath功能並添加了一些新功能。爲什麼我不能將對象轉換爲PHP中的浮點數?
大部分實際工作都發生在像add(...)
和divide(...)
這樣的靜態函數中。唯一的實例方法是訪問器方法(用於不變性的萬歲!)和魔法方法。
__toString
適用於大多數情況,但有奇怪的實例,我想我喜歡的類型強制轉換成浮點/雙/實。我可以用一個實例方法或者通過執行一個(float)(string)
強制轉換來完成此操作,但似乎符合邏輯的是應該有類似的方法來執行此操作,例如__toFloat
。不幸的是,它似乎並不存在。我無法找到任何有關文件。我試着把它作爲__toFloat
或__toDouble
,希望它可能只是一個無證的功能,無濟於事。
我甚至會很高興,如果floatval()
自動試圖將其參數轉換爲字符串,但事實並非如此。它會拋出一個Notice: Object of class Decimal could not be converted to double
錯誤。
是否有更好的方法或爲此周圍的工作?
有趣的問題,但你能概述爲什麼實例方法不合適? – halfer
我並不是說這是一個不合適的解決方案。我只覺得奇怪的是,只有一種神奇的方法來處理投射到字符串而不是所有的基本類型。它導致需要不同的接口才能達到基本相同的效果。 – DynamiteReed
如果你想重載轉換或操作符,你必須編寫一個PHP擴展。此功能不提供給用戶級代碼。 – NikiC