对象在转换对象时返回特定值的函数

时间:2011-05-27 21:07:52

标签: php oop object

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

我有两个问题包含在一个:

首先:

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

示例:

$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

2 个答案:

答案 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>';

但是当对象转换为整数时,我无法找到有关如何使其工作的文档......如果我这样做,我会更新