PHP 中的 protected 關(guān)鍵字用于定義只能被類及其子類訪問的變量。與 private 關(guān)鍵字不同的是,它允許子類繼承并訪問其父類的受保護(hù)屬性。下面我們來看一些示例情況。
例子一:
在上面這個(gè)例子中,我們定義了一個(gè) Animal 類,其中 $name 屬性被設(shè)為 protected,也就是只能被 Animal 及其子類訪問。然后我們定義了一個(gè) Cat 類并繼承了 Animal 類,其中設(shè)置了一個(gè)公共方法 setName,用于給 $name 賦值。最后我們新建了一個(gè)名為 Garfield 的 Cat 類對(duì)象,并給它的 $name 賦值為 "Garfield"。但在最后一行輸出 $Garfield->name 時(shí),PHP 報(bào)錯(cuò)了,因?yàn)槲覀儫o(wú)法訪問 $name 屬性,只能通過 setName 方法給其賦值。
例子二:
在上面這個(gè)例子中,我們定義了一個(gè) Employee 類,其中 $salary 屬性被設(shè)為 protected。然后我們定義了一個(gè) Manager 類并繼承了 Employee 類,在 Manager 類的構(gòu)造函數(shù)中賦予了一個(gè) $salary 屬性。最后我們新建了一個(gè)名為 Alice 的 Employee 類對(duì)象和一個(gè)名為 Bob 的 Manager 類對(duì)象,并試圖輸出 $Bob->salary 值。但同樣遭到報(bào)錯(cuò),因?yàn)槲覀儫o(wú)法訪問 $salary 屬性。
總的來說,PHP 中的 protected 關(guān)鍵字允許子類繼承并訪問其父類的受保護(hù)屬性,而無(wú)法從類的實(shí)例化對(duì)象中直接訪問。這種設(shè)置可以提高代碼的安全性,并對(duì)類的內(nèi)部實(shí)現(xiàn)進(jìn)行封裝,使其對(duì)外部不可見,確保了程序的穩(wěn)定性和可靠性。
例子一:
class Animal { protected $name; } <br> class Cat extends Animal { public function setName($name) { $this->name = $name; } } <br> $Garfield = new Cat(); $Garfield->setName("Garfield"); echo $Garfield->name; // 報(bào)錯(cuò),無(wú)法訪問 protected 屬性
在上面這個(gè)例子中,我們定義了一個(gè) Animal 類,其中 $name 屬性被設(shè)為 protected,也就是只能被 Animal 及其子類訪問。然后我們定義了一個(gè) Cat 類并繼承了 Animal 類,其中設(shè)置了一個(gè)公共方法 setName,用于給 $name 賦值。最后我們新建了一個(gè)名為 Garfield 的 Cat 類對(duì)象,并給它的 $name 賦值為 "Garfield"。但在最后一行輸出 $Garfield->name 時(shí),PHP 報(bào)錯(cuò)了,因?yàn)槲覀儫o(wú)法訪問 $name 屬性,只能通過 setName 方法給其賦值。
例子二:
class Employee { protected $salary; } <br> class Manager extends Employee { public function __construct($salary) { $this->salary = $salary; } } <br> $Alice = new Employee(); $Bob = new Manager('5000'); <br> echo $Bob->salary; // 報(bào)錯(cuò),無(wú)法訪問 protected 屬性
在上面這個(gè)例子中,我們定義了一個(gè) Employee 類,其中 $salary 屬性被設(shè)為 protected。然后我們定義了一個(gè) Manager 類并繼承了 Employee 類,在 Manager 類的構(gòu)造函數(shù)中賦予了一個(gè) $salary 屬性。最后我們新建了一個(gè)名為 Alice 的 Employee 類對(duì)象和一個(gè)名為 Bob 的 Manager 類對(duì)象,并試圖輸出 $Bob->salary 值。但同樣遭到報(bào)錯(cuò),因?yàn)槲覀儫o(wú)法訪問 $salary 屬性。
總的來說,PHP 中的 protected 關(guān)鍵字允許子類繼承并訪問其父類的受保護(hù)屬性,而無(wú)法從類的實(shí)例化對(duì)象中直接訪問。這種設(shè)置可以提高代碼的安全性,并對(duì)類的內(nèi)部實(shí)現(xiàn)進(jìn)行封裝,使其對(duì)外部不可見,確保了程序的穩(wěn)定性和可靠性。