中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php為什么要用static方法

發布時間:2020-11-04 10:32:04 來源:億速云 閱讀:124 作者:小新 欄目:編程語言

這篇文章主要介紹了php為什么要用static方法,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

php用static方法的原因:1、全局變量的說明之前再冠以static 就構成了靜態的全局變量;2、static函數與普通函數作用域不同,僅在本文件;3、如果能將類的方法定義成static,就盡量定義成static,其速度會提升將近4倍。

php用static方法的原因:

(1)全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量。全局變量本身就是靜態存儲方式, 靜態全局變量當然也是靜態存儲方式。這兩者在存儲方式上并無不同。這兩者的區別在于非靜態全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。 而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效,在同一源程序的其它源文件中不能使用它。由于靜態全局變量的作用域局限于一個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。

(2)從以上分析可以看出, 把局部變量改變為靜態變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜態變量后是改變了它的作用域,限制了它的使用范圍。  

(3)static函數與普通函數作用域不同,僅在本文件。只在當前源文件中使用的函數應該說明為內部函數(static),內部函數應該在當前源文件中說明和定義。對于可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件。

如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近4倍。

實踐是檢驗代碼執行效率的唯一標準,于是趁著下班回家有點時間,做了個小測試:

先上測試代碼(如果有不對的地方,請大家指正哈):

測試環境:

/test # php -v
PHP 5.4.24 (cli) (built: Jan 19 2014 21:32:15) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
/test # uname -a
Darwin 192.168.0.101 13.1.0 Darwin 
Kernel Version 13.1.0: Thu Jan 16 19:40:37 PST 2014; 
root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64
<?php
class staticTest {
public function test() {
$i = 0; 
$i++;
}
public static function testStatic() {
$i = 0;
$i++;
} 
}
$start = microtime(true);
for($i=0;$i<10000000;$i++) {
$test = new staticTest();
$test->test();
}
echo (microtime(true) - $start) ."\\n";
$start = microtime(true);
for($i=0;$i<10000000;$i++) {
staticTest::testStatic();
}
echo microtime(true) - $start;

循環執行一千萬次執行結果如下:

/test # php staticTest.php
2.2938342094421
1.1871800422668

第二次執行結果:

2.303295135498
1.1807670593262

執行很多次以后,都在2.3和1.18附近。可見,雖然沒有文章中說的效率提升那么恐怖,性能的提升方面確實提升了一倍左右。

因此還是建議:

如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近1倍。

對于一個正常的php框架,里面的類和方法還是非常多的,如果我們能夠做成靜態方法,還是使用靜態方法比較好,效率比較高。

感謝你能夠認真閱讀完這篇文章,希望小編分享php為什么要用static方法內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

原平市| 福州市| 马山县| 北川| 黄大仙区| 商洛市| 伊金霍洛旗| 陆丰市| 来凤县| 中阳县| 九龙县| 井冈山市| 石家庄市| 儋州市| 辽宁省| 双流县| 周口市| 雷波县| 津南区| 永泰县| 涟源市| 安多县| 榆社县| 嘉善县| 仪征市| 青田县| 东丰县| 虎林市| 桦川县| 隆尧县| 银川市| 油尖旺区| 富源县| 西畴县| 涟源市| 徐闻县| 阿城市| 和田市| 德江县| 富裕县| 万源市|