PHP魔术方法的使用

1、__get()   和  __set();

2、__call()   和  __callStatic();  

3、__toString();

4、__invoke();

1、__get()   和  __set();

一个php类文件为 object.php:

Class Object {

  private $array = array();

  function __set($key , $value){

    var_dump(__METHOOD__);

    $this->array[$key] = $value;

  }

  function __get($key){

    var_dump(__METHOOD__);

    return $this->array[$key];

  }

  function __call($func,$param){

    var_dump($func,$param);

    return 'magic function';

  }

  static function __callStatic(){

    var_dump($func,$param);

    return 'magic static function';

  }

}

当我们给一个没有的属性赋值时会自动调用__set();

输出一个没有的属性的时候会自动调用__get();

测试代码如下:

$obj = new Object();

$obj->title = 'zhangshan';

echo $obj->title;

会得到以下结果:

2、__call()   和  __callStatic();  

当我们访问一个不存的方法时会自动调用__call();

echo $obj->test('Hello World',123);

会得到以下结果:

__callStatic()跟__call()大体相同只不过是针对static声明的方法

echo $obj::test('Hello World',123);

会得到以下结果:

最新文章

  1. php实现中文转数字,实现方式很智能很php
  2. 时间戳TimeStamp处理
  3. WLAN协议相关协议
  4. (转) Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么?
  5. SQL Server 2008 收缩日志 清空删除大日志文件 转载
  6. [C#高级编程]基础知识摘要一
  7. ubuntu中rar与unrar用法详解
  8. Codeforces Round #250 (Div. 2)——The Child and Set
  9. [React] Creating a Stateless Functional Component
  10. log4cxx在vs2013的静态编译
  11. ural 1192 Ball in a Dream
  12. hdu2844 & poj1742 Coin ---多重背包--两种方法
  13. Session是否为新建情况的判断
  14. 浏览器缓存相关HTTP头部字段
  15. mysql高级之编程优化
  16. KeyValuePair 和 Dictionary 的关系和区别
  17. DeprecationWarning: Calling an asynchronous function without callback is deprecated. - how to find where the “function:” is?
  18. configparser配置文件处理
  19. Webpack 2 视频教程 003 - Webpack 项目初始化
  20. MR目录结构

热门文章

  1. asp.net中的cookie
  2. Bootstrap中的Affix插件
  3. 批处理之FOR命令
  4. 【题解】[WC2006]水管局长
  5. 洛谷 P1607 [USACO09FEB]庙会班车Fair Shuttle 解题报告
  6. AOJ.559 丢失的数字
  7. bzoj2002: [Hnoi2010]Bounce 弹飞绵羊 分块
  8. MFC随机数
  9. Ubuntu下安装LNMP之独立添加php扩展模块
  10. How to turn off the binary log for mysqld_multi instances?