为什么我不能在PHP中将对象转换为浮点数?

时间:2014-04-18 20:40:17

标签: php

我正在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错误。

有更好的方法或解决方法吗?

1 个答案:

答案 0 :(得分:1)

通常,toString()方法返回对象的字符串表示形式以使其适合显示 - 考虑调试,错误消息等。

要返回对象的值,您只需制作getValue()方法。

另外,我建议不要使用静态方法。试试这个:

$numberOne = new Number(5);
$numberTwo = new Number(10);

$numberOne->add($numberTwo);

$sum = $numberOne->getValue();// 15
相关问题