属性重载与方法重载作业

原创 2018-12-13 16:28:54 199
摘要:<?phpclass Abc{        public $num1=2;        public $num2=5;        public f

<?php


class Abc

{

        public $num1=2;

        public $num2=5;

        public function sum($m,$n){

                echo $m."+".$n.'='.($m+$n);

        }

        public static function minus($m,$n){

               echo  $m."-".$n.'='.($m-$n);

        }    

}


class Def

{

        private $num;

        public function __get($name){

                echo 'get:'.$this->$name;

                echo '<br>';

        }

        public function __set($name,$value){

                // return 'set:'.$this->$name=$value;

                echo 'set:'.$this->$name=$value;

                echo '<br>';

        }

        public function __isset($name)

        {

                echo 'isset:'.$this->$name='10';

                echo '<br>';

        }

        public function __unset($name)

        {

                echo 'unset:yes';

                echo '<br>';

        }

        public function __call($name, $arguments)

        {

                echo 'call:';

                echo call_user_func_array([(new Abc),'sum'],$arguments);

                echo '<br>';

        }

        public static function __callStatic($name, $arguments)

        {

                echo 'callStatic:';

                echo call_user_func_array([(new Abc),'minus'],$arguments);

        }

}

$def=new Def();

// isset()的返回值是bool,是否给$name设置了值

isset($def->num);

// get 属性重载

$def->num.'<br>';

// set 属性重载

$def->num=2;

// echo $def->num.'<br>';


// unset 注销属性重载

unset($def->num1);


// 方法重载

$def->sum(30,20);


// 静态方法重载

$def::minus(30,20)

一个模块内部使用这种重载方法能减少很多重复代码,和构造函数有异曲同工之妙。更厉害的是,能够直接操作私有属性。


批改老师:韦小宝批改时间:2018-12-13 16:37:09
老师总结:写的很不错!课后记得多要要练习才可以哦!

发布手记

热门词条