phpbar.de logo

Mailinglisten-Archive

[php] Kalenderwoche in Datum

[php] Kalenderwoche in Datum

Johannes Schlueter schlueter at phpbar.de
Die Feb 8 16:32:53 CET 2005


Hallo Carsten,

Carsten Lehmann wrote:

> function getDateFromKw ($kw,$jahr) {
>    $tstp=mktime(0,0,0,1,$kw*7,$jahr);
>    $kw2=date(W,$tstp);

date('W', $tstp); mit Strichen um das W - PHP toleriert es zwar aber  
sauberer ist es mit den ' bzw. " Wenn man error_reporting auf E_NOTICE 
schaltet sieht man auhc eine Warnung, denn was passiert? PHP sucht eine 
Konstante mit dem Namen W findet die nicht und anstatt abzubrechen nimmt 
er den namen der vermuteten Kosntante als String, also W wenn jetzt - 
warum auch immer - irgendjemand ein define('W', 'foobar'); macht ist die 
Funktion hin. Zudem ist es langsamer, da erst die Hashtabelle mit den 
Konstanten durchsucht werden muss (was aber in aller Regel 
vernachlässigbar ist)

>    if ($kw2!=$kw) $tstp=mktime(0,0,0,1,--$kw*7,$jahr);

Schöner wäre imho

if ($kw2 != $kw) {
    $tstp=mktime(0, 0, 0, 1, --$kw*7, $jahr);
}

Also ruhig ein paar {}, Leerzeichen und Zeilenumbrüche dazu - die kosten 
nichts brignen aber Lesbarkeit, 2! ist nicht so untershciedlich zu z.B. 21.
(-- und ++ lassen sich zwar mit anderen Operationen verbinden lassen es 
imho aber auch nicht so lesbar ist, mehr zu -- weiter unten)

>    $wt=date(w,$tstp);

Siehe oben, diesmal mit kleinem w.

>    if (--$wt==-1) $wt=6;


Der Vergleich ist - wenn man später beim debuggen oder sonstigen 
wartungsarbeiten drüber schaut schwer zu interpretieren, besser wäre es
a) in der Zeile vorher $wt = date(...) - 1 zu defnieren
oder b) $wt == 0 zu vergleichen und dann später eins abzuziehen (dann 
muss $wt als 7 definiert werden oder ein else-Block her).

Wie oben wäre es auch hier schön dem if etwas mehr Paltz zu gönnen.

>    return date("Y-m-d",$tstp-$wt*86400);

Da wäre - im Sinne der Wartbarkeit - schön entweder einen Komemntar zu 
schreiben was 86400 bedeutet oder 60*60*24 zu schreiben - auch wenn es 
langsamer ist (wirklich vernachlässigbar)

> }
>
> Gruss Carsten

johannes

php::bar PHP Wiki   -   Listenarchive