php 魔术方法详解

(编辑:jimmy 日期: 2024/9/29 浏览:2)

从PHP 5以后的版本,PHP中的类就可以使用魔术方法了。其规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。PHP 将所有以 _ _(两个下划线)开头的类方法保留为魔术方法。

__toString() 和__invoke()

public string __toString ( void ):当对象被当做string使用时,这个方法会被自动调用。此方法必须返回一个字符串

复制代码 代码如下:
<"hello world!";
        }
    }
    $obj = new Magic();
    echo $obj;//hello world!
"codetitle">复制代码 代码如下:
<"hello world!";
        }
        public function __invoke($x){
            echo "__invoke called with param ".$x."\n";
        }
    }
    $obj = new Magic();
    $obj(10);//__invoke called with param 10
"codetitle">复制代码 代码如下:
<"Calling " . $name ." with param: ".implode(", ",$arguments)."\n";
        }
    }
$obj = new Magic();
$obj->run("para1","para2");//obj去调用run方法,输出:Calling run with param: para1, para2  
"codetitle">复制代码 代码如下:
<"Getting the property " . $name;
    }
}
$obj = new Magic();
echo $obj->className."\n";//Getting the property className
"codetitle">复制代码 代码如下:
<"Setting the property " . $name ."to value ". $value ."\n";
    }
}
$obj = new Magic();
$obj->className = 'MagicClass';//Setting the property classNameto value MagicClass
"codetitle">复制代码 代码如下:
<"__isset invoked\n";
        return true;
    }
}
$obj = new Magic();
echo '$obj->className is set"\n";//__isset invoked     $obj->className is set?1
?>

以上便是8个php面向对象的魔术方法的介绍与示例,希望对大家能有所帮助

一句话新闻
Windows上运行安卓你用过了吗
在去年的5月23日,借助Intel Bridge Technology以及Intel Celadon两项技术的驱动,Intel为PC用户带来了Android On Windows(AOW)平台,并携手国内软件公司腾讯共同推出了腾讯应用宝电脑版,将Windows与安卓两大生态进行了融合,PC的使用体验随即被带入到了一个全新的阶段。