雙冒號一般是用在靜態方法、靜態變數的調用,此時類別不需要實例化。而是用箭頭運算子- > 時,必須要將類別進行實例化(或在類別的內部呼叫也可以。)
雙冒號(::)是位置訪問符號。並不僅僅是指靜態方法和變數。而是表示叫冒號得左邊這一坨呼叫冒號的右邊這一坨。這樣一個意義。 so。 。左邊不能寫$self。因為$self先解析,除非前面就定義了$self這個變數是指向自己的。
在php最新版本。雙冒號就是完全遵循這個作用得用法了。 。可以取代- > 呼叫物件得變數。因為是位置指示符嘛。 。
就是為了區分物件的方法和屬性,和是存取類別的靜態方法和靜態變量,類別的靜態方法和靜態變數是類別公用的,不需要實例化也能訪問,而物件的方法和屬性是每個物件特有的,因此必須先實例化。其他語言如C++,JAVA等也是一樣的(當然它們提供的存取符號可能不一樣)
#- > 是存取物件的方法和屬性,::是存取類別的靜態方法和靜態變數
->物件存取和 ::位置存取
理論部分前面各位都說過了,確實也都是對的。但是php有一點不同。
預設配置中,php並沒有嚴格要求 :: 一定呼叫的是static方法
測試以下程式碼就可以知道
class t{ public $v = 1; public function getVar(){ return 1;//$this->v; } } class xxxxx { public function actionIndex() { $x = t::getVar(); $t = new t(); $x = $t->getVar(); } } 作者:楚天乐 链接:https://www.zhihu.com/question/19782824/answer/35943595 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
以上是php裡的雙冒號範圍解析運算子與箭頭 -> 運算子的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!