PHP面向对象之3种数据访问方式详解(代码实例)-php教程

资源魔 34 0

本文指标

把握PHP中数据拜访的3种形式的界说以及作用

一、public

二、protected

三、private

(一)、数据拜访的3种形式

一、Public:私有的类成员

能够正在任何中央拜访,详细能够被哪些拜访了:

● 界说该类的类(本身)

● 该类的子类

● 其余类

二、Protected:受维护的类成员

● 界说该类的类(本身)

● 该类的子类

三、Private:公有的类成员

● 只有本身才能够拜访

总结:从上到下束缚才能是愈来愈强的

单纯从以上的文字形容,咱们了解起来仍是有点费力的,那末仍是依照实践+理论的形式来进行了解,那末接上去咱们就经过详细的代码来了解这3种数据拜访的形式正在PHP中究竟是若何完成的,到底它们各自的特性是甚么,最初来领会一下它们的束缚才能到底又是怎么。

(二)详细代码

阐明:为了让各人能更好的了解面向工具,以是写文章的时分,我也是只管即便遵照肯定的规定,由浅到深,由易到难,以是我写的每一篇文章都是以及上篇文章有肯定的联系关系,比方如下的代码案例,我又是正在上篇文章的代码上进行的拓展以及延长。

案例一:晓得public的界说,而后证实它能够正在3个中央均可以拜访(1.正在本人界说的类中,2.正在子类中 3.正在内部)

<?php

//界说 “人” 类
class Human{
    public $name = "";//姓名 
    public $height = "";//身高
    public $weight = "";//体重

    public function eat($food){
        echo $this->name."正在吃".$food."<br/>";
    }
}
//女主播
class Anchors extends Human{
    public $name = "";
    public $stageName = "";
    public function __construct( $name,$stageName ){
        $this->name = $name;
        $this->stageName = $stageName;
    }
    public function singing(){
        echo "我是女主播,我会唱歌<br/>";
    }
  
}
// Nba球员类
 class NbaPlayer extends Human{
   //由于父类曾经有了,以是就没有需求再写了,经过extends来完成
    // public $name  = "";//姓名
    // public $height = "";//身高
    // public $weight = "";//体重

    public $team = "";//团队
    public $playerName = "";//球员号码

    public function __construct( $name,$height,$weight,$team,$playerName ){
        $this->name = $name;
        $this->height=$height;
        $this->weight = $weight;
        $this->team = $team;
        $this->playName = $playerName;
        echo "结构函数执行了,以后工具是{$this->name}<br/>";
    }
    
   
   //跑步
    public function run(){
        echo "跑步中<br/>";
    }
    //腾跃
    public function jump(){
        echo "腾跃<br/>";
    }
    //运球
    public function dribble(){
        echo "运球<br/>";
    } 
    //传球
    public function pass(){
        echo "传球<br/>";
    }
    //投篮
    public function shoot(){
        echo "投篮<br/>";
    }
    //扣篮
    public function dunk(){
        echo "扣篮<br/>";
    }
 }

 //数据拜访测试
//public 测试
//一、测试正在类的内部能够拜访
 //创立乔丹工具
 $jordon = new NbaPlayer("乔丹","1.98米","98千克","公牛","23");
 //输入乔丹工具
 echo "称号= ".$jordon->name."<br/>";//后果可以输入来,阐明正在内部是能够拜访Public类成员的

//二、测试正在类的本身外面能够拜访
//例子:比方结构函数里,咱们能够间接经过$this->team

//三、测试能否能够子类中能够拜访
//例子:比方父类中界说的name 同样能够正在子类(NbaPlayer)的结构函数中间接拜访

?>

运转成果以下:

3.png

案例二:晓得protected的界说,而后证实它能够正在2个中央均可以拜访(1.正在本人界说的类中,2.正在子类中 )

<?php
//界说“人”类
class Human{
    public $name = "";//姓名
    public $height = "";//身高
    public $weight = "";//体重

    protected $addr = "长沙";//受维护的类
   
    public function eat($food){
        echo $this->name."正在吃".$food."<br/>";
    }
    //测试protected类成员能否能够正在本身类中能够拜访
    public function getAddrInHuman(){
        echo "Human 本身类中的add=".$this->addr."<br/>";
    }
}
//女主播
class Anchors extends Human{
    public $name = "";
    public $stageName = "";
    public function __construct( $name,$stageName ){
        $this->name = $name;
        $this->stageName = $stageName;
    }
    public function singing(){
        echo "我是女主播,我会唱歌<br/>";
    }
    //重写办法eat
    public function  eat($food){
        echo "我是女主播,我是边唱歌边吃{$food}<br/>";
    }
}
 class NbaPlayer extends Human{
   //由于父类曾经有了,以是就没有需求再写了,经过extends来完成
    // public $name  = "";//姓名
    // public $height = "";//身高
    // public $weight = "";//体重

    public $team = "";//团队
    public $playerName = "";//球员号码

    public function __construct( $name,$height,$weight,$team,$playerName ){
        $this->name = $name;
        $this->height=$height;
        $this->weight = $weight;
        $this->team = $team;
        $this->playName = $playerName;
        echo "结构函数执行了,以后工具是{$this->name}<br/>";
    }
    
    //测试protected类成员能否能够正在子类中能够拜访
    public function getAddrInNbaPlayer(){
        echo "正在NbaPlayer子类中addr=".$this->addr."<br/>";
    }
 }

 //创立乔丹工具
 $jordon = new NbaPlayer("乔丹","1.98米","98千克","公牛","23");

 //数据拜访测试
 //protected测试
 //一、测试能否能够正在本身类中能够拜访
 $jordon->getAddrInHuman();//后果OK,的确是能够拜访
 //2.测试能否能够正在子类中拜访
 $jordon->getAddrInNbaPlayer();//后果OK,的确也是能够拜访
 //3.测试能否能够被内部拜访
 echo "正在类内部拜访addr=".$jordon->addr."<br/>";//后果报错,阐明没有行

?>

运转成果以下:

2.png


案例三:晓得private的界说,而后证实它只能正在1个中央能够拜访(1.正在本人界说的类中)

<?php
//界说“人”类
class Human{
    public $name = "";//姓名
    public $height = "";//身高
    public $weight = "";//体重

    private $isHungry = true;//测试公有变量能否能够正在子类中拜访
  
    //为了让内部能够拜访private类成员
    public function getPrivateInfo(){
        return "private 变量 isHungry=".$this->isHungry."<br/>";
    }
}
//女主播
class Anchors extends Human{
    public $name = "";
    public $stageName = "";
    public function __construct( $name,$stageName ){
        $this->name = $name;
        $this->stageName = $stageName;
    }
    public function singing(){
        echo "我是女主播,我会唱歌<br/>";
    }
    //重写办法eat
    public function  eat($food){
        echo "我是女主播,我是边唱歌边吃{$food}<br/>";
    }
}
 class NbaPlayer extends Human{
   //由于父类曾经有了,以是就没有需求再写了,经过extends来完成
    // public $name  = "";//姓名
    // public $height = "";//身高
    // public $weight = "";//体重

    public $team = "";//团队
    public $playerName = "";//球员号码

    public function __construct( $name,$height,$weight,$team,$playerName ){
        $this->name = $name;
        $this->height=$height;
        $this->weight = $weight;
        $this->team = $team;
        $this->playName = $playerName;
        // echo "结构函数执行了,以后工具是{$this->name}<br/>";
    }
    //测试private类成员能否能够正在子类中拜访
    public function getIsHungryInNbaPlayer(){
        echo "正在NbaPlayer子类中isHungry=".$this->isHungry."<br/>";
    }
 }
 
 //创立乔丹工具
 $jordon = new NbaPlayer("乔丹","1.98米","98千克","公牛","23");

 //数据拜访测试
 //private测试
 //1.测试公有变量是否被内部拜访
 echo "公有变量isHungry =".$jordon->isHungry ."<br/>";//后果不克不及拜访,阐明private变量不克不及被子类拜访
 //测试公有变量是否正在界说的类的外部拜访
 echo $jordon->getPrivateInfo();//后果Ok,阐明能够 
//测试公有变量能否能够正在子类中拜访
$jordon->getIsHungryInNbaPlayer();//后果报错,阐明也不克不及正在子类中拜访

?>

运转成果以下:

5.png

总结:

一、Public:私有的类成员

能够正在任何中央拜访,详细能够被哪些拜访了:

● 界说该类的类(本身)

● 该类的子类

● 其余类

二、Protected:受维护的类成员

● 能够被其本身及其子类拜访

三、Private:公有的类成员

● 只有本身才能够拜访

4.为了让内部能够拜访private类成员,咱们能够经过正在类中界说一个public办法,而后正在public办法中前往private类成员

好,到了这里,想必各人对数据拜访应该有了一个比拟明晰的意识,那咱们如今来学致使用,用咱们学到的这个常识来处理如下的成绩,先本人考虑一下怎样做,而后再看谜底

成绩:NBA球员普通都没有想让其余人晓得本人的实在姓名,比方说我明明是40岁,然而我就想让他人认为是38岁

考虑中.......................

谜底揭晓:

代码以下:

<?php

class Human{
    public $name = "";//姓名
    public $height = "";//身高
    public $weight = "";//体重

}
//女主播
class Anchors extends Human{
    public $name = "";
    public $stageName = "";
    public function __construct( $name,$stageName ){
        $this->name = $name;
        $this->stageName = $stageName;
    }
    public function singing(){
        echo "我是女主播,我会唱歌<br/>";
    }
    //重写办法eat
    public function  eat($food){
        echo "我是女主播,我是边唱歌边吃{$food}<br/>";
    }
}
 class NbaPlayer extends Human{
   //由于父类曾经有了,以是就没有需求再写了,经过extends来完成
    // public $name  = "";//姓名
    // public $height = "";//身高
    // public $weight = "";//体重

    public $team = "";//团队
    public $playerName = "";//球员号码

     //数据拜访
     private $age = "40";
     //end

    public function __construct( $name,$height,$weight,$team,$playerName ){
        $this->name = $name;
        $this->height=$height;
        $this->weight = $weight;
        $this->team = $team;
        $this->playName = $playerName;
        echo "结构函数执行了,以后工具是{$this->name}<br/>";
    }
    
   
   //跑步
    public function run(){
        echo "跑步中<br/>";
    }
    //腾跃
    public function jump(){
        echo "腾跃<br/>";
    }
    //运球
    public function dribble(){
        echo "运球<br/>";
    } 
    //传球
    public function pass(){
        echo "传球<br/>";
    }
    //投篮
    public function shoot(){
        echo "投篮<br/>";
    }
    //扣篮
    public function dunk(){
        echo "扣篮<br/>";
    }
  
    //数据拜访 
    public function getAge(){
        // echo $this->name."的age=".$this->age."<br/>";
        //既然可以正在本身类中猎取到春秋,那末为理解决NBA球员没有想让他人晓得本人实在春秋的成绩
            //咱们就能够对春秋进行操作-造假 让春秋更小
        $age = $this->age-2;
        echo $this->name."的age=".$age."<br/>";
    }
 }
 
 //创立乔丹工具
 $jordon = new NbaPlayer("乔丹","1.98米","98千克","公牛","23");
 $jordon->getAge();//后果Ok 阐明春秋是能够猎取到的,既然能够猎取到age咱们正在函数外部作假,来达到一个谎报春秋的目的
?>

运转成果以下:

4.png

总结:

1.晓得了正在PHP中数据拜访有三种方式,public,protected,private

2.晓得了3种数据拜访形式各自的特性

以上就是PHP面向工具之3种数据拜访形式详解(代码实例)的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 面向对象

抱歉,评论功能暂时关闭!