【发布时间】:2019-10-11 09:23:19
【问题描述】:
有没有办法在 PHP 中实现对象到数字的转换?
有一个方便的魔术函数__toString()可以将对象转换为字符串,但是对象转换为数字呢?
使用示例:
<?php
class Foo
{
/**
* @var float
*/
private $factor;
public function __construct(float $factor)
{
$this->factor = $factor;
}
}
$foo = new Foo(1.23);
$boo = 2;
$result = $foo*$boo;
//wanted output 2.46
echo $result;
该代码生成 PHP 通知 (PHP 7.3)
Foo 类的对象无法转换为数字
list of PHP's magic methods 没有任何__toNumber() 方法,但也许有解决方法?
显然除了使用 getter 之外:
getFactor() : float
{
return $this->factor;
}
你有什么想法吗?
【问题讨论】:
-
不是很直观,但你可以有
__invoke()只是return $this->factor;然后使用$foo()*$boo;调用
标签: php type-conversion magic-methods