Php魔术函数学习与应用
<?php
/**
* php中的魔术方法
* @author dxk
*
*/
class Henu {
public $name = "zxh<br />";
/**
* 构造方法
* 当实例化一个对象的时候,这个对象的这个方法首先被调用。
*/
function __construct() {
echo "构造方法<br />";
}
/**
* php5对象模型和类名相同的函数也是类的构造函数,
* 那么如果我们同时定义和类名相同的函数和__construct()方法的话,
* php5会默认调用__construct()函数,
* 所以__construct()作为类的默认的构造函数
*/
function Henu() {
echo "Henu方法<br />";
}
/**
* 析构方法
* 当删除一个对象或对象操作终止的时候调用。
* 我们可以在对象操作结束的时候进行释放资源之类的操作
*/
function __destruct() {
echo "析构方法<br />";
}
/**
* 当试图读取一个并不存在的属性的时候被调用。
*
* @param string $val 调用的属性名
*/
function __get($val) {
echo $val . "属性不存在<br />";
}
/**
* 当试图向一个并不存在的属性写入值的时候被调用。
*
* @param string $key 调用的属性名
* @param string $value 要赋的值(数组类型)
*/
function __set($key, $value) {
echo "对属性{$key}赋值{$value}失败<br />";
}
/**
* 当试图调用一个并不存在的方法时被调用。
*
* @param string $method
* @param array $Args
*/
function __call($method, $Args) {
echo "{$method}方法不存在,你的参数<pre>" . print_r ( $Args, true ) . "</pre>";
}
/**
* 这个方法类似于java的toString方法,当我们直接打印对象的时候回调用这个函数
*/
function __toString() {
return "打印对象<br />";
}
/**
* 当对象被clone,被调用
*/
function __clone() {
echo "对象被复制<br />";
}
}
$t = new Henu ();
$t->username;
$t->user = "wuhui";
$t->wuhui ( "dxk", "zxh" );
echo $t;
//$t1 = clone $t;
$t1 = $t;
$t1->name = "傻妞<br />";
echo $t->name;
echo implode(" ", get_class_methods('Henu'));// 返回由类的方法名组成的数组

浙公网安备 33010602011771号