Einzelnen Beitrag anzeigen
Alt 13.01.2009, 00:25  
Chriz
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard Datenbankkommunikation über Events

Hallo,

das Durchreichen von Datenbank-Adaptern für ActiveRecord oder die Benutzung von Singleton um die Datenbank-Instanz zu holen stört mich gerade.

Ich habe mir überlegt ob eine User-Klasse nun nicht einen Event werfen könnte um wer auch immer sich für diesen Event eingetragen hat, die Speicherung übernehmen zu lassen.

User.class.php
PHP-Code:
<?php
class User {
  
// ..
  
public function save() {
    
$event = new Event(__METHOD__$this);
    
$event Registry::get("EventDispatcher")->trigger($event);
    return 
$event->getSuccess()
  }
  
// ..
?>
events.inc.php
PHP-Code:
<?php
$eventDispatcher 
= new EventDispatcher();
$eventDispatcher->handle("User::save", new Database_Csv());
$eventDispatcher->handle("Mailbox::save", new Database_Mysql());
// ..
Registry::set("EventDispatcher"$eventDispatcher);
?>
Im Prinzip geht das ja in Richtung Inversion of Control, welches ja auch im Zusammenhang mit Dependency Injection genannt wird. Letzteres scheint mir allerdings etwas kompliziert (ja die Scheu) bzw. etwas zu überladen.

Was haltet ihr von der Event-basierten Speicherung? Im Event-Kontext könnte ich ja alle Informationen ablegen, um mehr als nur "getSuccess" als Feedback anzubieten, eben auch das Transportieren von Werten (User-Eigenschaften zu read()).

Was wäre eure Meinung dazu?

Wie ich dadrauf gekommen bin der Vollständigkeit halber:
Designfrage 2: das leidige mitschleifen von Parametern - Forum: phpforum.de
Chriz ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten