反对返回属性?

Object to return property?

提问人:Madara's Ghost 提问时间:8/29/2011 最后编辑:Madara's Ghost 更新时间:8/29/2011 访问量:98

问:

我有一个名为Type的类:

class Type { ... }

它有一个名为 :$value

class Type {
    protected $value;

    //More code here...
}

我希望当我尝试使用函数时,当我传递对象时,将传递 的值。例如:$obj->value

$obj = new Type("value");
echo $obj; //Desired output: value

我尝试了很多东西,到处寻找,但我似乎找不到这个。甚至可能吗?

提前致谢。:)

编辑:也许你误解了(或缩小)了我的问题。我希望它适用于所有值类型,而不仅仅是字符串类型,包括和intfloatboolean

$obj = new Type(true);
echo !$obj; //Desired output: false

$obj2 = new Type(9);
echo ($obj + 1); //Desired output: 10
php oop 魔术方法

评论

0赞 Radoslav Georgiev 8/29/2011
尝试使用 __toString() 魔术方法:)
0赞 Raveline 8/29/2011
你会在什么样的功能中使用它?对于连接到文本的每个内容,您始终可以使用魔术方法 toString。

答:

4赞 Yoshi 8/29/2011 #1

参见:魔术方法

class Type {
  public function __toString() {
    return (string)$this->value;
  }
}

如果你对物体的使用不会触发魔法,你可以完全使用:

$someVar = (string)$obj;

更新

除了字符串或数组(参见 ArrayAccess 接口)之外,目前还不可能让 php 像预定义的数据类型一样处理对象。

评论

0赞 Madara's Ghost 8/29/2011
差不多了,但我希望它适用于所有类型,(否则现在会调用该类,对吗? :P) 我已经编辑了我的问题以澄清。String
0赞 Yoshi 8/29/2011
@Rikudo Sennin 如果你看一下上面的链接,你会发现你目前无法用php实现。
0赞 Madara's Ghost 8/29/2011
请将其添加到答案中,我将接受它作为正确的:)谢谢。