Hallo,
ich bringe mir seit zirka einem Jahr PHP/MySQL im Selbststudium bei. Mein Projekt ist mittlerweile aber umfangreicher als geplant und mein Code wird zunehmend wartungsunfreundlich. Daher beschäftige ich mich seit kurzem mit objektorientierter Programmierung. Ich habe gestern eine Klasse geschrieben, mit welcher ich eine kleine Navigationsleiste (Neue Email | Posteingang | Postausgang) erstellen möchte. Die aktive Schaltfläche wird farblich hervorgehoben. Die CSS Formatierung habe ich sehr einfach gehalten, da sie hier nur zu Demonstrationszwecken dient. Möchte sich jemand die Mühe machen und meinen Code kurz überfliegen? Ist meine Klasse soweit einsatzbereit? Benötige ich die Funktion __set() unbedingt (steht so in meinem Buch)?
Schöne Grüße, _hq_
ich bringe mir seit zirka einem Jahr PHP/MySQL im Selbststudium bei. Mein Projekt ist mittlerweile aber umfangreicher als geplant und mein Code wird zunehmend wartungsunfreundlich. Daher beschäftige ich mich seit kurzem mit objektorientierter Programmierung. Ich habe gestern eine Klasse geschrieben, mit welcher ich eine kleine Navigationsleiste (Neue Email | Posteingang | Postausgang) erstellen möchte. Die aktive Schaltfläche wird farblich hervorgehoben. Die CSS Formatierung habe ich sehr einfach gehalten, da sie hier nur zu Demonstrationszwecken dient. Möchte sich jemand die Mühe machen und meinen Code kurz überfliegen? Ist meine Klasse soweit einsatzbereit? Benötige ich die Funktion __set() unbedingt (steht so in meinem Buch)?
PHP:
<?php
class button_nav {
public $info;
private $button = array('Neue E-Mail' => 'email_neu.php', 'Posteingang' => 'posteingang.php', 'Postausgang' => 'postausgang.php');
public function __set($name, $value) {
$this->$name = $value;
}
public function anzeige() {
$this->button_anzeige($this->button);
if (!empty($this->info)) {
echo '<span class="info_text">';
echo $this->info;
echo '</span>';
}
}
private function button_anzeige($button) {
while (list($name, $url) = each($button)) {
$this->button_erstellen($name, $url, $this->seite_aktuell($url));
}
}
private function seite_aktuell($url) {
if (strpos($_SERVER['PHP_SELF'], $url) == true) {
$active = true;
} else {
$active = false;
}
return $active;
}
private function button_erstellen($name, $url, $active) {
if ($active == true) {
echo '<a href="' . $url . '" class="nav_aktuell">' . $name . '</a>';
} else {
echo '<a href="' . $url . '" class="nav">' . $name . '</a>';
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
a.nav {border:5px dashed lightgray; margin: 5px 5px; padding: 5px 5px; text-decoration:none;}
a.nav_aktuell {border:5px dashed lightblue; margin: 5px 5px; padding: 5px 5px; text-decoration:none;}
.info_text {font-weight:bold}
</style>
</head>
<body>
<?php
$email_nav = new button_nav();
$email_nav->info = 'In Ihrem Posteingang befinden sich 2 neue Nachrichten'; // $info für für posteingang.php und postausgang.php
$email_nav->anzeige();
?>
</body>
</html>
Schöne Grüße, _hq_