php面向对象魔术方法

__construct($argv1,$argv2,…)

功能:类的构造方法,作用是初始化对象

参数:任意多个,任意类型

返回值:无

__destruct()

功能:类的析构方法,对象被销毁时被调用,作用是释放内存

参数:无

返回值:无

__get($name)

功能:当程序员试图调用一个未定义或者不可见的成员变量(属性)的时候就会调用该方法,这个时候程序试图调用的成员变量的返回值是该方法的返回值;

参数:$name为试图调用的成员变量的名称,这个参数的传递是PHP自动完成的;

返回值:类型(不确定)注意该方法可以设置成私有的(构造方法不要设置成私有的)。

__set($name,$value)

功能:当程序试图给一个未定义或者不可见的成员变量(属性)赋值的时候就会自动调用该方法;

参数:$name,$value分别表示试图赋值的成员变量名称和成员变量的值,这两个参数的传递是PHP自动完成的;

返回值:这个方法不会返回值 注意该方法可以设置成私有的(构造方法不要设置成私有的)。

__toString()

功能:当程序试图输出一个对象类型的变量的时候PHP会自动调用该方法;

参数:没有参数,如果有会提示出错;

返回值:字符型(该方法必须通过return返回一个字符串);

__clone()

功能:在用clone关键字克隆一个对象的时候PHP会自动调用这个方法,是为了给克隆出来的对象增添自己的属性和方法;

参数:不用传递参数;

返回值:不用返回值;

__call($name,$argument)

功能:当程序试图调用一个不存在的成员方法的时候会自动调用该方法;

参数:PHP将自动调用的不存在的方法名传递给$name,不存在的方法中的参数整合为一个数组传递给$argument;

返回值:不用返回值;

__autoload($classname)

功能:在指定的路径下自动查找并导入实例化需要使用的类

参数:$classname为类名

返回值:无

__isset()

功能:当用isset($name)检测一个私有的成员变量的时候就会自动调用的方法,这个时候isset($name)的返回值就为该方法的返回值经过转化的布尔值(<除“0”>非空的字符串,非零,true,有单元的数组将会转化为true;0,“0”,空字符,NULL,没有单元的数组将会转化为false);

参数:$name为试图检测的成员变量的名称,这个参数的传递是PHP自动完成的;

返回值:类型(不确定)注意该方法可以设置成私有的(构造方法不要设置成私有的),当用isset()函数检测的是公

有成员变量的时候可以直接检测,如果没有__isset()方法而直接检测私有成员会得到不准确的结果即isset()会始终返回false;

__unset()

功能:当用unset($name)撤销一个私有的成员变量的时候就会自动调用该方法;

参数:$name为试图撤销的成员变量的名称,这个参数的传递是PHP自动完成的;

返回值:不能返回值,强制返回值将会出错,当用__unset()方法而直接撤销私有成员不会成功;

时间: 2024-10-13 12:10:27

php面向对象魔术方法的相关文章

PHP面向对象 –魔术方法

__construct() 构造函数 __destruct() 析构函数 __sleep()   serialize序列化时调用 __wakeup() unserialize反序列化时调用 __clone()       检测克隆对象 属性重载的魔术方法: set,get,sset,unset __set()          当为不可访问的属性赋值时,会被自动调用 会得到两个参数,当前操作的属性名和属性值! 典型的,__set作用,用于严格控制对象结构,和批处理可以被修改的属性! __get(

PHP面向对象魔术方法之__get 和 __set函数

l 基本的介绍 (1) 当我们去使用不可以访问的属性时,系统就会调用__get方法. (2) 不可以访问的属性指的是(1 . 该属性不存在 2. 直接访问了protected或者private属性) (3) 当程序员去给不可以访问的属性直接赋值,系统就会调用__set方法 l 举例说明 需求是: 如果对象有一个成员变量是private.protectd的,我希望在在类的外部通过 : $对象名->变量名的方式来赋值和取值,怎么办? 代码如下 <?php header('content-type:

PHP面向对象魔术方法基本了解

简单介绍 (1) 魔术方法都是系统提供,程序员使用即可. (2) 所有的魔术方法,前面都是以  __ 开头的 _是两个下划线. (3) 我们在自定义函数时,就不要使用 __开头了. (4) 魔术方法是在满足某个条件(一会一个一个的说明)时,有系统自动的调用. 魔术方法一览 原文地址:https://www.cnblogs.com/lsqbk/p/10386437.html

PHP面向对象魔术方法之__call函数

l 基本介绍: (1) 当我们调了一个不可以访问的成员方法时,__call魔术方法就会被调用. (2) 不可以访问的成员方法的是指(1. 该成员方法不存在, 2. 成员方法是protected或者 private) l 需求 我们就是希望,在类的外部直接调用不可访问的成员方法(private , protected). l 案例说明 <?php header('content-type:text/html;charset=utf-8'); //__call魔术方法 class Monk{ pub

python面向对象魔术方法补充

一.描述符 在 面向对象 编程中 定义一个(没有定义方法)类:class person , 在这个类里面,有name,age, heigth, weight,等等属性, 这个类就可以看作一个对 person 的描述符,而具体的实例则是具体的“被描述物”. 而在python中,描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议. __get__():调用一个属性时,触发 __set__():为一个属性赋

[麦先生]PHP面向对象中常见的魔术方法以及关键字

麦先生引言:在学习php面向对象的编程思想中,我们会遇到很多的能够自动调用的魔术方法,每个魔术方法都有其特定的触发场景,但其根本目的是在于编写和实际使用过程中阻止程序报错而生; 常见的魔术方法有:music=> gusic(根据首字母拼音大写由gusic联想到music)    以及构造,析构方法,以及特殊的关键字fsci -- cats 和 ai 魔术方法                触发场景 <!--gusic---------------------------------------

对php面向对象中魔术方法的认识

<?php//header(charset="utf8");    //echo 'hey 这里是描述我对php 面向对象中各种魔术方法的认识.';/* *魔术方法是在一些特定情况下会自动调用的一些php系统自定义函数 *这些函数都很有个性,他们统一以__两个 _ (下划线)开头. * 下面对于php 中这些常用的魔术方法一些个人认识. **/class demo {    public $name;    public $age; //当实例化这个类,首先会自动调用的方法 __

前端学PHP之面向对象系列第二篇——魔术方法

显示目录 目录 [1]构造方法 [2]析构方法 [3]不可访问属性[4]对象复制[5]字符串[6]对象不存在[7]自动加载类[8]串行化[9]函数调用 前面的话 php在面向对象部分有很多相关的魔术方法,这些方法为面向对象实现提供了便利,本文将详细介绍魔术方法 构造方法 大多数类都有一种称为构造函数的特殊方法.当创建一个对象时,它将自动调用构造函数,通常用它执行一些有用的初始化任务 构造函数的声明与其它操作的声明一样,只是其名称必须是两个下划线__construct( ).这是PHP5中的变化:

php面向对象类中常用的魔术方法

php面向对象类中常用的魔术方法 1.__construct():构造方法,当类被实例化new $class时被自动调用的方法,在类的继承中可以继承与覆盖该方法,例: //__construct() class construct{ public function __construct(){ $this->var = "this is var"; } } class con2 extends construct{ public function __construct(){ $