php魔法函数与魔法常量使用介绍


Posted in PHP onJuly 23, 2017

php 魔术函数

1。__construct()

实例化对象时被调用,
当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

2。__destruct()
当删除一个对象或对象操作终止时被调用。

3。__call()
对象调用某个方法,
若方法存在,则直接调用;
若不存在,则会去调用__call函数。

4。__get()
读取一个对象的属性时,
若属性存在,则直接返回属性值;
若不存在,则会调用__get函数。

5。__set()
设置一个对象的属性时,
若属性存在,则直接赋值;
若不存在,则会调用__set函数。

6。__toString()
打印一个对象的时被调用。如echo $obj;或print $obj;

7。__clone()
克隆对象时被调用。如:$t=new Test();$t1=clone $t;

8。__sleep()
serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

9。__wakeup()
unserialize时被调用,做些对象的初始化工作。

10。__isset()
检测一个对象的属性是否存在时被调用。如:isset($c->name)。

11。__unset()
unset一个对象的属性时被调用。如:unset($c->name)。

12。__set_state()
调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

13。__autoload()
实例化一个对象时,如果对应的类不存在,则该方法被调用。

php 魔术常量

1。__LINE__
返回文件中的当前行号。

2。__FILE__
返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。

3。__FUNCTION__
返回函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

4。__CLASS__
返回类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

5。__METHOD__
返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

 (1)初识魔术方法
Php5.0发布以来为我们提供了很多面向对象的特性,尤其是为我们提供了好多易用的魔术方法,这些魔术方法可以让我们简化我们的编码,更好的设计我们的系统。今天我们就来认识下php5.0给我们提供的魔术方法。

php使用魔法函数和不使用魔法函数比较

/**
* use magic 0.31868386268616s
* not use magic 0.11876797676086s
*/
class Test {
  private $varstr = "123";

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

function microtime_float()
{
  list($usec, $sec) = explode(" ", microtime());
  return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();

$i = 0;
while ($i<100000) {
  $i++;
  $t = new Test();
  $t->varstr;
}

$time_end = microtime_float();
$time = $time_end - $time_start;

echo "Did nothing in $time seconds\n";

建议尽量少用PHP魔法函数

PHP 相关文章推荐
PHP similar_text 字符串的相似性比较函数
May 26 PHP
php与paypal整合方法
Nov 28 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
PHP简单预防sql注入的方法
Sep 27 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
在IIS下安装PHP扩展的方法(超简单)
Apr 10 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
php curl上传、下载、https登陆实现代码
Jul 23 #PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 #PHP
laravel自定义分页效果
Jul 23 #PHP
PHP批量删除jQuery操作
Jul 23 #PHP
PHP mysqli事务操作常用方法分析
Jul 22 #PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 #PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 #PHP
You might like
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
深入浅析php json 格式控制
2015/12/24 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
jQuery实现放大镜案例
2020/10/19 jQuery
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
Python删除windows垃圾文件的方法
2015/07/14 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
Chupi官网:在爱尔兰手工制作的订婚、结婚戒指和精美珠宝
2020/09/28 全球购物
UNIX文件系统常用命令
2012/05/25 面试题
大学生新闻专业个人自我评价
2013/11/12 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
就业协议书怎么填
2014/09/15 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
SQL Server实现分页方法介绍
2022/03/16 SQL Server