介绍
这篇文章运用简单易懂的例子给大家介绍如何使用PHP面向对象的__call函数,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
PHP使用面向对象魔术方法之__call函数:1,当调用一个不可以访问的成员方法时,【__call】魔术方法就会被调用;2,该成员方法不存在以及成员方法是保护或者私人时,调用【__call】魔术方法。
引用><强> PHP使用面向对象魔术方法之__call函数:强>
<>强基本介绍:强>
(1)当我们调了一个不可以访问的成员方法时,__call魔术方法就会被调用。
(2)不可以访问的成员方法的是指(1。该成员方法不存在,2。成员方法是保护或者私人)
<强>需求强>
我们就是希望,在类的外部直接调用不可访问的成员方法(私有、保护)。
<>强案例说明强>
& lt; php ? 头(& # 39;- type: text/html; charset=utf - 8 # 39;);//__call魔术方法 类和尚{ 美元的公共名称; 保护美元的爱好; 公共函数__construct(姓名、爱好美元){ $ this→名称=$名称; $ this→爱好=美元的爱好; }//输出该对象的信息 公共函数showInfo () { 回声& # 39;& lt; br>名字是& # 39;。$ this→名称; foreach ($ this→爱好爱好美元){ 回声& # 39;& lt; br>爱好有& # 39;。美元的爱好; } }//会做算术题,保护的 保护功能getSum (num1, num2美元){ 返回num1 + num2美元; }//编写这个__call魔术方法,__call魔术方法会接收到两个参数/* @param method_name就美元是函数名 @param参数就美元是参数,类型是数组 */公共函数__call (method_name美元,美元参数){//echo & # 39; & lt; br>method_name=& # 39;。method_name美元;//echo & # 39; & lt; br>美元参数& lt; br> & # 39;;//var_dump(参数);//判断这中美元是否有美元method_name函数,有就返回真,否则返回错误的 如果(method_exists(这个,method_name美元)){ 返回这个→美元method_name(参数[0],美元参数[1]); 其他}{ 返回& # 39;没有你要调用的函数& # 39;; } } } 和尚美元=new和尚(& # 39;济公& # 39;,数组(& # 39;第一# 39;=祝辞& # 39;腾云驾雾& # 39;,& # 39;no2 # 39;=祝辞& # 39;喝酒& # 39;)); 和尚→美元showInfo ();//当我们直接调用保护方法时,就会触发__call魔术方法 回声& # 39;& lt; br>结果是& # 39;。和尚→美元getSum (100、200);练习题:
& lt; php ? 头(& # 39;- type: text/html; charset=utf - 8 # 39;);/* 练习题: 请编写一个猫类(有年龄,名字二个属性),要求二个属性全部都是公开的。 猫类有一个方法jiSuan (n1、n2,③美元)可以计算+ - */是私有的。 在类外部,对美元象名→玩(& # 39;jiSuan& # 39;, n1美元,美元n2,③美元)得到结果,注意玩这个方法,在类中没有定义。 要求玩是固定的,如果没有按规则写,则给出相应的错误提示! */猫类{ 美元的公共名称; 公共美元时代; 公共函数__construct(姓名,年龄美元){ $ this→名称=$名称;=$ $ this→年龄年龄; } 私有函数jiSuan (n1、n2,③美元){ res美元=0; 开关(加工){ & # 39;+ & # 39; res=$ n1 + n2美元; 打破; & # 39;& # 39;: res=$ n1 - n2美元; 打破; & # 39;* & # 39;: res=$ n1 * n2美元; 打破; & # 39;/& # 39;: res美元=n1、n2美元; 打破; 默认值: 回声& # 39;你输入的运算符号不对& # 39;; } 返回res美元; }//编写一个__call魔术方法 公共函数__call (method_name美元,美元参数){//先判断是否通过& # 39;玩# 39;调用 if ($ method_name==& # 39;玩# 39;){//继续 如果(method_exists($, $参数[0])){//继续 返回这个→美元[0]参数(参数[1],美元参数[2],[3]美元参数); 其他}{ 返回& # 39;你调用的& # 39;。美元[0]参数。& # 39;不存在& # 39;; } 其他}{ 返回& # 39;你调用的方式有问题& # 39;; } } } 美元猫=new猫(& # 39;小花猫& # 39;(3); 回声& # 39;& lt; br>运算的结果是& # 39;。猫→美元玩(& # 39;jiSuan& # 39;, 10, 20日& # 39;& # 39;);关于如何使用PHP面向对象的__call函数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。
如何使用PHP面向对象的__call函数