首頁  >  文章  >  後端開發  >  php可以私有靜態方法嗎

php可以私有靜態方法嗎

青灯夜游
青灯夜游原創
2021-06-02 18:52:192282瀏覽

php可以私有靜態方法。靜態私有方法提供了一種從類別外部隱藏靜態程式碼的方法;如果幾種不同的方法(靜態或非靜態)需要使用它,即程式碼重複使用,這可能是有用的。

php可以私有靜態方法嗎

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

我明白靜態意味著一個物件不需要被實例化為該屬性/方法可用。我也明白,這適用於私有財產和方法以及公共方法。我想知道的是什麼是靜態私有功能可以讓你獲益。例如:

class Beer {
    static private $beertype = "IPA";
    private function getBeerType() {
            return self::$beertype;
    }
    static public function BeerInfo() {
            return self::getBeerType();
    }
}
print Beer::BeerInfo() . "\n";

只要從靜態公有方法呼叫getBeerType(),私有方法就會執行得很好,沒有實例化的物件。如果靜態公有方法可以存取所有私有方法(靜態和非靜態),那麼宣告方法static private的好處是什麼?

在嚴格的錯誤報告打開的情況下,我確實得到了我應該使getBeerType()靜態的警告,儘管它仍然允許我運行程式碼。我做了一些研究,似乎其他語言(Java)將強制您在靜態公共方法呼叫時將私有方法宣告為靜態方法。看起來像PHP讓你擺脫這一點。有沒有辦法強制它拋出錯誤而不執行?

靜態私有方法提供了一種從類別外部隱藏靜態程式碼的方法。如果幾種不同的方法(靜態或非靜態)需要使用它,即程式碼重複使用,這可能是有用的。

靜態方法和靜態變數(有時稱為類別方法和類別變數)是將程式碼和資料放入一種命名空間的一種方式。您也可以將類別變數視為附加到類別本身的變量,其中(根據定義)只有一個,而不是該類別的實例,其中可能有零個,一個或多個。類別方法和類別變數可用於處理不僅在所有實例中保持相同但與實際相同的屬性。

類別變數的一個範例是ORM實體物件中的資料庫處理程序。所有實例都是自己的對象,但是他們都需要存取相同的資料庫處理程序來載入和保存自己。

私人與公眾是一個完全獨立的品質,我懷疑你在絆倒什麼。私有方法不能被調用,私有變數不能從類別之外的程式碼存取。私有方法通常用於在物件外部不能存取的物件上實現“內部”邏輯。這種限制可以透過實例方法和類別方法來實現。

私有類別方法的範例可以是工廠方法。可能有三個工廠呼叫來創建可能在提供的參數方面不同的物件。但大部分操作是一樣的。所以它進入非私有工廠方法呼叫的私有靜態方法。

推薦學習:《PHP影片教學

以上是php可以私有靜態方法嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn