Hallo.
Danke das ihr mir noch weiterhin helft.
»» database.ext. Klasse:
»» Hier sind sämtliche anderen Datenbankfunktionen drin.Was sind ihre Aufgaben? Vielleicht können sie ja als Methoden der database-Klasse realisiert werden.
In der database.ext sind folgende Methoden enthalten:
######################################################################################################
################# db_make_rwu_sentence
######################################################################################################
// Ein-/Auslesewerte aneinanderreihen
/*
3 Typen:
Typ 1: foo,bar
Typ 2: 'foo','bar'
Typ 3: foo='bar',foo='bar',
Typ 4: ?,?,? - MySQLi Platzhalter für prepared Statements
*/
function db_make_rwu_sentence($what_rwu,$what_insert,$rwu){
$x=0; // Zähler auf NULL(0) setzen
$this->rwu_sentence=''; // Zurücksetzen des Ausdrucks
foreach($what_rwu as $what){
if($rwu==1||$rwu==2){ // Typ 1 oder 2
$this->rwu_sentence .= ($rwu==1) ? $what : "'".$what."'";
} elseif($rwu==3) { // Typ 3
$this->rwu_sentence .= $what."='".$what_insert[$x]."'";
} elseif($rwu==4) { // Typ 4
$this->rwu_sentence .= "?";
}
$this->rwu_sentence .= ($x < $this->count_array - 1) ? "," : "";
++$x; // hochzählen
}
return $this->rwu_sentence;
}
######################################################################################################
################# db_create_normal_query
######################################################################################################
// Erstellt einen Query
function db_create_normal_query($what_array,$what_insert, $from_table, $when, $whatkind){
# Wieviele Werte sind ein-/auszulesen
if($whatkind==1) { // INSERT
$this->db_check_array_numbers($what_array,$what_insert);
$this->count_array=count($what_array);
$this->query="INSERT INTO ".$from_table." (".$this->db_make_rwu_sentence($what_array,'',1);
$this->query.=") VALUES (".$this->db_make_rwu_sentence($what_array,'',4).")";
} elseif ($whatkind==2) { // UPDATE
$this->db_check_array_numbers($what_array,$what_insert);
$this->count_array=count($what_array);
$this->query="UPDATE ".$from_table." SET ";
$this->query.=$this->db_make_rwu_sentence($what_array,$what_insert,3);
$this->query.=" WHERE ".$when;
} elseif ($whatkind==3) { // SELECT
$this->count_array=count($what_array);
$this->query="SELECT ".$this->db_make_rwu_sentence($what_array,'',2)." FROM ".$from_table;
$this->query.=" WHERE ".$when;
} else { // Kein Typ -> Error
$this->db_errors("Es wurde kein Typ ausgewählt");
}
$this->db_prepared_statement($this->query,$whatkind,$what_array);
}
Und darein sollen auch noch:
######################################################################################################
################# db_prepared_statement
######################################################################################################
// Prepared einen Query und führt ihn anschliessend aus
function db_prepared_statement($query,$whatkind,$params){}
######################################################################################################
################# db_errors
######################################################################################################
// Reagiert entsprechend auf Fehler
function db_errors($db_error){
if($this->modus_trialanderror == true){
echo "<h3><pre>".$db_error."</pre></h3>";
} else {
echo "Fehlermodus aus";
}
}
######################################################################################################
################# db_count_found_or_affected_rows
######################################################################################################
// INSERT, UPDATE, REPLACE oder DELETE -> Anzahl der betroffenen Datensätze
// SELECT -> Anzahl der gefundenen Datensätze
function db_count_found_or_affected_rows(){}
######################################################################################################
################# db_fetch_object
######################################################################################################
// Ergebnis auslesen
function db_fetch_object($db_result){
}
######################################################################################################
################# db_close
#####################################################################################################
// Schliesst eine bestehende Datenbank-Verbindung
function db_close(){
}
######################################################################################################
################# db_free_result
#####################################################################################################
// Löscht das Result eines ausgeführten Querys
function db_free_result(){
}
»» Main Klasse:
»» Die MainKlasse wird wieder als Singleton P. gemachtWas ist die Aufgabe der MainKlasse?
Hier sind so "Standard"-Funktionen drin. Ich nenne mal Beispiele:
// Checkt zwei arrays ob sie gleich sind
function check_arrays(}
// Packt alle Requests in ein Array, wahlweise nur alle GET oder nur alle POST Requests
function get_all_requests_in_array(){}
Das database-Objekt wird ja durch das Singleton Pattern in dem Moment erstellt, wenn der erste Zugriff darauf erfolgt. Ein anderweitiges Anlegen ist weder sinnvoll noch nötig und widerspricht auch dem Singleton Pattern, das verlangt, dass der Konstruktor nicht anderweitig aufgerufen werden darf, also private zu sein hat. Die einzige Möglichkeit an ein "gesingletontes" Objekt zu kommen ist der Aufruf der statischen getInstance-Methode (oder wie auch immer man sie nennt). Und jeder, der das Objekt braucht, holt es sich selbst durch Aufruf dieser Methode. Es muss also nicht noch irgendwo anders (global) abgelegt werden.
Achso okay also spart man sich das "$object = new Classname;"
Freue mich über weitere Hilfe ein ordentliches System zu konstruieren. Bilde mich derweil weiter über OOP.
@Frankx
Vielen Dank für die Zend-FW Links. Allerdings möchte auf jeden Fall auf Zend o.ä. verzichten! Ich möchte das System 100% komplett selbstschreiben und mich maximal auf die Module PHP5, MySQLi, mod_rewrite - sprich Standard berufen.
Liebe Grüße,
Chris