Ich habe dieses Wochenende begonnen mit Klassen zu Programmieren. Bis jetzt habe ich nur mit Funktionen gearbeitet. Dies macht das ganze aber oft sehr unübersichtlich und wirklich wiederverwendbar sind die Funktionen auch nicht.
Zum einstieg habe ich begonnen mein User Management in eine Klasse zu schreiben. Die Methode Login Funktioniet auch schon einwandfrei, dennoch ergeben sich für mich ein paar Fragen welche für mich nocn nicht ganz klar sind.
Es geht mir aber vorallem um meine DB Klasse. Ich möchte alles so Performant wie möglich Programmieren da gewisse Projekte von mir doch schon einige User haben. Nun meine Frage dazu:
1. Ist es sinnvoll auf jeder Seite
zu machen und in den anderen Klassen via GLOBAL zuzugreiffen oder sollte ich (da die Datenbank ja eigentlich nur in anderen Klassen verwendet wird diese immer erst da mittels
laden? Ich habe irgend wie das gefühl das per GLOBAL weniger RAM verwendet wird da sie ja nur einmal geladen wird.
2. Mach ich nur ein Denkfehler oder ist diese Klasse unter umständen sogar eine Sicherheitslüclke?
Ich gehe nun davon aus:
Ich brauche die Benutzerdaten und hole diese:
Danach werden die Resultate ausgegeben...
ich starte eine zweite query welche irgend welche andere Daten holen soll, aber aus welchem grund auch immer fehlschlägt. Nun sollte ja per
immer noch das alte Resultat zu sehen sein, oder mache ich da nur einen Denkfehler?
Falls ja, was gibt es für alternative Lösungen?
Die Klasse ist noch nicht 100% ferig, es soll noch ein error logging hinzugefügt werden etc.
Zum einstieg habe ich begonnen mein User Management in eine Klasse zu schreiben. Die Methode Login Funktioniet auch schon einwandfrei, dennoch ergeben sich für mich ein paar Fragen welche für mich nocn nicht ganz klar sind.
Es geht mir aber vorallem um meine DB Klasse. Ich möchte alles so Performant wie möglich Programmieren da gewisse Projekte von mir doch schon einige User haben. Nun meine Frage dazu:
PHP:
class DB{
private $connection= NULL ;
private $query =0 ;
private $error = NULL ;
private $host= NULL;
private $database = NULL ;
private $user= NULL;
private $pass = NULL ;
public function __construct($host=NULL, $database=NULL, $user=NULL, $pass=NULL)
{
$this->host = $host ;
$this->database = $database ;
$this->user = $user ;
$this->pass = $pass ;
}
private function connect()
{
if(!$this->connection)
{
$this->connection = mysql_connect($this->host,$this->user,$this->pass,TRUE);
mysql_select_db($this->database, $this->connection);
}
}
public function query($query) {
$this->connect() ;
$this->result=mysql_query($query,$this->connection);
$this->query++ ;
}
public function back() {
return mysql_fetch_assoc($this->result);
}
public function count() {
if($this->counter===NULL && is_resource($this->result)===true) {
$this->counter=mysql_num_rows($this->result);
}
return $this->counter;
}
}
1. Ist es sinnvoll auf jeder Seite
PHP:
$db = new DB ;
PHP:
$db = new DB ;
2. Mach ich nur ein Denkfehler oder ist diese Klasse unter umständen sogar eine Sicherheitslüclke?
Ich gehe nun davon aus:
Ich brauche die Benutzerdaten und hole diese:
PHP:
$db->query("SELECT email, nickname FROM benutzer WHERE id='999'") ;
PHP:
print_r($db->back()) ;
PHP:
print_r($db->back()) ;
Falls ja, was gibt es für alternative Lösungen?
Die Klasse ist noch nicht 100% ferig, es soll noch ein error logging hinzugefügt werden etc.