php - 在对象被转换时返回特定值的对象上的函数

标签 php oop object

首先,我很抱歉这个问题太模糊了。我不记得这叫什么,或者它们是如何工作的,所以很难开始搜索或制定一个好的标题。

我将两个问题合二为一:

首先:

对象如何在内部转换为其他类型?这个叫什么?

例子:

$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/

相关文章:

php - 如何在 PHP 中获得多个错误处理程序?

php - SQL值必须大于其他值达到一个值

java - OOP 中的字符串 Switch 实现替代方案

arrays - ElasticSearch-Kibana:按键过滤数组

javascript - 访问对象的单一属性的最简单方法是什么?

php - 在 mysql php 中查找讲师空闲时间

php - 我应该将仅在一个类方法中使用的变量保留在本地还是将它们声明为类属性?

java - getter 上的 NullPointerException

javascript - 在 html 中显示嵌套的 json 对象

PHP远程MySQL取数据大小限制问题