Zitat Zitat von dead_orc Beitrag anzeigen
Noch ein Grund für die Globalisierung: Was willst du denn machen, wenn du aus einer Funktion heraus die DB ansteuern möchtest? Da würdest du vermutlich gar nicht drüber nachdenken und entweder $GLOBALS['DB'] oder global $DB benutzen, oder?
Das wäre zum Beispiel so ein Problemfall. Ich könnte beispielsweiße die DB als Singleton nutzen, was ich aber nicht möchte, das ich gerne $this verwenden möchte.

Hier gehe ich gleich näher drauf ein.

Zitat Zitat von makkurona Beitrag anzeigen
Mhhh.. wie wärs wenn du der Datenbankklasse die Methoden und Eigenschaften der Exec Klasse eifnach vererbst?
Die Idee ist gar nicht so schlecht, aber für mich erscheint das nicht gerade als saubere Lösung. Desweiteren sind dann Methoden doppelt in Benutzung und das würde ich gerne vermeiden.

Zitat Zitat von Xardas der Dunkle Beitrag anzeigen
Damit die Classe immer gleich heißen, kann müsstest du logischer weise jede Version in eine eigene Datei auslagern.
Andere Möglichkeit währe, mit einer sogenannten singleton Classe/Function zu arbeiten:
PHP-Code:
singleton('DB')->insert('my_table', Array(
   
'field' => 'value',
)); 
mfG
Bei Singletons fehlt mir leider die $this Möglichkeit. Einige weniger restrikte Singletons kann man zwar zur Arbeit mit $this zwingen, aber genauer betrachtet erzeugt man dann eine normale Klasse und wenn es dumm läuft, erhält man in der zweiten Funktion, die ein $this verwendet und eine Klasse erzeugen möchte eine Fehlermeldung.

Hier noch ein Beispiel:
PHP-Code:
  /**
   * @brief   counts entries limited to restrictions
   * @see     $this->count_restriction
   * @version 0
   *
   * @param $table
   *   sets the table where to count the entries
   * @param $reset_restrictions
   *   deletes restrictions after processing
   * @return
   *   return counted entries
   */
  
public function count ($table,$reset_restrictions=true) {
    
// Ausgabe überprüft ob Einschränkungen in $this->restrictions gespeichert wurden
  
}

  
/**
   * @brief   sets the restrictions for $this->count()
   * @see     $this->count
   *
    * @param $key
   *   key of the column
   * @param $operator
   *   operator to deal with
   * @param $value
   *   value to deal with
   * @return
   *   true by default
   */
  
public function count_restriction ($key,$operator,$value) {
    
// Fügt Einschränkungen in $this->restrictions
  

Ich versuche mich von der umständlichen Arraybildung zu trennen und sehe darin den Vorteil der OOP. In diesem Beispiel würde ich z.B. die Anzahl aller `Bewohner` der Stadt `Musterhausen` mit dem Nachnamen `Mustermann` zählen lassen:
PHP-Code:
$DB->count_restriction('Stadt','=','Musterhausen');
$DB->count_restriction('Nachname','=','Mustermann');
echo 
$DB->count('Bewohner'); 
Das könnte man auch mit nur einer Funktion lösen, beispielsweise:
PHP-Code:
/**
* ...

* @param $table
*   sets the table where to count the entries
* @restrictions_array
*   optional array, sets restrictions
* @return
*  return counted entries
*/
function _count ($table,$restrictions_array=array()) {
}

// Beispiel
$array = array(
  array(
'Stadt','=','Musterhausen'),
  array(
'Nachname','=','Mustermann')
);

echo 
_count('Bewohner',$array);