7.PHP中的面向对象编程(上)

类的声明

image-20201027103219542

成员属性

  • 成员属性使用“var”关键字来进行声明
  • 如果要使用修饰符,则不需要使用“var”关键字,不如:static、public、private等等
<?php
    class person{
        var $age;
        var $name;
        public $sex;
    }
?>

成员方法

  • 使用function关键字来声明成成员方法
  • 可以使用一些修饰符来进行修饰,但是要注意,成员方法应该与类相关。
<?php
    class person{
        var $age;
        var $name;
        public $sex;

        #声明一个成员方法
        public function say(){
            echo "我是".$name."<br/>";
        }

        #声明成员方法
        public function getAge(){
            return $age;
        }
    }
?>

通过类实例化对象

类的实例化

image-20201027104026764

<?php
    class person{
        var $age;
        var $name;
        public $sex;

        #声明一个成员方法
        public function say(){
            echo "我是".$name."<br/>";
        }

        public function getAge(){
            return $age;
        }
    }

    $zhangsan=new person();     #实例化一个类 

?>

对象中的成员访问

image-20201027104313214

  • 以上方法适用于所有成员与所有成员方法,除非这个成员用了static修饰符进行修饰
<?php
    class person{
        var $age;
        var $name;
        public $sex;

        #声明一个成员方法
        public function say(){
            echo "我是".$this->name."<br/>";
        }

        public function getAge(){
            return $this->age;
        }
    }

    $zhangsan=new person();     #实例化一个类 
    $zhangsan->name="zhangsan";
    $zhangsan->say();
    #运行结果
    #我是zhangsan

?>

使用$this对象访问成员变量

  • 在创建对象时,会自动创建一个名为$this的对象,对象的类型与创建对象的类型一致,用来指代当前的对象,一般用于在类的内部用于访问自己的成员属性或者是成员方法。在上面的例子当中,就使用$this->name来访问person类的name属性。
<?php
    class person{
        var $age;
        var $name;
        public $sex;

        #声明一个成员方法
        public function say(){
            echo "我是".$this->name."<br/>";
        }

        public function getAge(){
            return $this->age;
        }
    }

    $zhangsan=new person();     #实例化一个类 
    $zhangsan->name="zhangsan";
    $zhangsan->age=32;
    echo $zhangsan->getAge();   #输出age属性

// 运行结果:
// 32
?>

构造方法和析构方法

  • 在每个声明的类中都有一个称为构造方法的特殊成员方法,如果没有显式地声明它,类中都会默认存在一个没有参数列表并且内容为空的构造方法。如果显式地声明它,则类中的默认构造方法将不会存在。当创建一个对象时,构造方法就会被自动调用一次,即每次使用关键字new来实例化对象时都会自动调用构造方法,不能主动通过对象的引用调用构造方法。所以通常使用构造方法执行一些有用的初始化任务,比如对成员属性在创建对象的时候赋初值等。
  • 构造方法的声明

image-20201027105641988

  • 一个类中只能有一个构造方法,若不声明构造方法,则系统是自动创建一个参数为空的构造方法
  • 构造方法的名称是固定的,不能随意更改
<?php
    class person{
        var $age;
        var $name;
        public $sex;

        #构造方法
        function __construct($name,$age,$sex){      #注意有两个下划线
            $this->name=$name;
            $this->age=$age;
            $this->sex=$sex;
        }

        #声明一个成员方法
        public function say(){
            echo "我是".$this->name."<br/>";
        }

        public function getAge(){
            return $this->age;
        }
    }

    $zhangsan=new person("张三",32,"男");     #实例化一个类
    echo $zhangsan->name;
    echo $zhangsan->getAge(); 
// 运行结果:
// 张三32
?>
  • 析构方法:与构造方法相对应的就是析构方法,PHP将在对象被销毁前自动调用这个方法。析构方法是PHP 5中新添加的内容,在 PHP4中并没有提供。析构方法允许在销毁一个对象之前执行一些特定操作,例如关闭文件,释放结果集等。
  • 析构方法的声明

image-20201027110528834

<?php
    class person{
        var $age;
        var $name;
        public $sex;

        #构造方法
        function __construct($name,$age,$sex){      #注意有两个下划线
            $this->name=$name;
            $this->age=$age;
            $this->sex=$sex;
        }

        #声明一个成员方法
        public function say(){
            echo "我是".$this->name."<br/>";
        }

        public function getAge(){
            return $this->age;
        }

        function __destruct(){
            echo "再见".$this->name."<br/>";
        }
    }

    $zhangsan=new person("张三",32,"男");     #实例化一个类
    $zhangsan=NULL;
    $lisi=new person("李四",32,"男");     #实例化一个类
    $wangwu=new person("王五",32,"男");     #实例化一个类
// 运行结果:
// 再见张三
// 再见王五
// 再见李四
?>
  • 在上面的程序当中,$zhangsan被指定到了NULL,因此变量失去了对象的引用,因此执行析构方法,而对于$lisi与$wangwu来说,是在脚本执行结束后,才调用的析构方法,由于栈的后进先出的特点,先释放最后创建的对象,以此类推
© 版权声明
THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
四曲的头像-四曲博客

昵称

取消
昵称表情代码图片