關鍵字是在程式中用作保留的單詞,並賦予它們特殊的含義。它們可以是命令或參數。與所有其他程式語言一樣,PHP 也有一組稱為關鍵字的特殊單字,它們不能用作其他目的的變數名稱。它們也被稱為保留名稱。
廣告 該類別中的熱門課程 PHP 開發人員 - 專業化 | 8 門課程系列 | 3次模擬測驗開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
私人關鍵字,顧名思義,是只能從定義它的類別中存取的關鍵字。所有關鍵字預設都屬於公用類別,除非它們被指定為私人或受保護。私有關鍵字透過為整個程式碼中的關鍵字提供最少的可見性來幫助實現安全目的。當只有一個類別呼叫此關鍵字時,折射也更容易。
除了私人關鍵字之外,還可以有私有方法。在物件導向程式設計中,方法是與任何類別關聯的過程集。對於私有方法,只能在屬於同一類別或其模組的方法中呼叫它們。
還有可以宣告的私有常數和屬性。在這些情況下,可見性僅限於它們的類別之間,而不是實例之間。如果兩個物件屬於相同類型,則一個物件可以呼叫另一個物件的私有方法。
文法:
任何變數、屬性或方法都可以透過在其前面加上「private」關鍵字來宣告為私有。
class MyClass() { private variable_name; private Method_name(); private $priv = 'Private property'; }
讓我們透過以下範例來了解 PHP 中私有財產的工作原理:
代碼:
<?php /** * Definition of PHPExample */ class PHPExample { public $public = 'Public property'; protected $protected = 'Protected property'; private $private = 'Private property'; function displayValue() { echo $this->public; echo "\n"; echo $this->protected; echo "\n"; echo $this->private; echo "\n"; } } $val = new PHPExample(); echo $val->public; // Public will work without any error echo "\n"; echo $val->protected; // Uncaught Error: Cannot access protected property PHPExample::$protected in /workspace/Main.php:21 echo $val->private; // Uncaught Error: Cannot access private property PHPExample::$private in /workspace/Main.php:22 $val->displayValue(); // Displays all 3 Public, Protected and Private properties /** * Definition of PHPExample2 */ class PHPExample2 extends PHPExample { // It supports redeclaration of public and protected properties and not private public $public = 'Public2 property'; protected $protected = 'Protected2 property'; function displayValue() { echo $this->public; echo "\n"; echo $this->protected; echo "\n"; echo $this->private; //Undefined property: PHPExample2::$private in /workspace/Main.php on line 39 } } $val2 = new PHPExample2(); echo $val2->public; // Public will work without error echo "\n"; echo $val2->protected; // Fatal Error echo $val2->private; // Undefined property: PHPExample2::$private in /workspace/Main.php on line 46 $val2->displayValue(); // Shows Public2, Protected2, Undefined ?>
輸出 1:
輸出 2:在第 23 行註解後。
輸出 3:在第 24 行註解後。
輸出 4:對第 46、47 和 40 行進行評論後。
對上面程式碼的解釋:當你完全運行這段程式碼時,你一定會在一些行號處遇到致命錯誤,例如第25,26,45,52,53行。我們首先在主類別 PHPExample 中聲明所有 3 個屬性 public、private 和 protected,以顯示它們各自的單字。內聯 25,我們嘗試存取 PHPExample 類別的所有 3 個屬性。由於私有和受保護的範例無法在其類別之外訪問,因此我們在輸出中收到如圖所示的致命錯誤,並且僅顯示公共屬性。
在程式碼的後半部分,我們聲明了另一個類別 PHPExample2,我們在其中重新聲明受保護和公共屬性的顯示值。私人不允許這樣做,然後我們執行與上半場相同的動作。由於我們試圖呼叫此處未聲明的私有屬性,因此我們收到未定義屬性錯誤。
讓我們透過以下範例來了解 PHP 中私有方法和關鍵字的工作原理:
代碼:
<?php class NameExample { // Declaring first name as private value private $first_name; // Declaring last name as private value private $last_name; public $public = 'Displaying from public method'; private $private ='Displaying from private method'; // private function for setting the value for first_name private function fName($first_name) { $this->$first_name = $first_name; echo $this -> private; } // public function for setting the value for last_name public function lName($last_name) { $this->$last_name = $last_name; echo $this -> public; } // public function to display full name value public function dispName() { echo "My name is: " . $this->$first_name . " " . $this->$last_name; } } // Creating a new object named $arun of the class $arun = new NameExample(); // trying to access private class variables $arun->$first_name = "Arun"; // invalid $arun->$last_name = "Sharma"; // invalid // calling the public function to set $first_name and $last_name $john->fName("John"); $arun->lName("Wick"); // $arun-> dispName(); ?>
輸出 1:
輸出 2: 註第 32、33 和 36 行後。
上述程式碼說明:在上面的範例中,$first_name 和 $last_name 被宣告為類別 NameExample 的私有變量,因此不能使用類別物件直接呼叫它們。因此,當我們第一次嘗試執行程式碼時,我們會收到錯誤“未定義的變數:第 32 行 /workspace/NameExample.php 中的first_name”,第 33 行也是如此。當我們評論這兩行並再次運行程式碼時我們收到錯誤「未捕獲錯誤:在 /workspace/NameExample.php:36 中的 null 上呼叫成員函數 name()」。
這是因為我們已將函數 fName 聲明為私有,並且它正在嘗試存取該函數。當第 36 行也被註解並從方法名稱顯示時,程式碼運行順利,因為它是公共方法。
以下是在 PHP 中使用 Private 的優點:
以下是 PHP 中 Private 需要遵循的規則和規定:
私有是一種限制類別的變數、方法或屬性的可訪問性的方法。它們只能在聲明它們的類別中訪問,而不能從其擴展的任何子類別中訪問。父類別中的任何受保護屬性都可以被子類別覆蓋並公開,但不能設為私有。
以上是PHP 中的私有的詳細內容。更多資訊請關注PHP中文網其他相關文章!