溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP中靜態(tài)方法、靜態(tài)屬性和常量屬性三者的區(qū)別是什么

發(fā)布時(shí)間:2021-02-18 15:05:13 來源:億速云 閱讀:261 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)PHP中靜態(tài)方法、靜態(tài)屬性和常量屬性三者的區(qū)別是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

PHP中若使用static關(guān)鍵字來修飾屬性、方法,稱這些屬性、方法為靜態(tài)屬性、靜態(tài)方法。static關(guān)鍵字聲明一個(gè)屬性或方法是和類相關(guān)的,而不是和類的某個(gè)特定的實(shí)例相關(guān),因此,這類屬性或方法也稱為“類屬性”或“類方法”。

程序中為什么要使用靜態(tài)方法和屬性呢?它們有幾個(gè)特性是比較有用的:不需要實(shí)例化類就可以訪問靜態(tài)方法和屬性,在代碼的任何地方都可以使用!

<?php
class Example{
 static public $num = 0;
 static public function staticFunc(){
 self::$num++;
 print self::$num;
 }
}
echo Example::$num;
echo Example::staticFunc();
?>

需要注意的是:

1.靜態(tài)方法不能訪問普通屬性,只能訪問靜態(tài)屬性

2.靜態(tài)方法是以類為作用域的,所以不用實(shí)例化就可以使用::來連接靜態(tài)屬性和靜態(tài)方法

3.靜態(tài)方法中不能使用偽關(guān)鍵詞

那么常量屬性和靜態(tài)屬性有什么區(qū)別呢?

<?php
class Example{
  const NUM = 0;
  //...
}
?>

常量屬性不以$開頭 而是以大寫字母命名,他與靜態(tài)屬性的區(qū)別是它不可以被重新復(fù)制,否則會(huì)解析錯(cuò)誤。

常量屬性

有些屬性是不能改變的

在PHP 5可以在類中定義常量屬性,和全局變量一樣,類常量一旦設(shè)置后就不能改變。常量屬性用const關(guān)鍵字來聲明。常量不像常規(guī)屬性那樣以 $ 開頭。按照慣例,只能用大寫字母來命名常量,如下所示:

class shopProduct {
    constAVAILABLE = 0;
    //…
}

常量屬性只包含基本數(shù)據(jù)類型的值。不能將一個(gè)對(duì)象指派給常量。像靜態(tài)屬性一樣,只能通過類而不能通過類的實(shí)例訪問常量屬性。引用常量時(shí)不需要用 $ 作為前導(dǎo)符,如下所示:

echoshopProduct::AVAILABLE;

給已經(jīng)聲明過的常量賦值會(huì)引起解析錯(cuò)誤。

當(dāng)需要在類的所有實(shí)例中都能訪問某個(gè)屬性,并且屬性值無需改變時(shí),應(yīng)該使用常量。

看完上述內(nèi)容,你們對(duì)PHP中靜態(tài)方法、靜態(tài)屬性和常量屬性三者的區(qū)別是什么有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI