dedlfix: wie __destruct sinnvoll nutzen?

Beitrag lesen

Tach!

Ich habe mir eine Logging- Klasse gebaut, die (stark vereinfacht) ungefähr so aussieht:

Dann kommentiere ich mal ausgehend davon.

public function __destruct() {
      // hier wird erst die Logdatei geschrieben.
      // dadurch habe ich nicht die ganze Zeit das olle Handle offen.

Dafür hast du die ganze Zeit ein Objekt mit einem wachsenden Array im Speicher rumliegen.

// Das Tolle ist, dass ich mich nicht mehr darum kümmern
      // muss, die Datei "manuell" zu schreiben

Das Tolle ist, man bekommt das als Dreizeiler hin.

function debug($message) {
  file_put_contents('/var/www/files/log.log', 'DEBUG :'.$message, FILE_APPEND);
}

Natürlich kann man das auch objektorientiert ausführen, zum Beispiel wenn man per Dependency Injection den anderen Akteuren das zu verwendende Log-Objekt vorgeben will, statt dass sie fest verdrahtet diese Funktion aufrufen. Aber auch dann braucht es keinen Destruktor. Und auf diese Weise hat man die Meldungen bis dahin auch dann in der Datei, wenn PHP meint, das Script mit einem fatalen Error abzubrechen.

dedlfix.