我们在PHP中经常用到魔术方法,像构造方法,析构方法等等魔术变量,下面总结一下一些常用的魔术变量:

__construct(),__destruct(),__clone(),__autoload(),__tostring(),__invoke(),__set(),__get(),__unset(),__isset(),__call(),__callstatic;

1,__constuct()构造函数

通常实例化完一个对象之后,都要对该对象的属性进行初始化!在实例化一个对象的时候,PHP系统会自动的调用一个名字叫作__construct()的方法,我们把这个方法叫作“构造方法”!

其中,构造方法可以没有参数!

class Stu {

public $stu_name;

public $stu_age;

//构造方法,实例化时自动调用

public function __construct($name,$age){

$this->stu_name = $name;

$this->stu_age = $age;

}

}

//实例化stu对象

$stu = new Stu('孙悟空','500');

2.__destruct()析构方法

与构造方法是一对,构造方法是在一个对象“出生”的时候由系统自动调用的,而析构方法是在一个对象“消失”的时候由系统自动调用的!

析构方法的名字叫__destruct();注意里面不能有任何的参数!

//析构方法

public function __destruct(){

}

?>

注意:析构方法是在对象销毁之前调用的!

作用:

析构方法的作用一般是用来释放该对象所占用的额外的资源,而不是销毁该对象本身!

3,__clone()克隆

触发时机:是在克隆一个对象的时候,对新对象进行初始化的工作

//克隆方法在克隆对象的时候对新对象的初始化工作

public function __clone(){

$this->is_clone=true;

}

思考:

克隆出来的对象还是不是Student类中的一个实例呢?

我们可以利用instanceof运算符来进行判断!

instanceof就是用来判断某个对象是否是某个类的一个实例!

需要两个操作数,前面是一个对象变量,后面是一个类名!返回一个布尔值!

var_dump($stu instanceof Stu);     //返回bool(true)

4.__autoload()自动加载类

当调用不存在的类的时候自动调用!

/**

* 自动加载类

* 需要什么类__autoload会自动调用需要的文件

*

*/

public function __autoload($class_name)

{

require_once "../Model/{$class_name}.class.php";

}

?>

5.__tostring()

当将对象当成字符串使用的时候自动调用

6.__invoke()

当将对象当成函数使用的时候自动调用

7,__set()

当对无法访问的属性赋值时自动调用(比如:类外调用私有属性)

8.__get()

当对获取无法访问的属性值的时候自动调用

9.__unset()

当销毁无法访问的属性的时候自动调用

10.__isset()

当判断无法访问的属性是否存在的时候自动调用

11.__call()

当调用无法访问的普通方法时自动触发

class Stu{

public function __call(){

echo "error";

}

}

$stu = new Stu();

//此时Stu类里没有show()方法,会触发__call()函数

$stu->show();

12.__callststic()

当无法通过静态方法访问时自动触发

class Stu{

public static function __callstatic(){

echo "error";

}

}

$stu = new Stu();

//此时Stu类里没有show()方法,会触发__call()函数

$stu::show();

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

魔术方法php,PHP中常用的魔术方法相关推荐

  1. 光滑噪声数据常用的方法_数据挖掘中常用的数据清洗方法

    是新朋友吗?记得先点蓝字关注我哦- 数据挖掘中 常用的数据清洗方法 在数据挖掘过程中,数据清洗主要根据探索性分析后得到的一些结论入手,然后主要对四类异常数据进行处理,分别是缺失值(missing va ...

  2. php类退出魔术方法,php类中常用的魔术方法

    1.__construct() //构造函数, 2.__destruct()//析构函数, 3.__call() .__callStatic() //调用一个不可访问的方法.调用不可访问的静态方法时被 ...

  3. 光滑噪声数据常用的方法_数据挖掘中常用的数据清洗方法有哪些?

    数据清洗是将重复.多余的数据筛选清除,将缺失的数据补充完整,将错误的数据纠正或者删除,最后整理成为我们可以进一步加工.使用的数据. 所谓的数据清洗,也就是ETL处理,包含抽取Extract.转换Tra ...

  4. 统计计量 | 统计学中常用的数据分析方法汇总

    来源:数据Seminar本文约10500字,建议阅读15+分钟 统计学中常用的数据分析方法汇总. Part1描述统计 描述统计是通过图表或数学方法,对数据资料进行整理.分析,并对数据的分布状态.数字特 ...

  5. 5种JavaScript中常用的排序方法

    5种JavaScript中常用的排序方法 01.冒泡排序 通过相邻数据元素的交换,逐步将待排序序列变为有序序列,如果前面的数据大于后面的数据,就将两值进行交换,将数据进行从小到大的排序,这样对数组的第 ...

  6. 深度学习中常用的误差方法

    深度学习中常用的误差方法有: 标准差(Standard Deviation): 标准差也叫均方差,是方差的算术平方根,反应数据的离散程度 ,标准差越小,数据偏离平均值越小,反之亦然 . 公式为: py ...

  7. VB的一些项目中常用的通用方法-一般用于验证类

    1.VB的一些项目中常用的通用方法: ' 设置校验键盘输入值,数字 Public Function kyd(key As Integer) As Integer '20060728 Dim mycha ...

  8. lammps和atomsk中常用的建模方法

    文章目录 1.Atomsk生成刃型位错 2.Atomsk生成任意角度晶界 3.Atomsk生成孪晶 4.Atomsk生成非晶 5.合金多晶结构建模 6.Atomsk建立管道类模型 7.Atomsk建立 ...

  9. MPI中常用的通信方法

    MPI中常用的通信方法 问题描述 梯形法求解积分的串行程序 使用MPI并行化 使用树形结构优化通信 使用MPI_Reduce优化通信 使用MPI_Bcast优化通信 使用派生数据类型优化通信 使用结构 ...

最新文章

  1. 【总结】Kylin LDAP配置
  2. 一文掌握RNA seq,RNA seq课程大汇总
  3. Quality Center Issue with CAPICOM.DLL not prop...
  4. Mosquito的优化——epoll优化(七)
  5. JSON和JSONP (含jQuery实例)(share)
  6. 美股周一暴跌触发熔断:苹果、特斯拉股价大跌
  7. 分析 js构造函数:对象方法 、类方法 、原型方法
  8. 使用MUI框架实现JQ购物车增减
  9. 19. 镜像二叉树(C++版本)
  10. 简单理解Zookeeper的Leader选举
  11. 头文件循环包含,导致找不到定义的类
  12. html5 查询展示页面,基于Html5的可视化展示页面自动发布方法及系统与流程
  13. python编写计算器实例,Python只用40行代码编写的计算器实例
  14. 一种基于LCD1602和AT24C02的单片机多功能电子密码锁设计(附论文+Proteus仿真+C程序等)
  15. pyqt html编辑器,PyQt笔记——代码编辑器Scintilla的使用方法
  16. python学习笔记_week19
  17. 【风口浪尖】徽剑万言书直指蛮子薛身份 “发家史”
  18. 程序员晒工资,工作 3 年被应届生倒挂!网友:工作 8 年被你倒挂!
  19. 2012最新网络电台mms地址
  20. oracle 通过身份证号 查询年龄大于60岁的人

热门文章

  1. macOS 如何正确安装 Xcode 合适版本
  2. 八款常用的 Python GUI 开发框架推荐
  3. 三维重建学习(1):基础知识:旋转矩阵与旋转向量
  4. VS2010解决方案位置不对和改变程序字体的方案
  5. dpkg: 处理软件包 xxx (--configure)时出错解决方法
  6. codeblock 显示 no such file(头文件)
  7. polymer 绑定html元素,使用在Polymer元素内的light dom中定义的模板
  8. oracle mysql 效率_关于oracle 数据库效率的优化
  9. Weka学习四(属性选择)
  10. 收了100元辛苦费,写了一个最简单的C#ASP.NET的3层架构例子代码,源码是通过代码生成器生成的【写程序的效率神奇的高】...