Guten Morgen zusammen,
ich beiße mir seit gestern nun an folgender Situation die Zähne aus:
Ich baue mir anhand eines Tutorials ein MVC-Framwork auf, welches ich für meine Homepage benutzen möchte.
Bisher klappt alles auch schön und gut, jedoch habe ich ein Problem bei der Datenabfrage über eine Datenbankklasse aus dem Model heraus.
Das DB-Object instanziiere ich als normale Variable im __Contruct, damit dies zur Lebenzeit des Objects (Model) zur Verfügung steht und ich mir die Daten aus der DB holen kann.
Jedoch wirft er mir in Zeile 23 einen Fehler den ich garnicht nachvollziehen kann:
Auch wenn ich das DB-Object als static deklariere und damit aufrufen will, sagt er mir dass ich auf kein Object zugreifen kann.
Meine "Recherchen" ergaben, dass aber das DB-Object NULL ist.
Das Datenbankobject funktioniert aber (wenn ich es nicht aus dem Model aufrufe, sondern z.b. in der index.php) ganz normal und wie gewohnt.
Eventuell sieht einer von euch den Fehler sofort und könnte mich da unterstützen.
Vielen Dank!
EDIT:
So klappt es nun.
Wie ich erfahren habe, muss ich das Singleton(-Verfahren) dort benutzen.
So klappt es:
ich beiße mir seit gestern nun an folgender Situation die Zähne aus:
Ich baue mir anhand eines Tutorials ein MVC-Framwork auf, welches ich für meine Homepage benutzen möchte.
Bisher klappt alles auch schön und gut, jedoch habe ich ein Problem bei der Datenabfrage über eine Datenbankklasse aus dem Model heraus.
Das DB-Object instanziiere ich als normale Variable im __Contruct, damit dies zur Lebenzeit des Objects (Model) zur Verfügung steht und ich mir die Daten aus der DB holen kann.
Jedoch wirft er mir in Zeile 23 einen Fehler den ich garnicht nachvollziehen kann:
Code:
Fatal error: Using $this when not in object context in C:\xampp\htdocs\disane\classes\model.php on line 23
PHP:
<?php
/**
* Dataaccess-Layer
* Author: Marco Franke
* Date: 21:20 22.12.2009
*/
require_once("config/settings.php");
require_once("classes/database.php");
class Model{
private $mysql;
private static $NewsArticles = array();
public function __contruct(){
$this->mysql = new Database(DBHOST, DBPW, DBUSER, DBNAME);
}
/**
* Gibt alle Einträge des Blogs zurück.
*/
public static function getNewsArticles(){
// Hier tritt der Fehler auf:
self::$NewsArticles[] = mysql_fetch_assoc($this->mysql->receiveData("SELECT ID, Headline, Article, DateTime, FK_User_ID FROM NewsArticles"));
return self::$NewsArticles;
}
/**
* Gibt einen bestimmten Eintrag zurück.
*/
public static function getNewsArticle($id){
if(array_key_exists($id, self::$NewsArticles)){
return self::$NewsArticles[$id];
}else{
return null;
}
}
}
?>
Auch wenn ich das DB-Object als static deklariere und damit aufrufen will, sagt er mir dass ich auf kein Object zugreifen kann.
Meine "Recherchen" ergaben, dass aber das DB-Object NULL ist.
Das Datenbankobject funktioniert aber (wenn ich es nicht aus dem Model aufrufe, sondern z.b. in der index.php) ganz normal und wie gewohnt.
Eventuell sieht einer von euch den Fehler sofort und könnte mich da unterstützen.
Vielen Dank!
EDIT:
So klappt es nun.
Wie ich erfahren habe, muss ich das Singleton(-Verfahren) dort benutzen.
So klappt es:
PHP:
<?php
/**
* Dataaccess-Layer
* Author: Marco Franke
* Date: 21:20 22.12.2009
*/
require_once("config/settings.php");
require_once("classes/database.php");
class Model{
private static $mysql = false;
private static $NewsArticles = array();
public static function getInstance() {
if(self::$mysql === false) {
self::$mysql = new Database(DBHOST, DBPW, DBUSER, DBNAME);
}
return self::$mysql;
}
/**
* Gibt alle Einträge des Blogs zurück.
*/
public static function getNewsArticles(){
$SQL = self::getInstance();
self::$NewsArticles[] = mysql_fetch_assoc($SQL->receiveData("SELECT ID, Headline, Article, DateTime, FK_User_ID FROM NewsArticles"));
return self::$NewsArticles;
}
/**
* Gibt einen bestimmten Eintrag zurück.
*/
public static function getNewsArticle($id){
if(array_key_exists($id, self::$NewsArticles)){
return self::$NewsArticles[$id];
}else{
return null;
}
}
}
?>
Zuletzt bearbeitet: