PHP中常用的魔术方法


Posted in PHP onApril 28, 2017

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

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

1,__constuct()构造函数

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

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

<?php

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();注意里面不能有任何的参数!

<?php

//析构方法
public function __destruct(){

}
?>

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

作用:

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

3,__clone()克隆

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

//克隆方法在克隆对象的时候对新对象的初始化工作
 
public function __clone(){
 
 $this->is_clone=true;
} 

思考:

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

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

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

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

var_dump($stu instanceof Stu);  

//返回bool(true)

4.__autoload()自动加载类

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

<?php 

/**
* 自动加载类
* 需要什么类__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()

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

<?php 
class Stu{

 public function __call(){
echo "error";
 }
}
$stu = new Stu();
//此时Stu类里没有show()方法,会触发__call()函数
$stu->show();

12.__callststic()

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

<?php 
class Stu{

 public static function __callstatic(){
  echo "error";
 }
}
$stu = new Stu();
//此时Stu类里没有show()方法,会触发__call()函数
$stu::show();

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

PHP 相关文章推荐
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
Aug 06 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
Jan 26 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
PHP程序员的技术成长规划
Mar 25 PHP
利用PHP将图片转换成base64编码的实现方法
Sep 13 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
Jun 19 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 #PHP
PHP实现文件下载【实例分享】
Apr 28 #PHP
PHP实现批量删除(封装)
Apr 28 #PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 #PHP
PHP后台微信支付和支付宝支付开发
Apr 28 #PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 #PHP
ThinkPHP实现简单登陆功能
Apr 28 #PHP
You might like
NO3第三帝国留言簿制作过程
2006/10/09 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
2013/04/02 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
python处理文本文件并生成指定格式的文件
2014/07/31 Python
python编码总结(编码类型、格式、转码)
2016/07/01 Python
Python打包可执行文件的方法详解
2016/09/19 Python
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
python实现数据写入excel表格
2018/03/25 Python
python aiohttp的使用详解
2019/06/20 Python
python issubclass 和 isinstance函数
2019/07/25 Python
python游戏开发的五个案例分享
2020/03/09 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
阅兵口号
2014/06/19 职场文书
工地门卫岗位职责范本
2014/07/01 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
一篇带你入门Java垃圾回收器
2021/06/16 Java/Android
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android