我正在PHP中创建一个对象(让我们称之为Decimal
),它包含了bcmath功能并添加了一些新功能。
大多数实际工作都发生在静态函数中,如add(...)
和divide(...)
。唯一的实例方法是访问器方法(对于不变性而言万无一失!)和__toString()
魔术方法。
__toString
适用于大多数情况,但有一个奇怪的例子,我希望我的类型转换为float / double / real。我可以使用实例方法或通过执行(float)(string)
强制转换来执行此操作,但似乎逻辑上应该有类似的魔术方法来执行此操作,例如__toFloat
。不幸的是,它似乎没有。我找不到任何相关的文档。我尝试将其作为__toFloat
或__toDouble
,希望它可能只是一个未记录的功能,但无济于事。
如果floatval()
自动尝试将其参数转换为字符串,我甚至会感到高兴,但事实并非如此。它会引发Notice: Object of class Decimal could not be converted to double
错误。
有更好的方法或解决方法吗?
答案 0 :(得分:1)
通常,toString()
方法返回对象的字符串表示形式以使其适合显示 - 考虑调试,错误消息等。
要返回对象的值,您只需制作getValue()
方法。
另外,我建议不要使用静态方法。试试这个:
$numberOne = new Number(5);
$numberTwo = new Number(10);
$numberOne->add($numberTwo);
$sum = $numberOne->getValue();// 15