导航:首页 > 知识科普 > php魔术方法有哪些

php魔术方法有哪些

发布时间:2025-01-23 23:24:57

⑴ php中怎么使用call

__call是php语言里的一个魔术方法,其作用是:当调用的方法不存在时会自动调用这个方法。


语法:

function__call(string$function_name,array$arguments)

{

宏瞎......

}


该方握绝祥法有两个参数,第一个参数$function_name会自动接收不存在的方法名,第二个$args则以数组的方段搏式接收不存在方法的多个参数。


在类里面加入:


function__call($function_name,$args)
{
echo"你所调用的函数:$function_name(参数:<br/>";
var_mp($args);
echo")不存在!";
}


当调用一个不存在的方法时(如test()方法):


$p1=newPerson();
$p1->test(2,"test");


输出的结果如下:


你所调用的函数:test(参数:


array(2){

[0]=>int(2)

[1]=>string(4)"test"

}

)不存在!

⑵ php中常用的魔术方法有哪些

php规定以两个下划线__开头的方法都保留为魔术方法,建议自定义函数的函数名最好避开。
__construct() 实例化类时自动调用。
__destruct() 类对象使用结束时自动调用。
__set() 在给未定义的属性赋值的时候调用。
__get() 调用未定义的属性时候调用。
__isset() 使用isset()或empty()函数时候会调用。
__unset() 使用unset()时候会调用。
__sleep() 使用serialize序列化时候调用。
__wakeup() 使用unserialize反序列化的时候调用。
__call() 调用一个不存在的方法的时候调用。
__callStatic()调用一个不存在的静态方法是调用。
__toString() 把对象转换成字符串的时候会调用。比如 echo。
__invoke() 当尝试把对象当方法调用时调用。
__set_state() 当使用var_export()函数时候调用。接受一个数组参数。
__clone() 当使用clone复制一个对象时候调用。

⑶ php魔术方法有哪些

1.constuct()构造函数
通常实例化完一个对象之后,都要对该对象的属性进行初始化!在实例化一个对象的时候,PHP系统会自动的调用一个名字叫作construct()的方法,我们把这个方法叫作“构造方法”!
2.destruct()析构方法
与构造方法是一对,构造方法是在一个对象“出生”的时候由系统自动调用的,而析构方法是在一个对象“消失”的时候由系统自动调用的!
析构方法的名字叫destruct();注意里面不能有任何的参数!
3.clone()克隆
触发时机:是在克隆一个对象的时候,对新对象进行初始化的工作
4.autoload()自动加载类
当调用不存在的类的时候自动调用!
5.tostring()
当将对象当成字符串使用的时候自动调用
6.invoke()
当将对象当成函数使用的时候自动调用
7,set()
当对无法访问的属性赋值时自动调用(比如:类外调用私有属性)
8.get()
当对获取无法访问的属性值的时候自动调用
9.unset()
当销毁无法访问的属性的时候自动调用
10.isset()
当判断无法访问的属性是否存在的时候自动调用
11.call()
当调用无法访问的普通方法时自动触发

⑷ PHP8中的魔术方法-PHP8知识详解

在PHP8中,魔术方法为开发者提供了更灵活的类行为定义方式,它们以两个下划线(__)开头。通过魔术方法,可以实现如对象创建、方法调用、属性访问与修改等行为。以下为一些常见魔术方法的简介:



__construct(): 类的构造函数。当对象创建时自动调用。



__destruct(): 类的析构函数。当对象销毁时自动调用。



__get($name): 在尝试读取不可访问属性值时自动调用。



__set($name, $value): 在给不可访问属性赋值时自动调用。



__isset($name): 在调用isset()或empty()函数检查不可访问属性时自动调用。



__unset($name): 在调用unset()函数删除不可访问属性时自动调用。



__call($name, $arguments): 在调用不存在或不可访问方法时自动调用。



__call static($name, $arguments): 在调用不存在或不可访问静态方法时自动调用。



__toString(): 在将对象作为字符串输出时自动调用。



__invoke($arguments): 当尝试将对象作为函数调用时自动调用。



__clone(): 当对象被克隆时自动调用。



__debugInfo(): 在使用var_mp()函数输出对象信息时自动调用。



__serialize(): 在对象被序列化时自动调用。



__unserialize($data): 在对象被反序列化时自动调用。



__sleep(): 在对象被序列化时自动调用,返回要序列化的属性列表。



__wakeup(): 在对象被反序列化时自动调用。



本文主要介绍两个魔术方法:__set()和__get()。面向对象设计原则强调封装性,不鼓励直接访问类属性。通过使用__set()和__get(),可以间接访问类属性,避免直接访问,提升代码的可维护性和安全性。



当尝试写入未定义或不可见的成员变量时,会触发__set()方法。该方法接收变量名称和值作为参数。



在调用未定义或不可见的成员变量时,会触发__get()方法。该方法接收要调用的变量名称作为参数。



以下为使用__set()和__get()的参考代码示例:



运行结果表明,尝试访问未定义成员变量时,会自动调用__set()和__get()方法,实现间接访问类属性的功能。

阅读全文

与php魔术方法有哪些相关的资料

热点内容
日本生姜红糖水的正确喝方法 浏览:316
维生素减压最佳方法 浏览:239
2的开平方的计算方法 浏览:43
无线网络运营商设置在哪里设置方法 浏览:808
黄芪鉴别最简单方法和用量 浏览:772
脑出血计算方法 浏览:691
降解纱线最佳方法 浏览:160
短期投资入账价值计算方法 浏览:22
小米6屏幕重启解决方法 浏览:438
苹果7手机设置音乐铃声设置在哪里设置方法 浏览:722
铆钉的安装方法 浏览:756
染头发怎么染方法视频 浏览:842
脑袋瓜的食用方法 浏览:804
将苦味酊涂在手指上的治疗方法是 浏览:332
切线方法视频大全 浏览:555
软灯带安装方法图解 浏览:458
厨房的使用方法 浏览:526
潍坊青萝卜种植方法 浏览:559
生物分析方法的维护 浏览:195
挤领带方法视频 浏览:753