Klassenproblem
Katastrophe
- php
0 Cheatah0 Katastrophe0 Cheatah
0 Scooter0 Oliver
Hi,
also ich habe bisher folgende Klasse:
<?php
class Dent{
function Dent()
{
global $SERVERROOT;
global $CLASSESROOT;
global $dbHost;
global $dbUser;
global $dbPassword;
global $dbName;
require_once($CLASSESROOT."control/db/mysql4db.class.php");
require_once($CLASSESROOT."design/libs/Smarty.class.php");
$smarty = new Smarty; // Create template Object
$db = new Mysql4db($create = "", $this->dbHost, $this->dbUser, $this->dbPassword, $this->dbName); // database object
//$this->dbUser = $dbUser;
$smarty->template_dir = $SERVERROOT.'smarty/templates/';
$smarty->compile_dir = $SERVERROOT.'smarty/templates_c/';
$smarty->config_dir = $SERVERRROT.'smarty/configs/';
$smarty->cache_dir = $SERVERRROT.'smarty/cache/';
}
function writeHeader()
{
$smarty->assign();
$smarty->display('header.tpl');
}
function writeTop()
{
$smarty->assign('aktuelles','Hier jibt et aktuelles');
$smarty->display('top.tpl');
}
}
?>
In einer anderen Datei steht:
<?php
include("config.inc.php");
require_once($CLASSESROOT."dent.class.php");
$dent = new Dent;
$dent->writeTop();
?>
Nun kommt folgende Fehlermeldung:
Fatal error: Call to a member function on a non-object in d:\dentona_new\classes\dent.class.php on line 38
WARUM NUR?
Danke
Hi,
$dent = new Dent;
$dent->writeTop();Nun kommt folgende Fehlermeldung:
Fatal error: Call to a member function on a non-object in d:\dentona_new\classes\dent.class.php on line 38
WARUM NUR?
es ist nicht nötig zu schreien. Ohne es bei PHP speziell zu wissen: Du hast in $dent eine Referenz auf die Klasse gesetzt, anstatt eine Klasseninstanz zu erzeugen.
Cheatah
Hi,
$dent = new Dent;
$dent->writeTop();
Hier erzeuge ich doch eine Klasseninstanz.
Verstehe ich nicht. Was genau meinst Du?
Danke
Hi,
$dent = new Dent;
Hier erzeuge ich doch eine Klasseninstanz.
nun, in fast allen mir bekannten Sprachen erwarte ich in der Codezeile noch Klammern. Wenn das in PHP anders ist, ignoriere bitte mein Posting.
Cheatah
Hi,
ich schätze $smarty ist in den anderen Funktionen nicht bekannt. (Da wo du keine Instanz gebildet hast.
Mach da entweder ne Instanz auf, oder besser: leg $smarty als Objekt-Eigenschaft an:
function konstruktor()
{
$this->smarty = new Smarty();
}
function blabla
{
$this->smarty->assign();
}
ABer keine Ahnung, ob das der Fehler ist.
Gruß
Scooter
Hi,
include("config.inc.php");
require_once($CLASSESROOT."dent.class.php");
Fatal error: Call to a member function on a non-object in d:\dentona_new\classes\dent.class.php on line 38
bei deinem Problem kann ich dir wohl leider auch nicht weiterhelfen. Du solltest Dir aber unbedingt abgewöhnen, mehr als einen Punkt in einem Dateinamen zu verwenden. (Dies kann bei manchen OS' zu Konflikten führen). Nimm stattdessen besser den "_" (Unterstrich) und nimm den Punkt lediglich für die Dateiendungskennung.
Gruß
Oliver