php對象靜態static,php 靜態變量

本文目錄一覽:

說說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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:43
下一篇 2024-12-15 12:43

相關推薦

  • int類型變量的細節與注意事項

    本文將從 int 類型變量的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變量進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變量。 一、定義與聲明 int…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python input參數變量用法介紹

    本文將從多個方面對Python input括號里參數變量進行闡述與詳解,並提供相應的代碼示例。 一、基本介紹 Python input()函數用於獲取用戶輸入。當程序運行到inpu…

    編程 2025-04-29
  • Centos7配置靜態ip

    本文將詳細闡述如何在Centos7系統中配置靜態ip。 一、查看網絡接口 在配置靜態ip之前,我們首先需要查看系統中的網絡接口,以確定我們需要配置的網卡是哪一個。 ifconfig…

    編程 2025-04-29
  • Python匿名變量的使用方法

    Python中的匿名變量是指使用“_”來代替變量名的特殊變量。這篇文章將從多個方面介紹匿名變量的使用方法。 一、作為佔位符 匿名變量通常用作佔位符,用於代替一個不需要使用的變量。例…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 面向對象編程、類和對象

    面向對象編程(Object-Oriented Programming, OOP)是一種編程方法,它將現實世界中的事物抽象為對象(Object),對象的屬性和方法被封裝成類(Clas…

    編程 2025-04-29
  • Python變量在內存中的存儲

    該文章將從多個方面對Python變量在內存中的存儲進行詳細闡述,包括變量的聲明和賦值、變量的引用和指向、內存地址的變化、內存管理機制等。 一、聲明和賦值 在Python中,變量聲明…

    編程 2025-04-29
  • Python變量類型用法介紹

    Python是一種解釋型編程語言,它提供了豐富的數據類型,包括數字、字符串、列表、元組、集合、字典等。Python變量類型的定義是Python程序開發的基礎,本文將從以下幾個方面對…

    編程 2025-04-28
  • Python print輸出變量

    Python是一種腳本語言,語法簡單易懂,目前被廣泛應用於數據處理、人工智能、web開發、遊戲開發等領域。其中print函數是Python中最常用的函數之一,用於將變量輸出到控制台…

    編程 2025-04-28

發表回復

登錄後才能評論