mod: Konstruktor: Klasse erst später definiert

Beitrag lesen

An dem Code ist einiges kritikwürdig.

Deswegen habe ich ihn auch gepostet. Nur aus Fehlern lernt man!

Erstens: Die Datenbank-Klasse sollte von keinerlei Template-System wissen.

Sehe ich vollkommen auch so! Jede Klasse sollte möglichst ohne den Einfluss anderer Klassen arbeiten. Könntest du mir bitte an einem Code-Beispiel zeigen, wie du bspw. eine fehlgeschlagene Verbindung aus einem DB-Objekt an ein ErrorHandling-Objekt senden würdest, damit dies die passende Aktion durchführt.

Zweitens: Die Datenbank-Klasse sollte keinen Aufruf "start()" erfordern.

Gut da gehe ich mit.

Eine DB-Verbindung stellt man dann her, wenn man den ersten Query verarbeitet

Ich persönlich mag das nicht, dass die Fehlermeldung aus einem anderem Objekt kommt, in der ein DB-Query stattfindet.

oder pauschal einfach beim Instanziieren der Klasse im Konstruktor.

... der Klasse DB - gut, aber nirgendwo anders.

Mit deinen Vorschlägen:

class MySQL {
public $count = 0;
    public $errorMessage = '';
    public $errorType = 'ERROR_SQL';
    public $fields = array();
    public $linkID = 0;
    public $output = '';
    public $result = '';

function __construct( $output )
    {
         $this->connect();
         $this->selectDatabase();
    }

function connect()
    {
        $this->linkID = @mysql_connect( DB_HOST, DB_USER, DB_PASSWORD );

if ( ! $this->linkID ) {
            $this->setError( 'DB_NO_CONNECTION' );
        }
    }

function errno()
    {
        return mysql_errno( $this->linkID );
    }

function error()
    {
        return mysql_error( $this->linkID );
    }

function setError( $type )
    {
         $this->errorMessage = $type;
    }
}

Wie würdest du die Fehlermeldung an ein ErrorHandling-Objekt übergeben?

0 55

Konstruktor: Klasse erst später definiert

mod
  • php
  1. 0
    mod
  2. 0
    dedlfix
    1. 0
      mod
      1. 0
        mod
        1. 1
          Sven Rautenberg
          1. 0
            mod
          2. 0
            mod
            1. 0
              dedlfix
              1. 0
                mod
                1. 0
                  Sven Rautenberg
                  1. 0
                    mod
                    1. 0
                      dedlfix
            2. 0
              Sven Rautenberg
              1. 0
                hotti
                1. 0
                  Sven Rautenberg
                  1. 0
                    hotti
                    1. 2
                      Sven Rautenberg
              2. 0
                mod
        2. 0
          dedlfix
          1. 0
            mod
            1. 0
              hotti
              1. 0
                mod
                1. 0
                  hotti
                  1. 0
                    dedlfix
                    1. 0
                      hotti
                      1. 0
                        dedlfix
                        1. 0
                          hotti
                          1. 0
                            dedlfix
                            1. 0
                              Sven Rautenberg
                              1. 0
                                hotti
                                1. 0
                                  dedlfix
                                  1. 0
                                    hotti
                                    1. 0
                                      dedlfix
                              2. 0
                                asdf
                            2. 0
                              hotti
                              1. 0
                                Sven Rautenberg
                                1. 0
                                  hotti
                                  1. 1
                                    Sven Rautenberg
                                    1. 0
                                      hotti
                                2. 1
                                  asdf
                              2. 0
                                dedlfix
                                1. 0
                                  hotti
                                  1. 0
                                    dedlfix
                                    1. 0
                                      hotti
                                      1. 1
                                        Sven Rautenberg
            2. 0
              dedlfix
      2. 0
        dedlfix
        1. 0
          Tom
          1. 0
            dedlfix
  3. 0
    hotti
    1. 0

      @mod Vorsicht

      Christopher
      1. 0
        hotti
        1. 0
          Tom
          1. 0
            hotti