首先,我很抱歉这个问题太模糊了。我不记得这是什么,或者它们是如何工作的,所以开始搜索或制定好的标题非常困难。
我有两个问题包含在一个:
如何在内部将对象转换为其他类型?这叫什么?
示例:
$Obj{
$value = 1;
$other = 2;
$more = 3;
}
$myObj = (string)$Obj;
print $myObj; // prints "1, 2, 3" or something like that
这种方法可以用在数学中吗?是否有一些覆盖函数可以识别何时在数学中使用Object?
示例:
$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。
答案 0 :(得分:4)
强制转换,因为您可以定义魔术方法__toString以允许根据需要将对象强制转换为字符串,然后允许PHP将其强制转换为int或漂浮在数学中。
采用以下示例:
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
答案 1 :(得分:3)
将对象更改为其他数据类型时称为类型转换,对于第二部分,我不完全确定我理解你,您是否尝试在数学函数中键入强制转换?
听起来这可能更符合您的要求:
class User
{
public $first_name='John';
public $last_name='Smith';
public function __toString()
{
return "User [first='$this->first_name', last='$this->last_name']";
}
}
$user=new User;
print '<span>'.$user.'</span>';
但是当对象转换为整数时,我无法找到有关如何使其工作的文档......如果我这样做,我会更新