首页 > Web开发 > PHP教程 > 正文

php的__call函数是属于哪一类

互联网 2019-10-09 16:21:11 0

php的__call() 函数是一个魔术函数,所谓PHP的魔术函数,简单的说就是在PHP中具有特定名称——都是用两个下划线开头的,并且PHP解释器会在运行到某一个时机的时候自动查找并运行的方法。


php的__call函数是属于哪一类

当我们调了一个不可以访问的成员方法时,__call魔术方法就会被调用.

不可以访问的成员方法的是指(1. 该成员方法不存在, 2. 成员方法是protected或者 private) (推荐学习:PHP视频教程)

我们就是希望,在类的外部直接调用不可访问的成员方法(private , protected).

案例说明

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

<?php

    header('content-type:text/html;charset=utf-8');

    //__call魔术方法

 

     class Monk{

        public $name;

        protected $hobby;

 

        public function __construct($name, $hobby){

            $this->name = $name;

            $this->hobby = $hobby;

        }

         

        //输出该对象的信息

        public function showInfo(){

             

            echo '<br> 名字是 ' . $this->name;

            foreach($this->hobby as $hobby){

                echo '<br> 爱好有 ' . $hobby;

            }

        }

 

        //会做算术题, 保护的

        protected function getSum($num1, $num2){

             

            return $num1 + $num2;

        }

 

        //编写这个__call魔术方法, __call 魔术方法会接收到两个参数

        /*

            @param $method_name 就是函数名

            @param $parameters 就是参数,类型是array

        */

        public function __call($method_name, $parameters){

             

//            echo '<br> method_name = ' . $method_name;

//            echo '<br> $parameters <br>';

//            var_dump($parameters);

             

            //判断 $this 中是否有  $method_name 函数,有就返回true,否则返回false

            if(method_exists($this, $method_name)){

 

                return $this->$method_name($parameters[0], $parameters[1]);

            }else{

                return '没有你要调用的函数';

            }

             

        }

     }

 

     $monk = new Monk('济公', array('no1'=>'腾云驾雾', 'no2'=>'喝酒'));

 

     $monk->showInfo();

 

     //当我们直接调用 protected 方法时,就会触发 __call 魔术方法

     echo '<br> 结果是' . $monk->getSum(100, 200);

以上就是php的__call函数是属于哪一类的详细内容,更多请关注web开发者其它相关文章!


  • 相关标签:php教程 PHP PHP学习
  • 版权归原作者所有,如果有侵犯到您的权益,请联系本站删除!
  • 相关文章


    专题推荐

    今日头条
  • 手机哪款好?8月值得买的手机就这四款 手机哪款好?8月值得买的手机就这四款
  • 七夕保命技能书送上 女朋友还有30秒到达战场 七夕保命技能书送上 女朋友还有30秒到达战场
  • 七夕保命技能书送上 女朋友还有30秒到达战场 七夕保命技能书送上 女朋友还有30秒到达战场
  • 七夕搞笑句子大全2019 七夕微信说说笑死人那种 七夕搞笑句子大全2019 七夕微信说说笑死人那种
  • 热门标签