假设我想定义自己的原生类型,或者只想将Object桥接到本机类型。
例如,参加这个课程:
class Integer {
private $num;
function __construct($number){
$this->num = $number;
}
}
有没有办法可以使用这个类:
$n = new Integer(14);
echo $n+3; //output 17
谢谢!
答案 0 :(得分:3)
我可以为5.3建议另一个解决方案。您可以实现__invoke()方法并按如下方式编写:
$n = new Integer(14);
echo $n()+3; //output 17
完整代码:
<?php
class Integer {
private $num;
function __construct($number){
$this->num = $number;
}
public function __invoke() {
return $this->num;
}
}
$n = new Integer(14);
echo $n() + 3; //output 17
答案 1 :(得分:0)
PHP不支持对自定义类型或类的隐式转换,因此这样的构造不起作用。我认为最简单(尽管很无聊)的方法是在toInteger
,toString
,toBoolean
等对象中实现自己的方法,并且当你想要执行基本操作时总是调用它们
像这样:
$n = new Integer(14);
echo $n->toInteger() + 3; //output 17
答案 2 :(得分:0)
为什么不:
class Integer{
private $Integer;
function __construct($n){
$this->Integer = (int)$n;
}
public function __toString()
{
return strval($this->Integer);
}
}
$n = new Integer(14);
$a = strval($n);
echo $a+3; //Ouptups 17