PHP: 分享5个最近常用的魔术方法
2016-04-11 00:00
591 查看
摘要: 1.__construct
2.__call()
3.__get()
4.__set()
5.__autoload()
1.__construct()
如英文意思,就是构造函数。这个跟普通的构造函数的区别在于,不用每次都定义一个与类名同名的函数作为构造函数。
2.__call($funcName, $params)
是在实例调用类中未定义的函数时触发的函数
3.__get($name)
用来调用类中的非公有属性:
4.__set($name, $value)
和__get方法相对应,用来给非公有属性的赋值
5.__autoload()
这个是用来引入类文件的,一般我们是用include、include_once、require、require_once来引入文件的
但是如果我们要引入多个文件,就要写当好的引入语句,这样既不方便又不美观,__autoload可以解决这个问题
,他最大的好处是他的懒惰属性,实例化对象的时候才会引入对应的类文件。
2.__call()
3.__get()
4.__set()
5.__autoload()
1.__construct()
如英文意思,就是构造函数。这个跟普通的构造函数的区别在于,不用每次都定义一个与类名同名的函数作为构造函数。
[code=plain]class Model{ private $param =null; public function __construct($param){ //构造函数 $this->param =$param; } }
2.__call($funcName, $params)
是在实例调用类中未定义的函数时触发的函数
[code=plain]class Model{ //$funcName: 未定义函数名 //$params(数组): 未定义函数的参数 __call($funcName, $params){ //我这里没有用到$params return "the function: $funcName is not exist!" } } $model =new Model(); $model->func(); //函数func不存在,就会触发__call
3.__get($name)
用来调用类中的非公有属性:
[code=plain]class Model{ private host ="http://localhost"; public function __get($name){ return $this->$name; } } $model =new Model(); echo $model->host; //访问私有属性
4.__set($name, $value)
和__get方法相对应,用来给非公有属性的赋值
[code=plain]class Model{ private host =null; public function __set($name, $value){ $this->$name =$value; } } $model =new Model(); $model->host ="http://localhost"; //给私有属性赋值
5.__autoload()
这个是用来引入类文件的,一般我们是用include、include_once、require、require_once来引入文件的
但是如果我们要引入多个文件,就要写当好的引入语句,这样既不方便又不美观,__autoload可以解决这个问题
,他最大的好处是他的懒惰属性,实例化对象的时候才会引入对应的类文件。
[code=plain]//比如我的Model类文件Model.class.php 在当前目录的上一层目录下的Model/Model.class.php(其实就是引入 //类文件的路径) function __autoload($className) { //$className就是类名 $filename = "../Model/". $className .".class.php"; //组合路径 require_once "$filename"; //引入类文件 } //只要一实例化对象就会触发这个函数 $model =new Model(); //这么一句话就触发了__autoload(其实原理想想也明白) //在继承中,__aotoload也是有效 function __autoload($className) { //$className就是类名 $filename = "../Model/". $className .".class.php"; //组合路径 require_once "$filename"; //引入类文件 } class Child extends Father{ } //在继承中,也会自动引入父类的类文件
相关文章推荐
- PHP文字套红处理
- 如何编写一个独立的PHP扩展
- 韩顺平php笔记1
- php+MySQL实现登录时去数据库校验用户输入的登录名和密码是否正确。。。(session的用法)
- php预定义变量$_SERVER
- gdutProblem E: 积木积水
- php 全局变量
- 接触php遇到的小问题
- phpMyAdmin-Error:The mbstring extension is missing. Please check your PHP configuration.
- php优势和技术应用
- PHP的特性包括 PHP:
- php中页面间传带+的数据出现空格问题
- Atitit.跨语言异常转换机制 java c# php到js的异常转换
- Atitit.跨语言异常转换机制 java c# php到js的异常转换
- Atitit.跨语言异常转换机制 java c# php到js的异常转换
- php mysql ajax 单表多字段多关键词查询
- 020.php
- 019.php函数变量
- yii 查询构建器
- 018.php函数