首先,我很抱歉这个问题太模糊了。我不记得这叫什么,或者它们是如何工作的,所以很难开始搜索或制定一个好的标题。
我将两个问题合二为一:
首先:
对象如何在内部转换为其他类型?这个叫什么?
例子:
$Obj{
$value = 1;
$other = 2;
$more = 3;
}
$myObj = (string)$Obj;
print $myObj; // prints "1, 2, 3" or something like that
第二个:
这个方法可以用在数学上吗?是否有一些覆盖函数可以识别何时在数学中使用对象?
例子:
$Obj{
$value = 1;
$other = 2;
$more = 3;
}
$result = 4 / $Obj;
print $result; // prints ".66666667" or something similar (sum of all properties)
更新:
我认为这可能与 serialize() 有关,但我知道我听说过这样一种情况,它是“自动”完成的,而无需调用 serialize()
并且它的完成方式实际上并不序列化整个对象,它只是将其转换为可用值,就像我上面的示例一样。
决赛:
感谢@trey 说得对 casting并感谢@webbiedave 为我指明了神奇的方法 __toString .
最佳答案
这是转换,因为您可以定义魔术方法__toString允许根据需要将对象转换为字符串,然后允许 PHP 将其转换为数学中的 int 或 float。
举个例子:
class A
{
public $value = 1;
public $other = 2;
public $more = 3;
public function __toString()
{
return (string)($this->value + $this->other + $this->more);
}
}
$obj = new A();
echo 4 / (string)$obj; // outputs 0.66666666666667
关于php - 在对象被转换时返回特定值的对象上的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6157700/