php oop3乱七八糟的

发布时间:2019-07-04 10:03:11编辑:auto阅读(1198)

    <?php
    /*
    * public private protected 这些变量可见性修饰符,只是控制变量的可访问范围,与继承无关,不管属性变量用哪个关键词修饰。它都会被继承
    * 而且,一个属性不管采用了哪种修饰符,它都可以被 构造函数赋值
    *
    */
    class Person{
        public $name,$age,$sex;
        private $card,$money;

        public function __construct($name,$age,$sex,$card,$money){
            $this->name=$name;
            $this->age=$age;
            $this->sex=$sex;   
            $this->card=$card;
            $this->money=$money;
        }
       
        public function __destruct(){
            //before unset this object,do some thing
            echo 'object had unseted';
        }

        public  function echo_money(){
            echo 'money';
            return $this->money;
        }
        public function __get($attr){
            echo '当在对象外部直接访问,没有权限访问的属性时,这个方法被会自动执行';   
            echo '<br/>'.$this->name;       
        }

        public function __set($attr,$val){
            echo '当在外部给一个对象的某个不可以外部操作的属性赋值时,这个方法,自动被执行';
            echo '一般来说,不应该通过这个方法给外部没有权限的访问的属性赋值';
        }

        public function __isset($attr){
            echo '当用户在外部使用 isset()  来检测对象的某个不可以外部直接访问的属性是否存在时,这个方法会被自动调用';
        }

        public function __unset($attr){
            echo '当用户在外部使用 unset()  对一个外部没有权限访问的属性进行毁销操作时,这个方法被 自动调用';
        }
        public function __call($method,$arg){
            // 当调用不存在的行为时,这个会被自动执行
            echo 'no had this method';
        }
       

    }

    $hwp=new Person('hwp',30,'man',955888040,100);
    //echo $hwp->name;
    //echo $hwp->echo_money().'<br/>';
    //$hwp->say();
    echo '<br/>';
    $hwp->money;

    echo '<br/>';
    echo $hwp->age;

    $hwp->name='huangwenping';
    echo $hwp->name;

    $hwp->money=500000;

    echo '<hr/>';

    isset($hwp->name);

    isset($hwp->money);

    echo '<hr/>';

    unset($hwp->name);
    unset($hwp->money);
    unset($hwp);

    class SuperPerson extends Person {
        public function __construct($name,$age,$sex,$card,$money,$height){
            parent::__construct($name,$age,$sex,$care,$money);
            $this->height=$height;       
        }
       
        public function echo_money(){
            parent::echo_money();
            echo '<br/>';
            echo '这个方法继承自父类,同时也在子类里覆盖了父类的方法';
           
        }   
    }

    $oH=new SuperPerson('huangwenping',30,'man',9558,200000,173);
    $oH->echo_money();

关键字