• 微信号
目录

php基础

您当前的位置:首页 > 我的笔记 > php基础>php类的封装

上一篇: php对象的创建

下一篇: 特殊的$this

php类的封装

所谓类的封装就是指在定义一个类时,将类中的属性私有化,即使用private关键字来修饰。

私有化的属性只能它所在类中被访问,为了能让外界访问私有属性。php提供了两种形式进行访问

1.通过getXxx()和setXxx()方法访问私有属性

在php程序中,为了访问是由属性,可以手段编写公有的getXxx()和setXxx()方法,其中getXxx()方法用于获取属性值,setXxx()方法用于设置属性值。

案例

<?php
    class person {
        private $name;
        private $age;
        //定义getName和setName用于获取name属性的值
        public function getName(){
            return $this->name;
        }
        public function setName($value){
            $this->name=$value;
        }
        //定义getAge和setAge用于获取age属性的值
        public function getAge(){
            return $this->age;
        }
        public function setAge($value){
            if($value<0){
                echo "年龄不合法<br>";
            }else{
                $this->age=$value;
            }
        }
    }
    $p=new person();
    $p->setName("张三");
    $p->setAge(-18);
    echo "姓名:".$p->getName()."<br>";
    echo "年龄:".$p->getAge();
?>

运行结果

陵小宇博客-php类的封装

2.通过__get()和__set()方法访问私有属性

使用getXxx()和setXxx()方法访问私有属性需要手段编写,当一个类有多个属性时,使用这种方法就会很麻烦。

因此,php预定义了__get()和__set()方法,其中__get()用于获取侧好难过元属性的属性值,__set()方法用于为私有属性赋值。这两种方法获取私有属性和设置私有属性都是自动调用的

案例

<?php
    class person {
        private $name;
        private $age;
        //定义 __get()方法用于获取person的属性
        public function __get($property_name){
            echo "自动调用__get()方法获取属性赋值<br>";
            if(isset($this->$property_name)){
                return($this->$property_name);
            } else {
                return(null);
            }
        }
        //定义__set()方法用于设置person属性
        public function __set($property_name,$value){
            echo "自动调用__set()方法为属性赋值 <br>";
            $this->$property_name=$value;
        }
    }
    $p=new person();
    $p->name="张三";
    $p->age=18;
    echo "姓名:".$p->name."<br>";
    echo "年龄:".$p->age;
?>

运行结果

陵小宇博客-php类的封装 在php中,提供三个访问修饰符public、protected和private,它们可以对类中成员的访问作出一些限制
  • public:公有修饰符,类中的成员将没有访问限制,所有的外部成员都可以访问这个类的成员。如果类的成员没有指定访问修饰符,则默认为public
  • protect:保护成员修饰符,被修饰为protected的成员不能被该类的外部代码访问,但是对于该类的子类可以对齐访问、读写等
  • private:私有修饰符,被定义为private成员,对于同一个类里的所有成员的是可见的,即没有访问限制,但不允许该类外部的代码访问,对于该类的子类同样也不能访问

需要注意的是,在php4中所有的属性都用关键字var声明,它使用效果和使用public一样,因为考虑到向下兼容,php5保留了对var的支持,但会将var自动转换为public

上一篇: php对象的创建

下一篇: 特殊的$this