``` (2)靜態變數V.S靜態函數 ``` 車型; //Notthing 什麼也沒有(進入overloading) //使用車子裡面的函數 $車子->車單("Toyota! "); ?> ``` 5. 用途:static 主要用途在於定義一個變數空間,讓函式或類別可以保留住該變數的值,直到下次的存取。 - 需要記住上一次函式執行的結果。 - 某些可以保留執行結果的遞迴函式。 - 不希望因為物件個體不同,進而被影響的類別屬性。 - 類別的 Singleton 模式。 6. 應用:應用在遞迴上的 static 關鍵字 ``` // PHP 版的 Fibonacci Sequence 遞迴函式 function fibV2($n) { static $result = array(); if (!isset($result[$n])) { if ($n <= 2) { $result[$n] = 1; } else { $result[$n] = fibV2($n - 2) + fibV2($n - 1); } } return $result[$n]; } $start_time = (float) microtime(true); echo fibV2(20), "\n"; $end_time = (float) microtime(true); echo "Spent Time: ", ($end_time - $start_time), "(s)\n"; /* output: 6765 Spent Time: 0.0009009838104248(s) */ ``` 7. 參考資料: (1)http://www.php5.idv.tw/html.php?mod=article&do=show&shid=75 (2)http://www.jaceju.net/blog/archives/670/ (3)http://andys0623.blogspot.tw/2012/08/static-c.html (4)http://blog.kenyang.net/2011/03/java-staticfinal.html
車型; //Notthing 什麼也沒有(進入overloading) //使用車子裡面的函數 $車子->車單("Toyota! "); ?> ``` 5. 用途:static 主要用途在於定義一個變數空間,讓函式或類別可以保留住該變數的值,直到下次的存取。 - 需要記住上一次函式執行的結果。 - 某些可以保留執行結果的遞迴函式。 - 不希望因為物件個體不同,進而被影響的類別屬性。 - 類別的 Singleton 模式。 6. 應用:應用在遞迴上的 static 關鍵字 ``` // PHP 版的 Fibonacci Sequence 遞迴函式 function fibV2($n) { static $result = array(); if (!isset($result[$n])) { if ($n <= 2) { $result[$n] = 1; } else { $result[$n] = fibV2($n - 2) + fibV2($n - 1); } } return $result[$n]; } $start_time = (float) microtime(true); echo fibV2(20), "\n"; $end_time = (float) microtime(true); echo "Spent Time: ", ($end_time - $start_time), "(s)\n"; /* output: 6765 Spent Time: 0.0009009838104248(s) */ ``` 7. 參考資料: (1)http://www.php5.idv.tw/html.php?mod=article&do=show&shid=75 (2)http://www.jaceju.net/blog/archives/670/ (3)http://andys0623.blogspot.tw/2012/08/static-c.html (4)http://blog.kenyang.net/2011/03/java-staticfinal.html
// PHP 版的 Fibonacci Sequence 遞迴函式 function fibV2($n) { static $result = array(); if (!isset($result[$n])) { if ($n <= 2) { $result[$n] = 1; } else { $result[$n] = fibV2($n - 2) + fibV2($n - 1); } } return $result[$n]; } $start_time = (float) microtime(true); echo fibV2(20), "\n"; $end_time = (float) microtime(true); echo "Spent Time: ", ($end_time - $start_time), "(s)\n"; /* output: 6765 Spent Time: 0.0009009838104248(s) */ ``` 7. 參考資料: (1)http://www.php5.idv.tw/html.php?mod=article&do=show&shid=75 (2)http://www.jaceju.net/blog/archives/670/ (3)http://andys0623.blogspot.tw/2012/08/static-c.html (4)http://blog.kenyang.net/2011/03/java-staticfinal.html