PHP 中的私有

WBOY
發布: 2024-08-29 13:08:07
原創
876 人瀏覽過

關鍵字是在程式中用作保留的單詞,並賦予它們特殊的含義。它們可以是命令或參數。與所有其他程式語言一樣,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:

PHP 中的私有

輸出 2:在第 23 行註解後。

PHP 中的私有

輸出 3:在第 24 行註解後。

PHP 中的私有

輸出 4:對第 46、47 和 40 行進行評論後。

PHP 中的私有

對上面程式碼的解釋:當你完全運行這段程式碼時,你一定會在一些行號處遇到致命錯誤,例如第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:

PHP 中的私有

輸出 2: 註第 32、33 和 36 行後。

PHP 中的私有

上述程式碼說明:在上面的範例中,$first_name 和 $last_name 被宣告為類別 NameExample 的私有變量,因此不能使用類別物件直接呼叫它們。因此,當我們第一次嘗試執行程式碼時,我們會收到錯誤“未定義的變數:第 32 行 /workspace/NameExample.php 中的first_name”,第 33 行也是如此。當我們評論這兩行並再次運行程式碼時我們收到錯誤「未捕獲錯誤:在 /workspace/NameExample.php:36 中的 null 上呼叫成員函數 name()」。

這是因為我們已將函數 fName 聲明為私有,並且它正在嘗試存取該函數。當第 36 行也被註解並從方法名稱顯示時,程式碼運行順利,因為它是公共方法。

在 PHP 中使用 Private 的優點

以下是在 PHP 中使用 Private 的優點:

  1. 私有變數仍然可以透過使用「getters」和「setters」來訪問,這使編碼人員可以更好地控制存取資料。
  2. 私有反過來意味著封裝,它將變數從一個類別分離到另一個類,從而保護對類別內部所做的更改。
  3. 私有變數的行為被限制在特定的類別內,也避免了混亂。
  4. 私有變數可以輕鬆重新實現,而不會有在任何地方破壞程式碼的風險。

PHP 私人規則與規定

以下是 PHP 中 Private 需要遵循的規則和規定:

  1. 對於任何變數成員或方法,必須始終宣告其範圍,無論它屬於公有、受保護或私有。
  2. 依照方法的順序,應遵循以下順序:public,>受保護>私人
  3. 私有變數無法從透過從聲明它們的主類別擴展它們而聲明的子類別中存取。但是,如果在子類別中再次聲明相同的私有屬性,則可以存取它,但不建議這樣做。
  4. 因此,在類別中宣告的私有方法只能在該類別內部呼叫。

結論

私有是一種限制類別的變數、方法或屬性的可訪問性的方法。它們只能在聲明它們的類別中訪問,而不能從其擴展的任何子類別中訪問。父類別中的任何受保護屬性都可以被子類別覆蓋並公開,但不能設為私有。

以上是PHP 中的私有的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!