Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[OOP] Klassenproblem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[OOP] Klassenproblem


 
compuboy1010
01-08-2003, 12:08 
 
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');
}
}

?>
[php]

In einer anderen Datei steht:
[php]<?php
include("config.inc.php");

require_once($CLASSESROOT."dent.class.php");
$dent = new Dent;
$dent->writeTop();

?>[php]

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

[edit]PHP-Tags sponsored by mortalan

 
schmalle
01-08-2003, 12:17 
 
$SERVERRROT <-- hast du nen roten server, oder was wird das?

 
MoRtAlAn
01-08-2003, 12:20 
 
laut fehlermeldung versuchst du etwas als object anzusprechen, was kein objekt ist...
liest du dir schmalles beitrag durch, könntest du den Fehler evtl. finden :D

initialisieren der funktion wäre auch net (dent->dent()).

 
BielWeb
01-08-2003, 12:24 
 
Hi,

Du musst vor dem $dent->writeTop(); die Funktion dent() aufrufen
also z.B.

$dent->dent();
$dent->writeTop();

armin

 
RobertTheHero
01-08-2003, 13:01 
 
Initialisierung ist unnötig !!!! Das macht pHP selbst :teach:


Allerdings ist das Objekt $smarty nur im Kontext der Funktion / Methode dent bekannt.

Entweder du änderst die ganze Klasse um auf $this->smarty, oder du setzt global $smarty überall wo du es benutzt.


gruss

rth

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:28 Uhr.