php strlen函数(PHP之十六个魔术方法详解 (一))PHP函数 / PHP函数与魔术方法...

wufei123 发布于 2024-05-13 阅读(40)

前言PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用 魔术方法包括:__construct(),类的构造函数__destruct(),类的析构函数。

__call(),在对象中调用一个不可访问方法时调用__callStatic(),用静态方式中调用一个不可访问方法时调用__get(),获得一个类的成员变量时调用__set(),设置一个类的成员变量时调用

__isset(),当对不可访问属性调用isset()或empty()时调用__unset(),当对不可访问属性调用unset()时被调用__sleep(),执行serialize()时,先会调用这个函数。

__wakeup(),执行unserialize()时,先会调用这个函数__toString(),类被当成字符串时的回应方法__invoke(),调用函数的方式调用一个对象时的回应方法__set_state(),调用var_export()导出类时,此静态方法会被调用。

__clone(),当对象复制完成时调用__autoload(),尝试加载未定义的类__debugInfo(),打印所需调试信息

范例下面让我们以实例的形式向大家讲解下这几个魔术方法时如何使用的一、 __construct(),类的构造函数php中构造方法是对象创建完成后第一个被对象自动调用的方法在每个类中都有一个构造方法,如果没有显示地声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法。

1、 构造方法的作用通常构造方法被用来执行一些有用的初始化任务,如对成员属性在创建对象时赋予初始值2、 构造方法的在类中的声明格式function __constrct([参数列表]){  方法体 //通常用来对成员属性进行初始化赋值 }。

3、 在类中声明构造方法需要注意的事项1、在同一个类中只能声明一个构造方法,原因是,PHP不支持构造函数重载 2、构造方法名称是以两个下画线开始的__construct()下面是它的例子:name = $name;     $this->sex = $sex;    $this->age = $age;  }          /**   * say 方法   */  public function say()  {    echo "我叫:" . $this->name . ",性别:" . $this->sex . ",年龄:" . $this->age;  }                          }。

创建对象$Person1且不带任参数$Person1 = new Person(); echo $Person1->say(); //输出:我叫:,性别:男,年龄:27创建对象$Person2且带参数“小明”

$Person2 = new Person("小明"); echo $Person2->say(); //输出:我叫:张三,性别:男,年龄:27创建对象$Person3且带三个参数$Person3 = new Person("李四","男",25); echo $Person3->say(); //输出:我叫:李四,性别:男,年龄:25

二、__destruct(),类的析构函数通过上面的讲解,现在我们已经知道了什么叫构造方法那么与构造方法对应的就是析构方法析构方法允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件、释放结果集等。

析构方法是PHP5才引进的新内容析造方法的声明格式与构造方法 __construct() 比较类似,也是以两个下划线开始的方法 __destruct() ,这种析构方法名称也是固定的1、 析构方法的声明格式。

function __destruct() { //方法体 }注意:析构函数不能带有任何参数2、 析构方法的作用一般来说,析构方法在PHP中并不是很常用,它属类中可选择的一部分,通常用来完成一些在对象销毁前的清理任务。

举例演示,如下:name = $name;        $this->sex  = $sex;        $this->age  = $age;    }        /**     * say 说话方法     */    public function say()    {          echo "我叫:".$this->name.",性别:".$this->sex.",年龄:".$this->age;    }            /**     * 声明一个析构方法     */    public function __destruct()    {            echo "我觉得我还可以再抢救一下,我的名字叫".$this->name;    } } $Person = new Person("小明"); unset($Person); //销毁上面创建的对象$Person

上面的程序运行时输出:我觉得我还可以再抢救一下,我的名字叫小明三、 __call(),在对象中调用一个不可访问方法时调用该方法有两个参数,第一个参数 $function_name 会自动接收不存在的方法名,第二个 。

$arguments 则以数组的方式接收不存在方法的多个参数1、 __call() 方法的格式:function __call(string $function_name, array $arguments) {    // 方法体 }。

2、 __call() 方法的作用:为了避免当调用的方法不存在时产生错误,而意外的导致程序中止,可以使用 __call() 方法来避免 该方法在调用的方法不存在时会自动调用,程序仍会继续执行下去请参考如下代码:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻89856