Home » Date and Time » Date » Bug #5426
Cache the weekday and month names in Date_Calc
Details
| Request #5426 | Cache the weekday and month names in Date_Calc |
|---|---|
| Submitted | 2005-09-15 23:14 UTC |
| From | o dot persson at gmail dot com |
| Status | Suspended |
| Package | Date |
| PHP Version | 5.1.0 |
| OS | Debian GNU/Linux |
| Roadmaps | (Not assigned) |
Comments
[2005-09-15 23:14 UTC] o dot persson at gmail dot com
Description:
------------
This is a simple fix for caching weekdays and month names in Date_Calc.
Maybe a nicer approach would be to take advantage of the names that exists in I18Nv2.
Test script:
---------------
Index: ../components/PEAR/Date/Calc.php
===================================================================
--- ../components/PEAR/Date/Calc.php (revision 204)
+++ ../components/PEAR/Date/Calc.php (working copy)
@@ -1586,13 +1586,13 @@
*
* Used to take advantage of the setlocale function to return
* language specific month names.
- * XXX cache values to some global array to avoid preformace
- * hits when called more than once.
*
* @returns array An array of month names
*/
function getMonthNames()
{
+ static $months = array();
+
for($i=1;$i<13;$i++) {
$months[$i] = strftime('%B', mktime(0, 0, 0, $i, 1, 2001));
}
@@ -1604,13 +1604,13 @@
*
* Used to take advantage of the setlocale function to
* return language specific week days
- * XXX cache values to some global array to avoid preformace
- * hits when called more than once.
*
* @returns array An array of week day names
*/
function getWeekDays()
{
+ static $weeksdays = array();
+
for($i=0;$i<7;$i++) {
$weekdays[$i] = strftime('%A', mktime(0, 0, 0, 1, $i, 2001));
}
[2005-09-15 23:17 UTC] o dot persson at gmail dot com
Err, that's completly wrong. I guess I should goto sleep. ;)
Index: ../components/PEAR/Date/Calc.php
===================================================================
--- ../components/PEAR/Date/Calc.php (revision 205)
+++ ../components/PEAR/Date/Calc.php (working copy)
@@ -1586,16 +1586,18 @@
*
* Used to take advantage of the setlocale function to return
* language specific month names.
- * XXX cache values to some global array to avoid preformace
- * hits when called more than once.
*
* @returns array An array of month names
*/
function getMonthNames()
{
- for($i=1;$i<13;$i++) {
- $months[$i] = strftime('%B', mktime(0, 0, 0, $i, 1, 2001));
- }
+ static $months;
+
+ if (!isset($months)) {
+ for($i=1;$i<13;$i++) {
+ $months[$i] = strftime('%B', mktime(0, 0, 0, $i, 1, 2001));
+ }
+ }
return($months);
} // end func getMonthNames
@@ -1604,16 +1606,18 @@
*
* Used to take advantage of the setlocale function to
* return language specific week days
- * XXX cache values to some global array to avoid preformace
- * hits when called more than once.
*
* @returns array An array of week day names
*/
function getWeekDays()
{
- for($i=0;$i<7;$i++) {
- $weekdays[$i] = strftime('%A', mktime(0, 0, 0, 1, $i, 2001));
- }
+ static $weekdays;
+
+ if (!isset($weekdays)) {
+ for($i=0;$i<7;$i++) {
+ $weekdays[$i] = strftime('%A', mktime(0, 0, 0, 1, $i, 2001));
+ }
+ }
return($weekdays);
} // end func getWeekDays