文档章节

PHP: 分享5个最近常用的魔术方法

issac宝华
 issac宝华
发布于 2016/04/11 23:43
字数 509
阅读 127
收藏 5

1.__construct()

如英文意思,就是构造函数。这个跟普通的构造函数的区别在于,不用每次都定义一个与类名同名的函数作为构造函数。

class Model{
    private $param =null;
    public function __construct($param){    //构造函数
        $this->param =$param;
    }
}

2.__call($funcName, $params)

是在实例调用类中未定义的函数时触发的函数

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)

用来调用类中的非公有属性:

class Model{
    private host ="http://localhost";
    public function __get($name){
        return $this->$name;
    }
}

$model =new Model();
echo $model->host;    //访问私有属性

4.__set($name, $value)

和__get方法相对应,用来给非公有属性的赋值

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可以解决这个问题

,他最大的好处是他的懒惰属性,实例化对象的时候才会引入对应的类文件。

//比如我的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{
    
}

//在继承中,也会自动引入父类的类文件

 

© 著作权归作者所有

issac宝华
粉丝 9
博文 140
码字总数 34397
作品 0
珠海
私信 提问
PHP_魔术函数、魔术常量、预定义常量(常用)

PHP魔术函数、魔术常量、预定义常量 一、魔术函数(13个) 1、construct() 实例化对象时被调用, 当construct和以类名为函数名的函数同时存在时,construct将被调用,另一个不被调用。 2、d...

喵王不瞌睡
2014/11/27
59
0
PHP 开发人员常玩的五个魔术,还不会就太丢面儿了

     魔术方法: 是指某些情况下,会自动调用的方法,称为魔术方法   我们先认识下,下面的这些常用的魔术方法:Tostring () Call () autoLoad () isset () unset ()   ...

学编程C语言以及
2017/09/07
0
0
PHP魔术方法学习笔记

YII2框架controller的继承关系如下: yiibasecomponents yiibasecontroller yiiwebcontroller 而components源码里面的魔术方法让人印象深刻: 魔术方法: 是指某些情况下,会自动调用的方法,称...

风清扬-深圳
2015/12/18
54
0
《PHP基础知识总结》系列-新鸟老鸟通吃

《PHP基础知识总结》文件夹收藏文章列表 总结PHP基础知识,对初学者还是高手都值得参考巩固。 1PHP检查库或函数是否可用的方法 2关于PHP5 Session生命周期介绍 3PHP页面和Mysql数据库的转UTF...

开元中国2015
2015/05/06
92
0
PHP5中魔术方法

魔术函数 1。construct() 实例化对象时被调用, 当construct和以类名为函数名的函数同时存在时,construct将被调用,另一个不被调用。 2。destruct() 当删除一个对象或对象操作终止时被调用。...

zchd
2014/05/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何有效地计算JavaScript中对象的键/属性数量?

计算对象的键/属性数的最快方法是什么? 是否可以在不迭代对象的情况下执行此操作? 即不做 var count = 0;for (k in myobj) if (myobj.hasOwnProperty(k)) count++; (Firefox确实提供了一...

技术盛宴
20分钟前
2
0
百度网址安全中心拦截解除的办法分享

临近2019年底,客户的公司网站被百度网址安全中心拦截了,公司网站彻底打不开了,影响范围很大,于是通过朋友介绍找到我们SINE安全公司寻求帮忙解封,关于如何解除百度的安全拦截提示,下面就...

网站安全
32分钟前
3
0
Tomcat8源码分析-启动流程-start方法

上一篇:Tomcat8源码分析-启动流程-load方法 前面讲了启动流程中的Catalina.load,进一步调用绝大部分组建的init操作,主要完成对server.xml解析,并根据解析的结果结合设置的Rule(规则)构造...

特拉仔
40分钟前
6
0
Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍

Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍 轻拍标签栏中的About标签,进入关于页面,如图1.8和图1.9所示。它是对应用程序介绍的页面。 该页面源自Views文件夹中的AboutPage.x...

大学霸
46分钟前
3
0
一步一步理解Impala query profile(一)

很多Impala用户不知道如何阅读Impala query profile来了解一个查询背后正在执行的操作,从而在此基础上对查询进行调优以充分发挥查询的性能。因此我想写一篇简单的文章来分享我的经验,并希望...

九州暮云
48分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部