1、构造函数:__construct():

构造函数是类中的一个特殊函数,当我们使用new关键字实例化对象时,相当于调用了类的构造函数。

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

2、析构函数:__destruct():

①析构函数在对象被销毁释放之前自动调用;
②析构函数不能带有任何的参数;
③析构函数常用于对象使用完以后,释放资源,关闭资源等。

function __destruct(){
echo "over!";
}

3、 __set($key,$value):

给类私有属性赋值时自动调用,调用是给方法传递两个参数:需要设置的属性名、属性值

         function __set($key,$value){
if($key=='name'){
$this->$key=$value."(这是__set设置的文字!)";
return;
}
}

4、 __get($key):

给获取类私有属性时自动调用,调用是给方法传递一个参数:需要获取的属性名

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

5、 __isset($key):

外部使用isset()函数检测私有属性时,自动调用。
 >>>类外部使用isset();检测私有属性,默认检测不到(false)
 >>>所以,我们可以使用__isset()函数,在自动调用时,返回内部检测结果

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

当外部使用isset($对象名->私有属性);检测时,将自动调用上述__isset()返回的结果!

6、 __unset($key):

外部使用unset()函数删除私有属性时,自动调用;

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

当外部使用unset($对象名->私有属性);删除属性时,自动将属性名传给__unset(),并交由这个魔术方法处理

7、__clone:

① 当使用clone关键字,克隆对象时,自动调用clone函数
 ② __clone()函数类似于克隆是使用的构造函数,可以给新克隆对象赋初值
 ③ 克隆函数里面的$this指的是新克隆的对象

  class Person{
public $name;
public $age;
function __construct($name,$age){
$this->name=$name;
$this->age=$age;
}
function __clone(){$this->name="李5";
} }
$zhangsan=new Person("张三",14);
$lisi=clone $zhangsan;

8、__tostring()

当使用echo等输出语句,直接打印对象时,调用 echo $zhangsan;那么, 可以指定__tostring()方法的返回值,返回值需要是字符串。
 则使用echo函数打印时,将会打印出__tostring()函数返回的字符串

function __tostring(){
  return "hahaha";
}
echo $zhangsan;

9、__call()

调用类中未定义或未公开的方法时,会自动执行__call()方法,自动执行时,会给call方法传递两个参数:
① 调用的方法名
② (数组)调用的方法的参数列表

     function __call($funcName,$funcParams){
echo "{$funcName}<br>";
print_r($funcParams);
}

10、__autoload()

① 这是唯一一个不在类中使用的魔术方法
② 当实例化一个不存在的类时,自动调用这个魔术方法
③ 调用时,会自动给__autoload()传递一个参数:实例化的类名
所以,可以实现 使用这个方法,自动加载类文件的功能:

function __autoload($className){
  include strtolower($className).".class.php"
}
$zhangdan=new Person("战三");
//本文件没有Person类,会自动执行__autoload加载person.class.php文件

11、__sleep():

① 当执行对象串行化(将对象通过一系列操作,转化为字符串的过程,称为串行化)的时候,会自动执行__sleep()函数;
② __sleep()函数要求返回一个数组,数组中的值,就是可以串行化的属性, 不在数组中的属性,不能被串行化。

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

12、__wakeup()

① 当反串行化对象时,自动调用__wakeup()方法;
② 自动调用时,用于给反串行化产生的新对象的属性,进行重新赋值;

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

PHP魔术方法11种的更多相关文章

  1. Python继承、多继承、魔术方法

    继承和多继承的概念和使用 super的用法 __str__ __repr__ __call__ 多继承方法解析顺序和Mix-in开发模式 魔术方法原理和作用 继承 定义类的时候,在类名后面的括号里填继 ...

  2. SQLMAP注入教程-11种常见SQLMAP使用方法详解

    sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了.今天把我一直 ...

  3. 关于PHP的加载类操作以及其他两种魔术方法应用

    <?php 加载类//include("./Ren.class.php");//include "./Ren.class.php";include_onc ...

  4. python列表的11种方法

    python列表的11种方法2017年11月24日 03:26:43 Milton-Long 阅读数:254版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.n ...

  5. python 3.x 字典的11种方法

    python 3.x 字典的11种方法2017年11月25日 01:02:11 Milton-Long 阅读数:535 标签: python python字典方法 更多个人分类: python-学习之 ...

  6. [转]11种常见sqlmap使用方法详解

    sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了.今天把我一直 ...

  7. PHP中的11个魔术方法总结:__construct,、__destruct、__call等

    PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...

  8. 11种绕过CDN查找真实IP方法

    0x01 验证是否存在CDN 方法1: 很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有: http://ping.chin ...

  9. [信息收集]11种绕过CDN查找真实IP方法【转载】

    今天在看一些有关CDN的文章的时候,发现一篇写的蛮好的文章,故转载过来. 原文链接:https://www.cnblogs.com/qiudabai/p/9763739.html 0x01 验证是否存 ...

随机推荐

  1. BIMFACE 二次开发 SDK 之歌

    <BIMFACE SDK 之歌>讲述了作者与 BIMFACE 从相识.相知.相爱.相守的艳遇之爱唯美故事   我是一个小小的程序员 穿行在人来人往的IT行业之间 编程工作与建筑信息化相关 ...

  2. AT2402 [ARC072D] Dam

    首先我们可以将 \(t_i \times v_i\) 看作一个整体,不妨令 \(x_i = v_i, y_i = t_i \times v_i\) 这样两堆水混合后相当于将两个维度相加,方便了计算. ...

  3. URL跳转空白页参数传递封装

    这东西主要是为了vue和平时打开一个空白界面_blank时的参数传递,不涉及到浏览器存储(session,local等) 众所周知,请求传参无非就用的query和params,相对应就是get和pos ...

  4. 学习jsp篇:jsp简单实例之二登录

    编程环境:IDEA,Tomcat,JavaEE 一.实例二登录 1.在自己建的工程下的web目录下建一个文件夹为login,在login中编写登录代码(其实就是和实例一同一个项目) 2.先建登录页面j ...

  5. Haproxy配合Nginx搭建Web集群部署

    Haproxy配合Nginx搭建Web集群部署实验 1.Haproxy介绍 2.Haproxy搭建 Web 群集 1.Haproxy介绍: a)常见的Web集群调度器: 目前常见的Web集群调度器分为 ...

  6. pycharm工具使用

    转自: https://blog.csdn.net/u014044812/article/details/78727496   因公司的需求,需要做一个爬取最近上映的电影.列车号.航班号.机场.车站等 ...

  7. 《PHP程序员面试笔试宝典》——如何准备电话面试?

    本文摘自<PHP程序员面试笔试宝典>. PHP面试技巧分享,PHP面试题,PHP宝典尽在"琉忆编程库". 用人单位在收到简历之后,有时候由于求职者众多,而且很多求职者的 ...

  8. Solution -「CF 848D」Shake It!

    \(\mathcal{Description}\)   Link.   初始有一个有向图 \(G=(V,E)\),\(V=\{s,t\}\),\(E=\langle s,t\rangle\),一次操作 ...

  9. Solution -「LOCAL」逃生

    \(\mathcal{Description}\)   有 \(n\) 个人掉进了深度为 \(h\) 的坑里,第 \(i\) 个人的肩高为 \(a_i\),臂长为 \(b_i\).设当前坑里人的集合为 ...

  10. NSSCTF-easyupload2.0

    相对于easyupload3.0,这个easyupload2.0就简单的很多,也可以使用和3.0一样的做法,但是应该还是有别的做法,就比如可以使用phtml这个后缀绕过检测 使用BP抓包修改一下 放包 ...