Klasse umarbeiten

bertiSR

Mitglied
Hallo ich arbeite im Moment mit folgender Datenbankklasse:
PHP:
<?php

    /**
     * @author      Adalbert Rohr <info@bero-web.de>
     * @copyright   2007 BeRo-Web Media AG
     * @package     bwLibrary
     * @version     Version 1.0, 2007-08-26
     * @since       Class available since Release 1.0
     */
    class BW_DB
    {
        /**
         * MySQL-Verbindung
         *
         * @access      protected
         * @var         boolean
         */
        protected $connection;


        /**
         * MySQL-Query
         *
         * @access      protected
         * @var         string
         */
        protected $query;


        /**
         * MySQL-Ergebnis
         *
         * @access      public
         * @var         string
         */
        protected $result;


        /**
         * Verbindung zum Server herstellen
         *
         * @access      public
         * @author      Adalbert Rohr <info@bero-web.de>
         * @param       string $mysql_host
         * @param       string $mysql_user
         * @param       string $mysql_pass
         * @param       string $mysql_data
         * @version     Version 1.0, 2007-08-26
         * @return      string
         */
        public function connect($mysql_host, $mysql_user, $mysql_pass, $mysql_data)
        {
            @$this->connection = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
            if ($this->connection) {
                $this->select_db($mysql_data);
            } else {
                return false;
            }
        }


        /**
         * Datenbank auswählen
         *
         * @access      protected
         * @author      Adalbert Rohr <info@bero-web.de>
         * @param       string $mysql_data
         * @version     Version 1.0, 2007-08-26
         * @return      boolean
         */
        protected function select_db($mysql_data)
        {
            if (@!mysql_select_db($mysql_data, $this->connection)) {
                return false;
            }
        }


        /**
         * MySQL-Query erzeugen
         *
         * @access      public
         * @author      Adalbert Rohr <info@bero-web.de>
         * @param       string $string
         * @version     Version 1.0, 2007-08-26
         * @return      string $result
         */
        public function execute($string, $get = '')
        {
            if (@!$this->query = mysql_query($string, $this->connection)) {
                return false;
            } else {
                if ($get == 1) {
                    return $this->query;
                }
            }
        }


        /**
         * Anzahl der abgerufenen Datensätze zählen
         *
         * @access      public
         * @author      Adalbert Rohr <info@bero-web.de>
         * @version     Version 1.0, 2007-08-26
         * @return      integer $result
         */
        public function get_num_rows($query = '')
        {
            if ($query == 0) {
                if (@$this->result = mysql_num_rows($this->query)) {
                    return $this->result;
                }
            } else {
                if (@$this->result = mysql_num_rows($query)) {
                    return $this->result;
                }
            }
        }


        /**
         * Datensätze in ein Array schreiben
         *
         * @access      public
         * @author      Adalbert Rohr <info@bero-web.de>
         * @version     Version 1.0, 2007-08-26
         * @return      array $result
         */
        public function get_fetch_assoc($query = '')
        {
            if ($query == 0) {
                if (@$this->result = mysql_fetch_assoc($this->query)) {
                    return $this->result;
                }
            } else {
                if (@$this->result = mysql_fetch_assoc($query)) {
                    return $this->result;
                }
            }
        }
    }

?>

Wie muss ich die Klasse umarbeiten, damit das Resultat einem Objekt zugewießen wird?

Beispiel:
PHP:
<?php

    // So sieht eine Abfrage im Moment aus
    $sql = "SELECT * FROM tabelle";
    $res = $db->execute($sql);

    if ($db->get_num_rows($res) > 0) {
        // ..
    }

    // und so soll sie aussehen
    $sql = "SELECT * FROM tabelle";
    $res = $db->execute($sql);

    if ($res->get_num_rows() > 0) {
        // ..
    }

?>

Mfg, und danke für die Hile, berti
 
Ne da hast du mich falsch verstanden. Kennst du das Package ADOBdb die arbeitet auf die selbe weiße, wie ich es will. Nur ist mir das viel zu groß.

Ich will bereits den Query zu einem Objekt machen!
 
Das Query ist ein einfacher String, welcher an die Datenbankschnittstelle geliefert wird und anschließend von der Datenbanksoftware verarbeitet wird - Somit eine Anfrage. Was möchtest du an einer Anfrage (of type string) in ein Objekt verwandeln? :rolleyes:

Wenn du ein Queryinterface suchst, so geht das nicht direkt mit dieser Klasse, da du sie komplett umschreiben müsstest, zB:
PHP:
        public function execute($string)
        {
            return new Query($string);
        }

// ...

class Query
{
    private $_result = null;

    public function __construct($query)
    {
        if ($this->_result = @mysql_query($query)) {
            throw new DB_Exception(/* ... */);
        }
    }

    public function fetchAssoc()
    {
        return mysql_fetch_assoc($this->_result);
    }

    // ...
}

Und so weiter... Sollte nicht allzu schwer sein, da was für deine Ansprüche zusammenzuschreiben.
 
Zurück