簡體   English   中英

php中__的含義是什么?

[英]What is the convention of __ means in php?

我看到一些ppl寫代碼如下:

他們在變量的命名中使用__:

   public static function getInstance(){
        if(self::$__instance == NULL) self::$__instance = new SCFormatter();
        return self::$__instance;
    }

不僅是變量,還有功能:

   private function __clone(){}

php編碼器使用“__”作為前綴是否有任何特殊含義。 謝謝。

PHP __用於__get__set__clonemagic methods

在變量或函數之前的歷史_意味着它是私有的,因為PHP 4沒有私有,公共或受保護的方法。

它不僅適用於PHP 例如,在Python中,函數和變量的_前綴用於相同的目的。

我建議避免將函數命名為__ (雙下划線),因為PHP開發人員可以在下一版本的語言中添加相同的魔術函數,因此會破壞您的代碼。 你可以使用一個下划線 - 它並不危險,因為它不會影響語言功能。 雖然有可能,但請注意,不建議使用_作為屬性/方法名稱前綴,因為它不符合當今的大多數編碼標准。

沒有特殊的句法意義。 但是,PHP團隊非常不鼓勵在名稱的開頭使用__ ,因為您可能會破壞未來的核心PHP功能。

PHP嘗試使用__為核心名稱添加前綴,這樣它們就不會干擾您的名字。 例如,有一個__construct()方法,一個__sleep()方法,一個__wakeup()方法等。它們沒有將它們稱為construct()sleep()wakeup()因為它們可能會干擾您自己的名字。

這是一般做法。 例如,在Linux內核中也是如此。 系統函數以__為前綴,因此它們不會干擾您的命名。 如果你開始使用__自己的名字添加前綴,那么你將開始干擾他們的命名,這將破壞系統功能,或者在你最不希望的時候將來很可能破壞你的應用程序。

如果PHP團隊以某種方式決定在名為$__instance每個類中創建一個靜態變量,那么所有腳本將突然開始破壞,你不會知道原因。

Magic手冊的PHP手冊頁中引用警告:

PHP保留所有以__開頭的函數名稱作為魔法。 除非您需要一些記錄的魔術功能,否則建議您不要在PHP中使用帶__函數名。

關於__clone() - 它是一個PHP功能,進一步證明用__為自己的名字添加前綴也可能非常令人困惑。

所有PHP Magic方法都以雙下划線開頭。 這包括__clone() 雖然它不是由PHP強制執行的,但是不鼓勵以雙下划線開頭命名自己的方法,因為這些名稱可能會與未來的PHP魔術方法發生沖突。

它們通常用於表示私有變量。 基本上變量和方法不能具有相同的名稱,因此它可以提供沒有沖突名稱的私有變量。 如果你走那條路,我會用一個下划線。

另外如其他地方提到的php有魔術方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM