Bob*_*Bob 10 php oop overloading operator-overloading
可能重复:
PHP中的运算符重载
有没有办法重载=运算符?
所以我想要的是以下内容:
class b{
function overloadis(){
// do somethng
}
}
$a = new b();
$a = 'c';
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我希望当$ a ='c'时; 调用方法,首先调用方法overloadis然后该函数决定是否执行或中止操作(将'c'赋值给$ a).
是否有可能做到这一点 ?
Thnx提前,鲍勃
Pis*_*3.0 11
不.PHP不支持运算符重载,但有一些例外(如@NikiC所述:"PHP支持重载某些运算符,如[], - >和(字符串),并允许重载某些语言结构,如foreach") .
您可以通过使用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';
Run Code Online (Sandbox Code Playgroud)