php重载=运算符
可能重复:php重载=运算符,php,oop,operator-overloading,overloading,Php,Oop,Operator Overloading,Overloading,可能重复: 有没有办法使=运算符过载 所以我想要的是: class b{ function overloadis(){ // do somethng } } $a = new b(); $a = 'c'; 在上面的例子中,当$a='c'时,我想要它;调用时,首先调用方法重载,然后在执行或中止操作(将“c”分配给$a)时终止该函数 有可能这样做吗 Thnx提前, Bob否。PHP不支持运算符重载,只有少数例外(如@NikiC所述:“PHP支持某些运算符的重载,如
有没有办法使=运算符过载 所以我想要的是:
class b{
function overloadis(){
// do somethng
}
}
$a = new b();
$a = 'c';
在上面的例子中,当$a='c'时,我想要它;调用时,首先调用方法重载,然后在执行或中止操作(将“c”分配给$a)时终止该函数
有可能这样做吗
Thnx提前,
Bob否。PHP不支持运算符重载,只有少数例外(如@NikiC所述:“PHP支持某些运算符的重载,如[]、->和(字符串),还允许重载某些语言结构,如foreach”)。您可以模拟类属性的此类功能,通过使用和将各自的属性设置为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';
看一下扩展。不,那篇文章是关于数组的。我找不到一个正态变量的答案,而不是数组。这让我觉得是一种错误的懒惰类型(有一个PECL扩展,但它几乎不存在——它自2006年以来没有任何发展,也从未脱离beta测试版)——1表示“一点也不”。PHP支持重载一些运算符,如
[]
、->
和(string)
,还允许重载一些语言构造,如foreach
@NikiC:Whoa。对于[]
,我从来没有见过这样的例子,无论是在提到还是在野生环境中,我都没有看到过链接到一个例子的链接?我真的很好奇。ArrayAccess
界面允许您为数组set/get/push/isset/unset:[颤栗]指定自定义操作。PHP真的拥有一点东西和厨房水槽。尽管如Piskvor所述,它是古老的、不受欢迎的,不会太有用,2013年发布了两个Beta,请检查;)无法使其在Windows 7上与我的本地64位Wamp一起工作。可能需要适应64位代码。