最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解php用static方法的原因

 更新時(shí)間:2018年09月12日 09:49:33   投稿:laozhang  
這篇文章給大家分享了關(guān)于在PHP中使用static方法的原因以及相關(guān)實(shí)例代碼,有需要的朋友們參考下。

靜態(tài)方法不需要所在類(lèi)被實(shí)例化就可以直接使用。

靜態(tài)方法效率上要比實(shí)例化高,靜態(tài)方法的缺點(diǎn)是不自動(dòng)進(jìn)行銷(xiāo)毀,而實(shí)例化的則可以做銷(xiāo)毀。

靜態(tài)方法和靜態(tài)變量創(chuàng)建后始終使用同一塊內(nèi)存,而使用實(shí)例的方式會(huì)創(chuàng)建多個(gè)內(nèi)存。

static全局變量和普通全局變量,static局部變量和普通局部變量,static函數(shù)與普通函數(shù)的區(qū)別?下面本文將一一為你解答?! ?br />

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

(2)從以上分析可以看出, 把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲(chǔ)方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域,限制了它的使用范圍。  

(3)static函數(shù)與普通函數(shù)作用域不同,僅在本文件。只在當(dāng)前源文件中使用的函數(shù)應(yīng)該說(shuō)明為內(nèi)部函數(shù)(static),內(nèi)部函數(shù)應(yīng)該在當(dāng)前源文件中說(shuō)明和定義。對(duì)于可在當(dāng)前源文件以外使用的函數(shù),應(yīng)該在一個(gè)頭文件中說(shuō)明,要使用這些函數(shù)的源文件要包含這個(gè)頭文件。

如果能將類(lèi)的方法定義成static,就盡量定義成static,它的速度會(huì)提升將近4倍。

實(shí)踐是檢驗(yàn)代碼執(zhí)行效率的唯一標(biāo)準(zhǔn),于是趁著下班回家有點(diǎn)時(shí)間,做了個(gè)小測(cè)試:

先上測(cè)試代碼(如果有不對(duì)的地方,請(qǐng)大家指正哈):

測(cè)試環(huán)境:

/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;

循環(huán)執(zhí)行一千萬(wàn)次執(zhí)行結(jié)果如下:

/test # php staticTest.php

2.2938342094421

1.1871800422668

第二次執(zhí)行結(jié)果:

2.303295135498

1.1807670593262

執(zhí)行很多次以后,都在2.3和1.18附近。可見(jiàn),雖然沒(méi)有文章中說(shuō)的效率提升那么恐怖,性能的提升方面確實(shí)提升了一倍左右。

因此還是建議:

如果能將類(lèi)的方法定義成static,就盡量定義成static,它的速度會(huì)提升將近1倍。

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

相關(guān)文章

  • PHP7新功能總結(jié)

    PHP7新功能總結(jié)

    在本文里我們給大家介紹了關(guān)于PHP7新功能以及相關(guān)知識(shí)點(diǎn)內(nèi)容,正在學(xué)習(xí)PHP7的朋友們參考下。
    2019-04-04
  • PHP+Javascript實(shí)現(xiàn)在線(xiàn)拍照功能實(shí)例

    PHP+Javascript實(shí)現(xiàn)在線(xiàn)拍照功能實(shí)例

    這篇文章主要介紹了PHP+Javascript實(shí)現(xiàn)在線(xiàn)拍照功能的方法,涉及javascript插件的使用及php圖片上傳的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • PHP控制網(wǎng)頁(yè)過(guò)期時(shí)間的代碼

    PHP控制網(wǎng)頁(yè)過(guò)期時(shí)間的代碼

    有時(shí)我們需要控制主頁(yè)之類(lèi)的網(wǎng)頁(yè)過(guò)期時(shí)間。但我們比如使用的是Chinacache的CDN,那要怎么樣設(shè)計(jì)才能讓他緩存我的內(nèi)容.
    2008-09-09
  • php7 新增功能實(shí)例總結(jié)

    php7 新增功能實(shí)例總結(jié)

    這篇文章主要介紹了php7 新增功能,結(jié)合實(shí)例形式總結(jié)分析了php7 新增功能、特性及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • PHP測(cè)試程序運(yùn)行時(shí)間的類(lèi)

    PHP測(cè)試程序運(yùn)行時(shí)間的類(lèi)

    今天,為了測(cè)試一斷程序的運(yùn)行時(shí)間,特意寫(xiě)了這么一個(gè)類(lèi),并添加了注釋?zhuān)M麑?duì)大家有所幫助
    2012-02-02
  • 如何修改和添加Apache的默認(rèn)站點(diǎn)目錄

    如何修改和添加Apache的默認(rèn)站點(diǎn)目錄

    本篇文章是對(duì)修改和添加Apache的默認(rèn)站點(diǎn)目錄方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • PHP中文豎排轉(zhuǎn)換實(shí)現(xiàn)方法

    PHP中文豎排轉(zhuǎn)換實(shí)現(xiàn)方法

    這篇文章主要介紹了PHP中文豎排轉(zhuǎn)換實(shí)現(xiàn)方法,一般大家的閱讀習(xí)慣是一行行瀏覽,很少使用豎排進(jìn)行閱讀,本文介紹了PHP實(shí)現(xiàn)中文豎排轉(zhuǎn)換,感興趣的小伙伴們可以參考一下
    2015-10-10
  • windows服務(wù)器使用IIS時(shí)thinkphp搜索中文無(wú)效問(wèn)題

    windows服務(wù)器使用IIS時(shí)thinkphp搜索中文無(wú)效問(wèn)題

    在用ThinkPHP開(kāi)發(fā)的網(wǎng)站,在linux服務(wù)器下使用過(guò)一段時(shí)間,一切正常。但是更換到windows服務(wù)器時(shí),發(fā)現(xiàn)搜索的時(shí)候,無(wú)法搜索中文,查不出相應(yīng)的結(jié)果。查看數(shù)據(jù)庫(kù)發(fā)現(xiàn)數(shù)據(jù)是存在的。linux服務(wù)器下正常,而且搜索數(shù)字或字母程序正常,說(shuō)明程序是沒(méi)有任何問(wèn)題的。
    2023-06-06
  • php SQLite學(xué)習(xí)筆記與常見(jiàn)問(wèn)題分析

    php SQLite學(xué)習(xí)筆記與常見(jiàn)問(wèn)題分析

    php SQLite學(xué)習(xí)資料收集,與一些常見(jiàn)問(wèn)題的解決方法
    2008-07-07
  • PHP實(shí)現(xiàn)的一致性哈希算法完整實(shí)例

    PHP實(shí)現(xiàn)的一致性哈希算法完整實(shí)例

    這篇文章主要介紹了PHP實(shí)現(xiàn)的一致性哈希算法,以完整實(shí)例形式分析了PHP哈希算法的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11

最新評(píng)論

彝良县| 乌恰县| 靖远县| 田林县| 上犹县| 县级市| 玉田县| 徐汇区| 香港| 安多县| 沾益县| 广东省| 双城市| 长宁区| 共和县| 巴彦淖尔市| 东兰县| 循化| 石嘴山市| 文山县| 邳州市| 新和县| 如东县| 莎车县| 穆棱市| 长寿区| 德州市| 五河县| 上杭县| 内江市| 武城县| 白银市| 阜新市| 柳江县| 黑山县| 获嘉县| 黑龙江省| 洪湖市| 盈江县| 开化县| 利川市|