時間のかかる関数またはクラスメソッドが複数回呼び出されたときに、初めて操作が実行され、関数が再度呼び出されたときに結果が直接返されることを実現するにはどうすればよいですか?
<?php class MyDate { public static function getCurrentDate() { static $current_date = ''; if (!$current_date) { echo 'only run one time'; usleep(200000); $current_date = date('Y-m-d H:i:s'); } return $current_date; } public static function getCurrentDate2() { usleep(200000); echo 'run everytime'; return date('Y-m-d H:i:s'); } } $start = microtime(true); $i = 5; while ($i--) { MyDate::getCurrentDate(); } echo microtime(true) - $start; //200ms $start = microtime(true); $i = 5; while ($i--) { MyDate::getCurrentDate2(); } echo microtime(true) - $start; //1s