加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

浅谈PHP中的面向工具OOP中的把戏要领

发布时间:2021-01-18 16:38:17 所属栏目:编程 来源:网络整理
导读:一、什么是把戏要领: PHP为我们提供了一系列用__开头的函数,这些函数无需本技艺动挪用,会在吻合的机缘自动挪用,这类函数称为把戏函数。譬喻: function __construct(){} 在new一个新工具时自动挪用此函数 二、PHP中都有那些把戏要领,以及它们的浸染: 1

一、什么是把戏要领:

PHP为我们提供了一系列用__开头的函数,这些函数无需本技艺动挪用,会在吻合的机缘自动挪用,这类函数称为把戏函数。 譬喻:

function __construct(){} 在new一个新工具时自动挪用此函数

二、PHP中都有那些把戏要领,以及它们的浸染:

1.__construct():结构函数,new工具时自动挪用

eg:

function __construct($name,$age){ $this->name=$name; $this->age=$age; }

}

在new新的Person工具时会自动挪用__construct()函数,将传入的参数别离赋给$name,$age。

2.__destruct():析构函数,当一个工具被烧毁前自动挪用

function __destruct(){ echo "这个工具被烧毁了";

}
}

同上所述,工具被烧毁时执行此把戏要领

3.__get():会见类中私有属性时自动挪用,转达读取属性名,返回$this->属性名

function __get($name){ return $this->$name; }

}

如上代码,$name被设为私有属性后不能直接通过$this->name;的方法读取,因此必要配置__get()把戏要领来读取。

4.__set():给类的私有属性赋值时自动挪用,转达需配置的属性名,属性值

function __set($key,$value){ $this->$key=$value; }

}

同__get()要领,私有属性不能通过$this->name="aaa";的方法直接配置,必要配置__set()要领,传入的参数别离是属性名和属性值。

5.__isset():行使isset检测工具私有属性时挪用,转达检测的属性名,返回isset($this->属性名)

function __isset($name){ return isset($this->$name);

}
}

行使isset检测工具私有属性时挪用,其他同上。

6.__unset():行使unset()函数删除工具私有属性时挪用,转达删除的属性名,要领中执行unset($this->属性名)

function __unset($name){ unset($this->$name); }

}

同上,在用unset()函数删除私有属性时挪用。

7.__toString():行使echo打印工具时挪用,返回打印工具时想要表现的内容,返回必需是字符串

function __toString(){ $str = <<<str 您要打印的内容是:<br> $name=>{$this->name};<br> $age=>{$this->age};<br>

str;
return $str;
}
}

行使echo打印工具时挪用,返回打印工具时想要表现的内容。

8.__call():挪用一个类中未界说的或未果真的要领时自动挪用,转达被挪用的函数名及参数列表

function __call($funcName,$funcParams){ echo "您挪用的函数{$funcName},参数列表"; print_r($funcParams); echo "不存在/未果真"; }

}
$zhangsan=new Person();
$zhangsan->say(1,2,3);

如代码所示,挪用不存在的say(1,3);时,会打印

您挪用的函数way,参数列表Array ( [0] => 123 ) 不存在

9.__clone():当行使clone要害字,克隆一个工具时自动挪用,浸染是为新克隆的工具初始化赋值

function __clone(){ $this->name="lisi"; }

}
$zhangsan=new Person("zhangsan",24);
$lisi=clone $zhangsan;
echo $lisi->name;

打印出的功效是"lisi",而不是"zhangsan"。

10.__sleep():工具序列化时自动挪用,返回一个数组,数组中的值就是可以序列化的属性

function __sleep(){
return array("name","age");
}
}

如上述代码,在用serialize()序列化工具时只有"name","age"属性会被序列化。

11.__wakeup():工具反序列化时自动挪用,为反序列化新发生的工具举办初始化赋值

function __wakeup(){
$this -> name = "lisi";
}
}

将工具序列化后再反序列化,同时给工具的name属性赋初值为"lisi"。

12.__autolode():必要在类外部声明函数,当实例化一个未声明的类时自动挪用,转达实例化的类名,可以行使类名自动加载对应的类文件。

$zhangsan=new Person();
$zhangsan->say();

如上述代码,Person类不存在时挪用__autolode()要领,载入写在文件外的类,"class/".strtolower($className).".class.php";就是类文件的相对路径,$className就是

不在本文件中的类的类名,因此在建设外部类文件时定名方法必需是小写的类名.class.php。__autolode()要领也是惟逐一个不消写在类中的把戏要领。

以上就是PHP中的把戏要领,公道操作这些要领可以轻松实现工具的各类操纵。但愿对各人的进修有所辅佐,也但愿各人多多支持编程之家。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读