Home > Backend Development > PHP Tutorial > PHP: 分享5个最近常用的魔术方法

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

WBOY
Release: 2016-06-23 13:10:42
Original
993 people have browsed it

1.__contruct()

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


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
Copy after login

3.__get($name)

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

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

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";
Copy after login

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";    //引入类文件}//只要一实例化对象就会触发这个函数
Copy after login


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template