php的 呼叫 和 兩個冒號 比較

2021-08-14 16:14:42 字數 693 閱讀 2529

學習php,遇到這麼個問題

class mypc }

正常情況下:

$p = new mypc();

$p->show();

這樣是沒問題的,可是這樣卻也可以呼叫到show方法

mypc::show();

php並沒有報錯,由此,便產生了疑問。

大家都知道靜態類可以用類名.方法名的方式呼叫,在php中,對於::的解釋也都是呼叫類中的靜態成員。但是這個show方法並沒有static關鍵字,也就是說它並不是「顯式」宣告的靜態方法。請注意,這個「顯示」。在.net中,如果沒有static關鍵字的話,類名是無法.出來這個方法的,php中卻似乎沒有這個限制,這樣使用後,似乎自動就將show方法作為了靜態方法來呼叫。如此一來,如果不考慮屬性問題,整個類都是方法,那麼我有何必去new這個類?

在php100的論壇問了半天,也沒有特別準確的答案,姑且只能如此認為:php自動轉化為靜態方法,不用你去new物件而開闢新的記憶體位址,直接就可以使用該類的方法,該方法也將作為該類的乙個成員屬性而存在,不因為new物件而占用單獨的記憶體。

既然這樣,可能帶來的隱患是:如果將變數$name的static去掉便會報錯。方法裡面的屬性必須也都是靜態的才能呼叫。還有就是這個對不是靜態的屬性是無法呼叫到的,比如去掉$name的static後,mypc::$name是不行的。

好處當然也顯而易見,能夠自動轉化為靜態方法也就減少了記憶體的損耗。

乙個冒號和兩個冒號的區別

雙冒號是在css3規範中引入的,用於區分偽類和偽元素乙個冒號 偽類以下是w3c上列出的偽類 w3c w3c 列指示出該屬性在哪個 css 版本中定義 css1 還是 css2 屬性描述 css active 向被啟用的元素新增樣式。1 focus 向擁有鍵盤輸入焦點的元素新增樣式。2 hover 當...

CSS中乙個冒號和兩個冒號的區別

單冒號 用於css3偽類,雙冒號 用於css3偽元素。偽元素由雙冒號和偽元素名稱組成。雙冒號是在css3規範中引入的,用於區分偽類和偽元素。但是偽類相容現存樣式,瀏覽器需要同時支援舊的偽類,比如 first line first letter before after等。對於css2之前已有的偽元素...

php比較兩個變數的值 php如何交換兩個變數的值

本篇文章主要給大家介紹php交換兩個變數的值的具體實現方法。交換兩個變數是指相互交換變數的值。通常,這是通過記憶體中的資料完成的。交換兩個變數的方法有兩種 下面我們就通過具體的 示例為大家介紹php交換兩個變數值的方法。方法一 使用第三個變數交換兩個數字 如下 a 15 b 27 echo 交換前的...