PHP Klasse zur MySQL Verbindung - Verbesserungen

selberbauer

Captain
Registriert
Juni 2009
Beiträge
3.604
Hallo,
Ich will mich etwas in OOP üben und habe eine kleine Klasse geschrieben, mit welcher ich zukünftig einfach Verbindungen zum MySQL Server aufbauen kann.

Folgendes möchte ich noch verbessern:
1. Ich wollte die Anmeldeinformationen(credentials) als Array speichern, allerdings weiß ich nicht wie ich, dass in Klassen tue, weswegen $credentials['host'] usw. falsch sind. Wie mach ich das richtig?
2. Die if Konstruktionen sind m.M.n. etwas unübersichtlich, gibt es hierfür eine einfache bessere Lösung?
3. Wie baue ich einen "vorhandenheits"-Test ein? Mit wem geprüft wird, ob bsw. die Datenbank oder die Tabelle vorhanden sind?
4. Was lässt sich semantisch noch bessern?


PHP:
<?php

class db_connection {
	var $credentials = array();
	var $credentials['host']     = 'localhost';
	var $credentials['user']     = 'test_user';
	var $credentials['password'] = 'wambo';
	var $credentials['database'] = 'test';

	var $connection_id;
	var $result;
	var $result_code;
	var $state = 'disconnected';
	var $errorcode;
	var $errormessage;

	function db_connection_error() {
		$this -> state        = 'disconnected';
		$this -> errorcode    = mysql_error();
		$this -> errormessage = mysql_errno();
		return 0;
	}
	
	function db_connection_build {
		if($this -> state != 'disconnected') {
			if(!$this -> connection_id =
			mysql_connect($this -> credentials['host'], credentials['user'], credentials['password'])) {
				db_connection_error();
			} else {
				return 1;
			}	
		} else {
			$this -> state = 'connected';
			return 1;
		}	
	}
	
	function db_connection_database() {
		if($this -> state == 'connected') {
			if(!mysql_select_db($this -> credentials['database'])) {
				db_connection_error();
			} else {
				return 1;
			}
		} else {
			return 0;
		}
	}
?>

Mit freundlichen Grüßen,
selberbauer
 
Kleine Gegenfrage: Hast du dich mal mit mysqli befasst?

Vielleicht erspart dir das einiges an Arbeit... :)
 
okay grundlagen oop sollte man erstmal durchgehen

grundaufbau klasse:

PHP:
<?php
class DbConnection //Camelcaps schreibt sich besser
{
// Variablen, Funktionen etc.  typ geben (public, private, protected)
    private $_host = 'localhost'; // evtl sogar protected da ja niemand außerhalb darauf zugreifen soll, außer die klasse selbst
    private $_user = 'testuser';
    private $_pw = 'pw';
    private $_db = 'db';

    public function dbError()
    {
         // bla
    }
    // usw.
}

achja und der aufruf einer funktion innerhalb einer klasse geht so:

$this->dbError();

zu 1.) wozu als Array speichern, wenn du eh jede variable einzeln brauchst
zu 2.) soweit ich das sehe nicht wirklich. irgendwie muss man ja unterscheiden was wann passieren soll

und wie mein Vorposter schon schrieb ist mysql_connect bla ja die pure verbindung, ich empfehle dir da mal PDO anzuschauen
http://de3.php.net/manual/de/class.pdo.php
 
Zurück
Oben