如何解决在对象上施放对象时返回特定值的函数
| 首先,我很抱歉这个问题如此含糊。我不记得这叫什么或它们如何工作,因此很难开始搜索或制定一个好标题。 我有两个问题合而为一: 第一: 对象如何在内部转换为其他类型?这个叫什么? 例:$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正确地进行了转换,并感谢@webbiedave将我指向魔术方法__toString。
解决方法
它可以强制转换,因为您可以定义魔术方法__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
, 当您将对象更改为其他数据类型时,这称为类型转换。至于第二部分,我不确定我是否完全理解您,您是否要在数学函数中进行类型转换?
听起来这可能更像您要寻找的东西:
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>\';
但是我找不到有关将对象转换为整数时如何使之工作的文档...如果我这样做,我会进行更新
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。