Ich habe vor nicht alzu langer Zeit mit OPP angefangen. Ich bin daher eher nen Beginner als fortgeschrittener und möchte euch eine meiner ersten Klassen vorstellen: Eine Klasse für einen Kalender.
Ich wollte euch einfach mal fragen, was ich verbessern kann oder wo ich noch - für einige von euch - offensichtliche Fehler gemacht habe.
Würd mich freuen, wenn ihr mich nicht zerreißt![Wink](https://www.php-resource.de/forum/core/images/smilies/wink.gif)
Herzlichen Dank für eure Ratschläge und Tipps im Voraus!
MfG
Stefan
Ich wollte euch einfach mal fragen, was ich verbessern kann oder wo ich noch - für einige von euch - offensichtliche Fehler gemacht habe.
Würd mich freuen, wenn ihr mich nicht zerreißt
![Wink](https://www.php-resource.de/forum/core/images/smilies/wink.gif)
PHP-Code:
<?php
<?php
class kalender{
// Attribute
var $currentDay; // Aktueller Tag
var $currentYear; // Aktuelles Jahr
var $currentMonth; // Aktueller Monat
function kalender() {
// Aktuelles Datum errechnen
$curDate = $this->getCurDate();
// Aktuelles Datum in den Attribute speichern
$this->currentDay = $curDate[day];
$this->currentMonth = $curDate[month];
$this->currentYear = $curDate[year];
}
function createKalBlock($monthScroll = 0) {
/* Monat ermitteln, der angezeigt werden soll */
$showDate = $this->getShowDate($monthScroll);
/* Wochentag des ersten Tages des Monats ermitteln */
$wochentag = $this->getWochentag($showDate[month],$showDate[year], 1); // 1-7
$i = 2-$wochentag; // -1 bis -5
$return.= "<b><center><span style=\"font: bold 17pt Arial; color: #000000;\">
" . $this->getGermanMonth($showDate[month]) . " ' " . $showDate[year] . "</center></span></b><br />";
/* Anzahl der Tage im Monat ermitteln */
$dateStr = $showDate[year] . "-" . $showDate[month] . "-1"; // Datumsstring
$timestamp = strtotime($dateStr); // Timestamp ermitteln
$numberOfDays = date('t', $timestamp); // Anzahl der Tage in $numberOfDays
// $return = String zur Ausgabe
$return.= "
<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
<tr>
<td width=\"50\" align=\"center\"><b>M</b></td>
<td width=\"50\" align=\"center\"><b>D</b></td>
<td width=\"50\" align=\"center\"><b>M</b></td>
<td width=\"50\" align=\"center\"><b>D</b></td>
<td width=\"50\" align=\"center\"><b>F</b></td>
<td width=\"50\" align=\"center\"><b>Sa</b></td>
<td width=\"50\" align=\"center\"><b>So</b></td>
</tr>
";
// Die Schleife wird 42 mal durchlaufen, damit zum schluss auf alle fälle die letzte Tabellenzeile geschlossen wird
for($x=1;$x<=42;$x++) {
// Falls der naechste Tag ein Montag ist, vorher eine neue Zeile beginnen
if($x == 1 || $x == 8 || $x == 15 || $x == 22 || $x == 29 || $x == 36) {
$return.="<tr>\n";
}
//
if($i > 0 && $i<=$numberOfDays) {
$return.="<td height=\"35\" align=\"center\" valign=\"middle\">\n";
if($i == $this->currentDay && $this->currentMonth == $this->showMonth && $this->currentYear == $this->showYear) {
$return.="<b><font color=\"black\">$i</font></b>\n";
}
else {
$return.=$i . "\n";
}
$return.="</td>\n";
}
else {
$return.="<td>\n </td>\n";
}
if($x == 7 || $x == 14 || $x == 21 || $x == 28 || $x == 35 || $x == 42) {
$return.="</tr>\n";
}
$i++;
}
$return.="
<tr>
<td colspan=\"3\">
<a href=\"?content=kal_overview&monthScroll=" . ($monthScroll-1) . "\" alt=\"Zurueck\">Zurueck</a>
</td>
<td colspan=\"4\" align=\"right\">
<a href=\"?content=kal_overview&monthScroll=" . ($monthScroll+1) . "\" alt=\"Zurueck\">Naechster</a>
</td>
</tr>
</table>";
return $return;
}
// Gibt das aktuelle Datum in einem Array zurueck
function getCurDate() {
$this->currentYear = date(Y); // Aktuelle Jahr
$this->currentMonth = date(m); // Aktuelle Monat
$this->currentDay = date(d); // Aktuelle Tag
return array ("month" => $this->currentMonth, "year" => $this->currentYear, "day" => $this->currentDay); // Rueckgabe des Arrays
}
// Verschieben des Datums um $monthScroll und gibt den anzuzeigenden Monat und Jahr in einem array zurueck
function getShowDate($monthScroll) {
$showDateTimestamp = mktime(0, 0, 0, date("m")+$monthScroll, 10, date("Y")); // Timestamp mit dem anzuzeigendem Monat erstellen
$this->showMonth = date(m, $showDateTimestamp);
$this->showYear = date(Y, $showDateTimestamp);
return array (month => date("m", $showDateTimestamp), year => date("Y", $showDateTimestamp)); // Rueckgabe des Arrays
}
// Ermitteln eines Wochentages
function getWochentag($month, $year, $day) {
$str = "$year-$month-01";
$timestamp = strtotime($str);
$wochentag = date('l', $timestamp);
switch($wochentag) {
case 'Monday': $return = 1;
break;
case 'Tuesday': $return = 2;
break;
case 'Wednesday': $return = 3;
break;
case 'Thursday': $return = 4;
break;
case 'Friday': $return = 5;
break;
case 'Saturday': $return = 6;
break;
case 'Sunday': $return = 7;
break;
}
return($return);
}
// Namen des deutschen Monats ermitteln
function getGermanMonth($monthNumber) {
switch($monthNumber) {
case 1: return "Januar";
break;
case 2: return "Februar";
break;
case 3: return "März";
break;
case 4: return "April";
break;
case 5: return "Mai";
break;
case 6: return "Juni";
break;
case 7: return "Juli";
break;
case 8: return "August";
break;
case 9: return "September";
break;
case 10: return "Oktober";
break;
case 11: return "November";
break;
case 12: return "Dezember";
break;
}
}
}
?>
PHP-Code:
<?php
include("kal_class.php");
$kalender = new kalender;
$block_inhalt = $kalender->createKalBlock($_GET[monthScroll]);
echo $block_inhalt;
MfG
Stefan
Kommentar