<?php
//获取当前类名
echo __CLASS__ ;
//当前函数名(confirm
echo __FUNCTION__ ;
//当前方法名 (bankcard::confirm)
echo __METHOD__ ;
//在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性,__get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,
//返回获取的属性值
class People{
private $name; //人的名子
private $sex; //人的性别
//__get()方法用来获取私有属性
function __get($propetyName){
echo 'get property' ;
}
/**__set()方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。
这个方法同样不用我们手工去调用,它也可以做成私有的,是在直接设置私有属性值的时候自动调用的,同样属性私有的已经被封装上 */
function __set($propetyName,$value){
echo 'set propery' ;
$this->$propetyName = $value;
}
//__isset()方法: isset()是测定变量是否设定用的函数,传入一个变量作为参数,如果传入的变量存在则传回true,否则传回false。
function __isset($propertyName){
return isset($this->$nm); ;
}
// 当在类外部使用unset()函数来删除私有成员时自动调用的<br>";
private function __unset($propertyName){
echo"当在类外部使用unset()函数来删除私有成员时自动调用的<br>";
unset($this->$propertyName);
}
//__call() 当试图调用一个对象并不存在的方法时,调用该方法。
public function __call($method,$arg){
echo '你想调用我不存在的方法',$method,'方法<br/>';
echo '还传了一个参数<br/>';
echo print_r($arg),'<br/>';
}
// 只有调用静态方法的时候,静态方法不存在才会调用这个方法
public static function __callStatic($method,$arg){
echo '你想调用我不存在的',$method,'静态方法<br/>';
echo '还传了一个参数<br/>';
echo print_r($arg),'<br/>';
}
// __clone() 当对象被克隆时,被调用
public function __clone() {
echo "我被复制了!";
}
}
}
$p1= new People();
//直接为私有属性赋值的操作,会自动调用__set()方法进行赋值
$p1->name="wlt";
$p1->sex="man";
//直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值
echo "name ".$p1->name."<br>";
echo "sex : ".$p1->sex."<br>";
// 下面会调用 __isset
var_dump(isset($p1->name));
// 下面会调用__unset
var_dump(unset($p1->name));
// 下面会调用__call
$p1->test('1',2),;
// 下面会调用__callStatic()
$p1::test('1',2),;
// 获取类中的所有方法列表 get_class_methods
var_dump(get_class_methods('People')) ;
php中的魔术方法应用实例
最新推荐文章于 2021-03-17 03:28:03 发布