本文目錄一覽:
- 1、說說php面向對象編程時static,public,private,protected 各有什麼意義
- 2、php中static 靜態變量和普通變量的區別
- 3、php面向對象static是什麼意思
- 4、PHP高手用白話講講Static(靜態)關鍵字是做什麼的
- 5、php 類中的static有什麼作用
- 6、php面向對象 的static在什麼情況下用
說說php面向對象編程時static,public,private,protected 各有什麼意義
staticpublic與publicstatic是等價的,這兩者只是兩個修飾符的順序不同。根據oracle.com教材中第八章的描述,如果兩個或兩個以上的(不同的)字段修飾符出現在字段聲明,它們出現的順序需與FieldModifier一致,這只是習慣,但不是必需的。部分修飾符說明:public是訪問權限修飾符,用於控制外界對類內部成員的訪問,聲明為public的對象成員是完全共有的,外界可以隨意訪問,除此之外還有private,protected和默認。static控制類成員變化的修飾符。static是靜態成員修飾符,其修飾的靜態變量脫離具體對象獨立存在,在內存中之後一份拷貝,所有的對象都公用這一個存儲空間,所以對static修飾的靜態變量進行的修改對該類的所有對象都起作用。static修飾的靜態函數代表所有對象的統一操作,只能調用靜態變量。static是針對面向對象中的“多態”而提出來的,static修飾的靜態成員不存在多態性。附:FieldModifier順序
php中static 靜態變量和普通變量的區別
static變量和普通變量的區別:
static全局變量與普通全局變量區別:static全局變量只初使化一次,防止在其他文件單元中被引用;
static局部變量和普通局部變量區別:static局部變量只被初始化一次,下一次依據上一次結果值;
static函數與普通函數區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝。
具體的可以看下這篇文章,希望對你有幫助
php面向對象static是什麼意思
php中的變量作用範圍的另一個重要特性就是靜態變量(static 變量)。靜態變量僅在局部函數域中存在且只被初始化一次,當程序執行離開此作用域時,其值不會消失,會使用上次執行的結果。
?php
function Test()
{
$w3sky = 0;
echo $w3sky;
$w3sky++;
}
? 本函數每次調用時都會將 $w3sky 的值設為 0 並輸出 “0”。將變量加一的 $w3sky++ 沒有其到效果,因為一旦退出本函數則變量 $w3sky 就不存在了。要寫一個不會丟失本次計數值的計數函數,要將變量 $w3sky 定義為靜態(static)的:
如下:
?php
function Test()
{
static $w3sky = 0;
echo $w3sky;
$w3sky++;
}
? 本函數每調用Test()都會輸出 $w3sky 的值並加一。
靜態變量也提供了一種處理遞歸函數的方法。遞歸函數是一種自己調用自己的方法。寫遞歸函數時要小心,因為可能會無窮遞歸下去,沒有出口.務必確保 有方法來中止遞歸。以下這個簡單的函數遞歸計數到 10,使用靜態變量 $count 來判斷何時停止:
靜態變量與遞歸函數的例子:
?PHP
function Test()
{
static $count = 0;
$count++;
echo $count;
if ($count 10) {
Test();
}
$count–;
}
? 注: 靜態變量可以按照上面的例子聲明。如果在聲明中用表達式的結果對其賦值會導致解析錯誤。
聲明靜態變量例子:
?PHP
function foo(){
static $int = 0;// correct
static $int = 1+2; // wrong (as it is an expression)
static $int = sqrt(121); // wrong (as it is an expression too)
$int++;
echo $int;
}
?
PHP高手用白話講講Static(靜態)關鍵字是做什麼的
為了怕你以為我是複製粘貼的,以下皆為手打
在面向對象的語言中,類,對象的概念非常重要。
何為類,面向對象的語言中認為所有的代碼都可以被抽象為一個類,由屬性和方法來組成。
比如人類,人類明顯與其它的動物類不同,比如人會說話,人有感情,而小狗則不會說話。
而你可以說是是人類,但你不可以說人類是你。
你可以看成你是對象,對象由類來產生。這是面向對象的基本概念。
同時就有一個問題,每次去new豈不是很麻煩。
比如數學類,工具類。每次都new,不方便。因此就可以講此類方法定義為靜態的,就可以直接調用,省去了new的過程
php 類中的static有什麼作用
static 是C中很常用的修飾符,它被用來控制變量的存儲方式和可見性
static 聲明的變量在C語言中有兩方面的特徵:
1)、變量會被放在程序的全局存儲區中,這樣可以在下一次調用的時候還可以保持原來的賦值。這一點是它與堆棧變量和堆變量的區別。
2)、變量用static告知編譯器,自己僅僅在變量的作用範圍內可見。這一點是它與全局變量的區別。
2、問題:Static的理解
關於static變量,請選擇下面所有說法正確的內容:
A、若全局變量僅在單個C文件中訪問,則可以將這個變量修改為靜態全局變量,以降低模塊間的耦合度;
B、若全局變量僅由單個函數訪問,則可以將這個變量改為該函數的靜態局部變量,以降低模塊間的耦合度;
C、設計和使用訪問動態全局變量、靜態全局變量、靜態局部變量的函數時,需要考慮重入問題;
D、靜態全局變量過大,可那會導致堆棧溢出。
答案與分析:
對於A,B:根據本篇概述部分的說明b),我們知道,A,B都是正確的。
對於C:根據本篇概述部分的說明a),我們知道,C是正確的(所謂的函數重入問題,下面會詳細闡述)。
對於D:靜態變量放在程序的全局數據區,而不是在堆棧中分配,所以不可能導致堆棧溢出,D是錯誤的。
因此,答案是A、B、C。
3、問題:不可重入函數
曾經設計過如下一個函數,在代碼檢視的時候被提醒有bug,因為這個函數是不可重入的,為什麼?
unsigned int sum_int( unsigned int base )
{
unsigned int index;
static unsigned int sum = 0; // 注意,是static類型的。
for (index = 1; index = base; index++)
{
sum += index;
}
return sum;
}
答案與分析:
所謂的函數是可重入的(也可以說是可預測的),即:只要輸入數據相同就應產生相同的輸出。
這個函數之所以是不可預測的,就是因為函數中使用了static變量,因為static變量的特徵,這樣的函數被稱為:帶“內部存儲器”功能的的函數。因此如果我們需要一個可重入的函數,那麼,我們一定要避免函數中使用static變量,這種函數中的static變量,使用原則是,能不用盡量不用。
將上面的函數修改為可重入的函數很簡單,只要將聲明sum變量中的static關鍵字去掉,變量sum即變為一個auto 類型的變量,函數即變為一個可重入的函數。
當然,有些時候,在函數中是必須要使用static變量的,比如當某函數的返回值為指針類型時,則必須是static的局部變量的地址作為返回值,若為auto類型,則返回為錯指針。
php面向對象 的static在什麼情況下用
靜態變量,沒有什麼特定的情況。就像public一樣,只不過調用方法不一樣。一個是$this-變量名,一個是self::變量名
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/256921.html