有没有办法重载=运算符?
所以我想要的是以下内容:
class b{
function overloadis(){
// do somethng
}
}
$a = new b();
$a = 'c';
在上面的例子中,当$ a ='c'时我想要那个;调用方法,首先调用方法overloadis,然后该函数决定是否执行或中止操作(将'c'分配给$ a)。
是否可以这样做?
Thnx提前, 鲍勃
答案 0 :(得分:11)
没有。 PHP不支持运算符重载,但有一些例外(如@NikiC所述:“PHP支持重载某些运算符,如[], - >和(字符串),并且还允许重载某些语言结构,如foreach”)。
答案 1 :(得分:5)
您可以使用PHP-magic-function __set()
并将相应的属性设置为private / protected来为类属性模仿此类功能。
class MyClass
{
private $a;
public function __set($classProperty, $value)
{
if($classProperty == 'a')
{
// your overloadis()-logic here, e.g.
// if($value instanceof SomeOtherClass)
// $this->$classProperty = $value;
}
}
}
$myClassInstance = new MyClass();
$myClassInstance->a = new SomeOtherClass();
$myClassInstance->a = 'c';
答案 2 :(得分:3)
查看PECL Operator overloading扩展程序。