PHP中的魔术方法有很多,这些魔术方法可以让PHP脚本在某些特定的情况下自动调用。比如 __construct() 每次实例化一个类都会先调用该方法进行初始化。这里我们讲一下__get() 魔术方法的使用。读取不可访问属性的值时,__get() 会被调用。也就是,当想要获取一个类的私有属性,或者获取一个类并为定义的属性时。该魔术方法会被调用。

下面有段代码:

class Model
{

   //不存在的成员属性自动调用
  function __get($name) 
  {
         //自动加载数据库
        if(substr($name, 0,2) =='db'){
            $config = strtolower(substr($name, 2));
            if(empty($this->objDb)){
                $this->objDb = new LibDatabase($config);
            }else{
                $this->objDb->config($config);
            }
            return $this->objDb; 
        }

        // 自动加载redis
        if(substr($name, 0,5) =='redis'){
            $config = strtolower(substr($name, 5));
            if(empty($this->objRedis)){
                $this->objRedis = new LibRedis($config);
            }else{
                $this->objRedis->config($config);
            }
            return $this->objRedis;
        }

        //自动加载excel插件
        if(substr($name, 0,5) =='excel'){
            if(empty($this->objExcel)){
                $this->objExcel = new LibExcel();
            }
            return $this->objExcel;
        }
        throw new LinkException("变量{$name}不被支持,请预先Model中定义",EXCEPT_CORE);
    }
}

?>

更多相关文章

  1. PHP魔术方法之 __toString()
  2. 关于静态方法不能调用类中的非静态属性的理解
  3. 通过PHP设置html属性的最佳做法是什么?
  4. 如何使用基于条件的PHP来改变CSS属性?
  5. 关于如何更好的监听元素属性的变化(转)
  6. JavaScript 中 Object ,Prototype 相关的属性和方法
  7. Dojo:不能在AccordionContainer.js中读取未定义的属性“h”。
  8. ng- repeat显示的行等于no属性,甚至不显示html视图上的数据
  9. .addEventListener不是null [duplicate]的属性

随机推荐

  1. Android 15本经典教程和150多个实例源码
  2. android EditText提示居右无法显示的问题
  3. Android有效解决加载大图片时内存溢出的
  4. RelativeLayout里常用的位置属性
  5. ArcGIS for Android 离线数据编辑原理
  6. android 多媒体数据库详解
  7. android中自定义RadioButton
  8. 控件的间距为0
  9. Android中3种方法实现back键动作
  10. javafx for android or ios ?