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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
完美解决PHP中文乱码
Nov 26 PHP
php设计模式 Singleton(单例模式)
Jun 26 PHP
探讨PHP中this,self,parent的区别详解
Jun 08 PHP
php检测网页是否被百度收录的函数代码
Oct 09 PHP
Drupal7中常用的数据库操作实例
Mar 02 PHP
php文件上传简单实现方法
Jan 24 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
May 23 PHP
php自定义扩展名获取函数示例
Dec 12 PHP
Yii框架分页实现方法详解
May 20 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 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
php 保留字列表
2012/10/04 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
python字符串编码识别模块chardet简单应用
2015/06/15 Python
Python的time模块中的常用方法整理
2015/06/18 Python
python实现计算倒数的方法
2015/07/11 Python
Python基于select实现的socket服务器
2016/04/13 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
python实现图片转字符小工具
2019/04/30 Python
如何在Django项目中引入静态文件
2019/07/26 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
Python基于locals返回作用域字典
2020/10/17 Python
Hotels.com印度:酒店预订
2019/05/11 全球购物
物流管理专业应届生求职信
2013/11/21 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
对孩子的寄语
2014/04/09 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
基层党员公开承诺书
2014/05/29 职场文书
摘录式读书笔记
2015/07/01 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server