我们使用__toString()来返回类的默认值:
<?php
class my
{
public function __toString()
{
return "asdasd";
}
}
?>
它只返回字符串类型。但我想返回资源类型:
<?php
class my
{
public function __toString()
{
return imagecreatefromjpeg("image.jpg");
}
}
?>
它不起作用。如何做?是否有任何方法而不是__toString()或任何方式使用__toString?
答案 0 :(得分:12)
建议您编写自己的方法__toResource()
或类似方法。尝试使用__toString()
执行此操作是错误的,因为您没有返回字符串 - 您可能会混淆未来的开发人员甚至自己大约一年左右。
修改
回答你的评论,像这样?
// Use one _ as suggested by Artefacto
public function _toResource()
{
// Return the resource object
return imagecreatefromjpeg("image.jpg");
}
public function __toString()
{
// Return the filename as a string
return "image.jpg";
}
答案 1 :(得分:2)
这是不可能的。顾名思义,__toString
应该返回一个字符串。
甚至不允许可转换为字符串的内容:
class my
{
public function __toString()
{
return 6;
}
}
//Catchable fatal error: Method my::__toString() must return a string value
echo(new my());
如果您尝试将图像的内容恢复到例如echo(new my)
,你可以这样做:
class my
{
public function __toString()
{
return (string) file_get_contents("myimage.jpeg");
}
}