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的知识
Nov 17 PHP
php中用于检测一个地理IP地址是否可用的代码
Feb 19 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
Jul 20 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
php常用文件操作函数汇总
Nov 22 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
php远程下载类分享
Apr 13 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
Jun 13 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
Dec 05 PHP
php读取和保存base64编码的图片内容
Apr 22 PHP
PHP命名空间namespace及use的简单用法分析
Aug 03 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 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
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
JAVA程序员面试题
2012/10/03 面试题
七年级音乐教学反思
2014/01/26 职场文书
门诊手术室工作制度
2014/01/30 职场文书
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
慰问信格式规范
2015/03/23 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
居委会工作总结2015
2015/05/18 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书