日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php中的静态变量

發布時間:2024/1/17 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php中的静态变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、靜態變量
1.靜態變量是只存在于作用域的變量,不過,在函數執行完成以后,這種變量的值不會丟失,也就是說,在下一次調用這個函數時,變量仍會記得原來的值。
2.將表達式計算出來的結果付給靜態變量是不合法的。表達式是指自身的值會發生變化的任何語句,例如(1+1),$variable,anyfunc()都是表達式。
3. 你也許會想,定義靜態變量似乎并不是很有用,因為可以用全局變量輕松地獲取同樣的結果。然而,全局變量可以被所有函數訪問,所以如果兩個或者更多本來應該 是獨立的函數使用了相同名稱的變量,就會導致沖突;并且,比起引入全局變量,使用靜態變量也不需要更多的語法。因此,在只有一個函數需要訪問某個變量時, 我們應該優先使用靜態變量,而不是全局變量。一般說的靜態變量都定義在函數中,被這個函數所用

?

二、類中靜態元素的使用
4.在類中,static關鍵字有兩種主要的用法,一種是用來定義靜態成員,另一種是用來定義靜態方法。
5.靜態成員是一種類變量,可以把它看成是屬于整個類而不是屬于類的某個實例。與一般的實例變量不同的是,靜態成員只保留一個變量值,而這個變量值對所有的實例都是有效的,也就是說,所有的實例共享這個成員。
6.$this只表示當前類的實例,self::表示類本身(后面加$)
7.作用域限定操作符::
通 過作用域限定操作符,我們可以使用兩個系統定義的作用域:self和parent。此外,php5.3還提供了static作用域。self表示的是當前 類的作用域,不過與$this不同的是,它不表示類的某個特定的實例。在類之外的代碼中不能使用self這個操作符,而且它不能識別自己在繼承樹層次結構中的位 置。也就是說,在擴展類中使用self作用域時,self可以調用基類中聲明的方法,但它調用的總是已經在擴展類中重寫的方法。(相當于java中方法的 覆蓋,明確調用父類的方法用parent)

重寫父類的靜態變量就在子類中定義一樣的靜態變量

Php代碼 ? <span style="font-size: small;"><?php class aaa { function bbb(){ echo '用雙冒號::調用類的方法!'; } } //調用1: $a = new aaa(); $a->bbb(); //調用2: aaa::bbb(); ?> </span>

  

?

兩種方法得到的結果是一樣的.

想不明白,為什么普通方法bbb也可以直接用類名::調用,這和java里面是不一樣的

個人理解:只要被調用的普通方法里不出現$this->xx ($this只表示當前類的實例),普通方法也可以認為是直接屬于類的,所以可以直接用類名調用,而不像java中方法必須要聲明為static才能用類 名直接調用(php6在靜態方法的操作方面做了幾處修改,首先在訪問非靜態方法時,不再使用::操作符!這種方式要被干掉了吧。。。)


幫助父類調用子類的方法
php5.3中提出的static:: 作用域使我們不再需要使用self::和parent::。當希望指向最終的實現類時,就可以使用static::,這個限定符會在代碼執行之前立即計算 出繼承層次結構上最后那個類的成員。這一過程被稱為延遲綁定。好像沒看出有什么用,直接在父類中new那個最終實現類的對象然后調用不就行了嗎?但是如果 你不知道那個最終類叫什么,覆蓋的方法實現了什么樣的效果,這時候似乎就有用了。static::作用域也可以應用在靜態方法上,這樣從父類可以靜態的調 用子類的方法。

參考:http://hualong.iteye.com/blog/1051599

?

?

總結

以上是生活随笔為你收集整理的php中的静态变量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。