php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.05.2006, 19:49  
Benutzer
 
Registriert seit: 19.05.2005
Beiträge: 33
PHP-Kenntnisse:
Fortgeschritten
Komandar
Standard Smarty + Oop

Hi.

Ich habe folgenden Code:

index.php
Code:
<?php

class main {

	function __construct() {

		protected $smarty;

		session_start();
		require_once('library/config.php');

		/**
		* Smarty einbinden
		*/
		require_once('library/smarty/Smarty.class.php');
		$this->smarty = new Smarty();
		$this->smarty->template_dir = 'templates/';
		$this->smarty->compile_dir = 'library/smarty/templates_c/';
		$this->smarty->config_dir = 'languages/';
		$this->smarty->cache_dir = 'library/smarty/cache/';
		$this->smarty->assign('image','templates/images');

		/**
		* Funktionen einbinden
		*/
		require_once('library/globals.php');
		$this->globals = new globals();

	}
}

require_once('classes/test.php');
$t = new test();

?>
test.php
Code:
<?php

class test extends main {

	public function __construct() {

		parent::__construct();

		$this->globals->error('error_2','error');
	}
}
?>
Nun, wie man sieht habe ich mich schon an dem ganzen versucht.
Es geht dadrum, dass ich von allen Klassen (welche in verschiedenen Dateien ausgelagert sind) mittels $this-> (z.B. auf Smarty) zugreifen kann ohne Smarty mit global erstmal in die Funktion/Klasse reinzuladen. Bei Smarty klappt das ganze leider gar nicht und beim ausführen bricht das Script immer ohne eine Fehlermeldung ab.

Weiß da jemand weiter ?
Komandar ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.05.2006, 19:57  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich wußte garnicht, dass $this-> inmitten einer normale Skriptdatei funktioniert.
Halte ich aber für ziemlich sinnlos.

Vergiss erstmal dieses $this und übergib $smarty einfach dem Konstruktor von test .
Zergling-new ist offline  
Alt 27.05.2006, 20:25  
Benutzer
 
Registriert seit: 19.05.2005
Beiträge: 33
PHP-Kenntnisse:
Fortgeschritten
Komandar
Standard

ok mein fehler .

Habe den Code nun geändert.
Siehe oben.

Ist es denn nicht irgendwie möglich in der test.php-Klasse Smarty aufzurufen ohne globals zu nutzen, es zu übergeben oder nochmal zu init.?
Komandar ist offline  
Alt 27.05.2006, 20:27  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hör mir doch mal zu
3 Sätze hab ich geschrieben und mindestens einen davon hast du komplett übergangen. Hallo PISA!
Zergling-new ist offline  
Alt 27.05.2006, 20:30  
Gast
 
Beiträge: n/a
Standard

Vererbung funktioniert auch anders.
PHP-Code:
<?php
class main {
    
// Code der Klasse main
}

class 
test extends main {
    
// erbt von main
    // Code von test
}

$t = new test(); // Du willst kein Objekt von main sondern von test
?>
nicht die abgeleitete Klasse im Konstruktor der Basisklasse einbinden.
 
Alt 27.05.2006, 20:47  
Benutzer
 
Registriert seit: 19.05.2005
Beiträge: 33
PHP-Kenntnisse:
Fortgeschritten
Komandar
Standard

Hmm ja ok, aber Smarty will trotzdem nicht =\.
Oben nochmal der aktuelle Code.
Komandar ist offline  
Alt 27.05.2006, 21:15  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Du weist $this->smarty ja auch nirgends etwas zu ^^

http://de.php.net/manual/en/language.oop.php
http://de.php.net/manual/en/language.oop5.php

Außerdem sehe ich kein "var $smarty" in deiner main-Klasse. Es funktioniert zwar leider auch so, aber schön ist das nicht.
Zergling-new ist offline  
Alt 27.05.2006, 22:10  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Zergling
Du weist $this->smarty ja auch nirgends etwas zu ^^
In der vorherigen Version war $this->smarty=$smarty; sogar noch vorhanden. Verschlimmbessert
 
Alt 27.05.2006, 22:18  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi "Komandar", herzlich willkommen.

Du überschreibst mit dem Konstruktor in test den Konstruktor von main. Du musst diesen also explizit aufrufen, indem du im Konstruktor von test parent::__construct(); aufrufst. Und, klar, ein protected $smarty; sollte noch rein.

Ansonsten frage ich mich, was die Configs und der Cache in einem lib-Ordner zu suchen haben, die Klasse test aber wiederum woanders liegt.

Weiter wäre es vielleicht ganz gut, den ersten Code hier im Thread nicht immer wieder anzupassen, denn sonst kann nachher niemand mehr die Diskussion nachvollziehen, weil wir uns auf Code beziehen, der längst umgeschrieben ist.

Basti
Basti ist offline  
Alt 28.05.2006, 17:10  
Benutzer
 
Registriert seit: 19.05.2005
Beiträge: 33
PHP-Kenntnisse:
Fortgeschritten
Komandar
Standard

Zitat:
Zitat von Basti
Hi "Komandar", herzlich willkommen.

Du überschreibst mit dem Konstruktor in test den Konstruktor von main. Du musst diesen also explizit aufrufen, indem du im Konstruktor von test parent::__construct(); aufrufst. Und, klar, ein protected $smarty; sollte noch rein.

Ansonsten frage ich mich, was die Configs und der Cache in einem lib-Ordner zu suchen haben, die Klasse test aber wiederum woanders liegt.

Weiter wäre es vielleicht ganz gut, den ersten Code hier im Thread nicht immer wieder anzupassen, denn sonst kann nachher niemand mehr die Diskussion nachvollziehen, weil wir uns auf Code beziehen, der längst umgeschrieben ist.

Basti
Hab meinen Code dahingehend angepasst (siehe oben), doch immernoch... eine weiße Seite .
Komandar ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Smarty + MySQL = immer falsche Ausgabe m0use` PHP Tipps 2006 44 21.11.2008 20:30
Smarty: Templatedateien werden nicht aktualisiert! DER_Brain PHP Tipps 2008 9 24.04.2008 22:40
Problem mit Smarty ccfirefox HTML, Usability und Barrierefreiheit 1 25.10.2007 16:19
Was ist Aufgabe des Templates (Smarty), was nicht? agrajag PHP Tipps 2007 8 24.02.2007 13:19
Smarty => 1ste allgemeine Verunsicherung Canni PHP Tipps 2006 7 10.10.2006 17:56
Smarty + Oop Problem Komandar PHP Tipps 2006 5 25.07.2006 14:36
problem mit javascript und smarty snatch-ic HTML, Usability und Barrierefreiheit 2 08.06.2006 22:11
Smarty verschachtelt snatch-ic PHP Tipps 2006 16 28.02.2006 20:54
[Erledigt] Navigation auf Smarty umstellen?! PHP-Fortgeschrittene 3 10.01.2006 09:19
Frage zu Smarty PHP Tipps 2005-2 10 07.07.2005 14:49
Smarty Error Simon9990 PHP Tipps 2005-2 8 07.07.2005 09:34
Smarty und X-Cart Profis gesucht Beitragsarchiv 1 21.05.2005 13:38
[Erledigt] includepathproblem pear blockiert smarty und umgekehrt PHP Tipps 2005 1 08.05.2005 18:46
Smarty? Die wesentlichen Vorteile? Off-Topic Diskussionen 7 20.09.2004 13:04
was ist schneller smarty, oder normaler php code? eQuin PHP-Fortgeschrittene 2 03.09.2004 11:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
oop smarty, smarty oop, smarty php oop, smarty objektorientiert, php smarty einbinden, php smarty oop, smarty php, smarty parent, php5 smarty oop klasse, smarty parent::, oop php smarty, php oop smarty, smarty session_start, oop php en smarty, eigene website mit smarty und php oop, oop pdo smarty, $smarty->assign oop, smarty oop php, smarty objektorientierung, objektorientierte programmierung php mit smarty

Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.