Wie erkennt man, dass bei mehrmaligem Aufruf einer zeitaufwändigen Funktion oder Klassenmethode die Operation zum ersten Mal ausgeführt wird und das Ergebnis direkt zurückgegeben wird, wenn die Funktion in der Zukunft erneut aufgerufen wird?
<?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