PHP8的數(shù)據(jù)封裝(數(shù)據(jù)隱藏)-PHP8知識(shí)詳解
導(dǎo)讀:面向?qū)ο蟮奶攸c(diǎn)之一就是封裝性,也就是數(shù)據(jù)封裝,也被稱為數(shù)據(jù)隱藏。 php8通過限制訪問權(quán)限來實(shí)現(xiàn)數(shù)據(jù)的封裝性,這里用到了public、private、protected、static和final幾個(gè)關(guān)鍵字。下面來介紹前3個(gè)。
永久美國(guó)免備案虛擬主機(jī)1元1天,15元1月,100元1年,1000元永久
站長(zhǎng)在線旗下答案網(wǎng)站,全站所有題目,免費(fèi)查看答案和答案解析
封裝性,也就是數(shù)據(jù)封裝,也被稱為數(shù)據(jù)隱藏。
PHP8通過限制訪問權(quán)限來實(shí)現(xiàn)數(shù)據(jù)的封裝性,這里用到了public、private、protected、static和final幾個(gè)關(guān)鍵字。下面來介紹前3個(gè)。
1.、public(公共成員)
public 為公有類型,在程序的任何位置都可以被調(diào)用。常用的調(diào)用方法有以下三種。
(1)、在類內(nèi)通過self::屬性名(或方法名)調(diào)用自己類的public 方法或?qū)傩浴?/p>
(2)、在子類中通過parent::方法名調(diào)用父類方法。
(3)、在實(shí)例中通過$obj->屬性名(或方法名)調(diào)用public類型的方法或?qū)傩浴?/p>
2.、private (私有成員)
private 為私有類型,表示只能在類的內(nèi)部進(jìn)行訪問和使用。
<?php
class Fruit {
private $name="水果"; //設(shè)置私有變量
public function setName($name){ //設(shè)置共有變量的方法
$this -> name =$name;
}
public function getName(){ //讀取私有變量
return $this -> name;
}
}
class MyFruit extends Fruit{} //繼承父類Fruit
$myfruit = new MyFruit ();
$myfruit->setName("葡萄"); //操作私有變量正確方法
echo $myfruit->getName();
echo Fruit::$name; //操作私有變量錯(cuò)誤方法
?>
以上代碼在php8中的運(yùn)行結(jié)果如下:
葡萄
Fatal error: Uncaught Error: Cannot access private property Fruit::$name in D:\phpenv\www\localhost\index.php:15 Stack trace: #0 {main} thrown in D:\phpEnv\www\localhost\index.php on line 15
3、protected(保護(hù)成員)
protected 為受保護(hù)類型,常用的調(diào)用方法有以下三種。
(1)、在類內(nèi)通過self::屬性名(或方法名)調(diào)用自己類的public 方法或?qū)傩浴?/p>
(2)、在子類中通過parent::方法名調(diào)用父類方法。
(3)、在實(shí)例中通過$obj->屬性名(或方法名)調(diào)用public類型的方法或?qū)傩浴?/p>
private關(guān)鍵字可以將數(shù)據(jù)完全隱藏起來,除了在本類,其他地方都不可以調(diào)用,子類也不可以調(diào)用。對(duì)于有些變量希望子類能夠調(diào)用,但對(duì)另外的類來說,還要做到封裝。這時(shí),就可以使用protected關(guān)鍵字。
定義protected類型的變量,參考代碼:
<?php
class Fruit {
protected $name="葡萄";
}
class MyFruit extends Fruit{
public function display(){
echo "在子類中直接調(diào)用保護(hù)變量:". $this->name."<br />";
}
}
$myfruit=new MyFruit ();
$myfruit->display();
echo "其他地方調(diào)用包含變量就會(huì)報(bào)錯(cuò):";
$myfruit->$name="洗衣機(jī)";
?>
以上代碼在PHP8的運(yùn)行結(jié)果為:
在子類中直接調(diào)用保護(hù)變量:葡萄
其他地方調(diào)用包含變量就會(huì)報(bào)錯(cuò):
Warning: Undefined variable $name in D:\phpEnv\www\localhost\index.php on line 13
到此為止,PHP8的數(shù)據(jù)封裝(數(shù)據(jù)隱藏)的3個(gè)知識(shí)點(diǎn):public(公共成員).、private (私有成員)、protected(保護(hù)成員)的相關(guān)知識(shí)就講解完畢了。
本文地址:http://003188.cn/php8deshujufengzhuang.html
阿里云虛擬主機(jī)1G空間,120元一年
香港、美國(guó)虛擬主機(jī)100元一年,1000元永久
騰訊云雙十一0.4折起,2核8G5M三年僅700元,2核4G8M三年僅198元
猜你喜歡