PHP面向对象,1

构造和析构


构造方法在创建对象时被调用

析构方法是在对象使用完毕之后再执行。一般可以可用于清理内存中的对象(脚本执行完毕的时候系统会自动清理),而有时脚本执行完毕后并没有清楚,比如数据库链接等,就有必要使用析构方法。

<?php
    /**
    * 测试
    */
    class Computer{
        public function __construct(){
            echo "这是构造方法<br>";
        }

        public function __destruct(){
            echo "这是析构方法";
        }
    }

    new Computer();

权限问题


php没有包的概念,所以对于类没有修饰词

对于属性有三个权限public protected private这三个和java中一样。

拦截器


一个类中如果有大量的私有属性,而且对私有属性必须提供get和set方法,这样的话会导致程序非常臃肿,PHP中提供了__set(),__get()拦截器方法可以对私有属性进行操作,这两个方法是PHP自己调用的,为了放在被外部访问,应将其改为私有属性。

<?php
    /**
    * 测试
    */
    class Computer{
        private $keyBorder;

        private function __set($key, $value){
            $this->$key = $value;
        }

        private function getName(){
            return $this->keyBorder;
        }
    }

    $computer = new Computer();
    $computer->keyBorder = 'test';
    echo $computer->getName();
<?php
    /**
    * 测试
    */
    class Computer{
        private $keyBorder;

        private function __set($key, $value){
            $this->$key = $value;
        }

        private function __get($key){
            return $this->$key;
        }
    }

    $computer = new Computer();
    $computer->keyBorder = 'test';
    echo $computer->keyBorder;

常量


常量在数据区

<?php
    class Computer{
         const NAME='DELL';  
    }

    echo Computer::NAME;

静态属性


静态属性和JAVA一样,这里就不啰嗦了 ,访问方式如下:

<?php
   class Computer{ 
        public static $A=1;

        public function add(){
            self::$A++;
        }
    }

    $computer = new Computer();
    $computer->add();
    echo Computer::$A;

instanceof


判断某个对象是不是某个类的实现,是则返回1,否返回空

<?php
    class Computer{ 

    }

    $computer = new Computer();
    
    echo ($computer instanceof Computer);