Hallo Leute,
ich arbeite im Moment an einem neuen, objektorientierten Ansatz für ein kleines Probe-CMS, das ich mir zur Aufgabe gemacht hab.
Falls der Ansatz funktioniert will ich künftig alle meine Websites nach diesem Prinzip aufbauen.
Ich würde dazu gern eine Frage stellen:
Ich habe eine Klasse für eingehende Anfragen:
Die Methode fetchList würde natürlich nur funktionieren, wenn ich zuerst eine leere Instanz von Enquiry erstellen würde und die Operation darauf ausführen würde.
Das scheint mir kein sehr guter Stil zu sein.
Mein zweiter Ansatz wäre gewesen, im Konstruktor alle Parameter, die in der Klasse vorhanden sind, zu übergeben. Dann könnte ich die fetchList-Methode als statisch deklarieren und es würde wieder um einiges besser aussehen.
Jetzt würde ich halt gern wissen, ob dieser zweite Ansatz sinnvoll ist (immerhin werden ja so alle Variablen im Prinzip doppelt angelegt, was aber mit der momentanen Methode fetchList auch nicht anders wäre) oder ob beide Ansätze totaler Mist sind und ich mir lieber was anderes suchen sollte...
Ich danke schonmal im Voraus für alle Antworten
mfg SilentSight
ich arbeite im Moment an einem neuen, objektorientierten Ansatz für ein kleines Probe-CMS, das ich mir zur Aufgabe gemacht hab.
Falls der Ansatz funktioniert will ich künftig alle meine Websites nach diesem Prinzip aufbauen.
Ich würde dazu gern eine Frage stellen:
Ich habe eine Klasse für eingehende Anfragen:
PHP-Code:
class Enquiry
{
private $id; // int
private $mediumType; // int / MediumType
private $publicationDate; // DateTime
private $topic; // String
private $remarks; // String
private $attachment; // String
private $answeredPress; // bool
private $answeredFrom; // String
private $answerType; // int / AnswerType
private $depRedirect; // String
private $dirRedirect; // String
private $coopRating; // String
private $reportTerminated; // bool
private $dateCreated; // DateTime
private $creator; // String --> Benutzertabelle???
private $dateLastEdited; // DateTime
private $lastEditor; // String --> Benutzertabelle???
private $finished; // bool
private $deleted; // bool
public function __construct($id)
{
$dbh = DB::getHandle();
$row = $dbh->query('SELECT * FROM `pm_new_enquiries` WHERE `id`='.$id)->fetch(PDO::FETCH_NUM);
list(
$this->id,
$this->mediumType,
$this->publicationDate,
$this->topic,
$this->remarks,
$this->attachment,
$this->answeredPress,
$this->answeredFrom,
$this->answerType,
$this->depRedirect,
$this->dirRedirect,
$this->coopRating,
$this->reportTerminated,
$this->dateCreated,
$this->creator,
$this->dateLastEdited,
$this->lastEditor,
$this->finished,
$this->deleted
) = $row;
}
public function getId() { return $this->id; }
public function getMediumType() { return $this->id; }
//...
public function fetchList($start, $length)
{
$ret = array();
$dbh = DB::getHandle();
$sth = $dbh->query('SELECT * FROM `pm_new_enquiries` LIMIT '.$start.','.$length);
while ($row = $sth->fetch(PDO::FETCH_NUM)) {
list(
$this->id,
$this->mediumType,
$this->publicationDate,
$this->topic,
$this->remarks,
$this->attachment,
$this->answeredPress,
$this->answeredFrom,
$this->answerType,
$this->depRedirect,
$this->dirRedirect,
$this->coopRating,
$this->reportTerminated,
$this->dateCreated,
$this->creator,
$this->dateLastEdited,
$this->lastEditor,
$this->finished,
$this->deleted
) = $row;
$ret[] = $this;
}
return $ret;
}
}
Das scheint mir kein sehr guter Stil zu sein.
Mein zweiter Ansatz wäre gewesen, im Konstruktor alle Parameter, die in der Klasse vorhanden sind, zu übergeben. Dann könnte ich die fetchList-Methode als statisch deklarieren und es würde wieder um einiges besser aussehen.
Jetzt würde ich halt gern wissen, ob dieser zweite Ansatz sinnvoll ist (immerhin werden ja so alle Variablen im Prinzip doppelt angelegt, was aber mit der momentanen Methode fetchList auch nicht anders wäre) oder ob beide Ansätze totaler Mist sind und ich mir lieber was anderes suchen sollte...
Ich danke schonmal im Voraus für alle Antworten
mfg SilentSight
Kommentar