php中const與static的區別與使用

2021-08-19 23:58:49 字數 2305 閱讀 5530

首先關於const 在php的類內部只可以修飾成員屬性,不可以修飾方法,如下:

[php]view plaincopy

1

2

3

4

5

classtest

}

const在使用的時候不需要新增許可權修飾字段,但是在呼叫const修飾的常量時是需要技巧的,因為常量是屬於整個類的,而不是屬於某個物件,所以在呼叫的時候需要使用類名加網域名稱修飾符,例:

[php]view plaincopy

1

2

3

4

echotest::path;

//也可以使用下面的方法呼叫

$test=newtest();

echo$test::path;

但是在類內部呼叫的時候就會出現問題,如何在類內部獲取當前類名或者當前物件名(php可以根據物件獲取類名-反射),php中給我們提供了兩個特殊的關鍵字,如:

[php]view plaincopy

1

2

3

4

5

6

7

classtest

}

其中self(不加$)代表當前類名,$this代表當前物件。這樣,我們就可以在類內部呼叫const修飾的常量了。

接下來我們說說static

const雖然很好用,但是一經定義就無法修改值了,但是有的時候我們需要乙個屬於類的屬性,但是又可以修改其值,比如統計此類構造了幾個物件,這個時候就是使用static的時候了,在static修飾類的成員變數的時候,它的使用方法基本與const一樣,區別就在於static修飾的屬性可以新增許可權(7.1的php中const也可以新增,以前的不能),並且static修飾的成員變數的值是可以修改的。

但是當static修飾成員方法的時候,使用方法有一點改變,在類的內部,static修飾的方法體內部,無法訪問當前類的任何普通成員變數,準確的來說是無法使用關鍵字$this,只可以使用當前類的靜態成員變數,和類常量。

[php]view plaincopy

1

2

3

4

5

6

7

8

9

10

11

12

13

14

classtest

publicstaticfunctionarea($r)

}

在使用static的過程中,呼叫的方法與呼叫static修飾的變數不同,既可以通過類名呼叫,也可以通過物件名呼叫,比如:

[php]view plaincopy

1

2

3

4

echo'周長:'. test::lenth(1).'

';

echo'面積:'.test::area(1).'

';

$per=newtest();

echo$per->lenth(3);

以上這兩種呼叫方式都是合法的。本文由:整理發布。

php中const與static的區別與使用

首先關於const 在php的類內部只可以修飾成員屬性,不可以修飾方法,如下 class test const在使用的時候不需要新增許可權修飾字段,但是在呼叫const修飾的常量時是需要技巧的,因為常量是屬於整個類的,而不是屬於某個物件,所以在呼叫的時候需要使用類名加網域名稱修飾符,例 echo t...

PHP中const與define的區別

在php中定義常量時,可用const與define這兩種方式,那他們到底有什麼區別呢?1.const用於類成員變數定義,一旦定義且不能改變其值。define定義全域性常量,在任何地方都可以訪問。2.define不能定義在類中,而const必須定義在類中,並且const定義的變數必須通過類名 變數名來...

php 中的 define 與 const 的比較

都是定義常量 下面的 解釋下兩者的區別 只能使用在類成員 指令碼全域性都能使用 區分大小寫 賦值型別 解釋constyn y靜態標量 結構語句 編譯快 defineny n可計算的變數 函式語句 能在條件語句使用 const 的定義及使用方法 class foo echo foo test echo...