Eigenes Themplate-System...

jackob100

Mitglied
Hallo

Da mein Server vor kurzem komplett auf php5 umgestellte, befasse ich mich nun ein wenig mit php5.

Mein Ziel ist es ein eigenes Themplate-System zu erstellen, da ich kein Fan von Fertigen Scripts bin:)

Gut ich stehe noch am Anfang, aber schaut euch das momentane Script doch mal an, würde mal sagen es ist selbsterklärend ;-)


PHP:
<?php
// Diese Funktion wird automatisch aufgerufen, sobald ein Objekt einer Klasse erzeugt wird. 
function __autoload($class)
	{
	require 'class/'.$class.'.class.php';
	}
	
$ausgabe = new Themplate('tpl/themplates/v1.htm');

echo $ausgabe;
?>

PHP:
<?php
class Themplate
	{
	private $filename;
	private $offen;
	private $inhalt;
	private $out;
	
	public function __construct ($name)
		{
		$this -> filename = $filename;
		}
		
	public function __destruct ()
		{
		echo $this -> out;
		}

	function Themplate()
		{
		if( empty($this -> filename) )
			{
			//ERROR Keine Datei angegeben.
			}
		else
			{
			if ( file_exists($this -> filename) )
				{
    			$this -> offen = fopen ("/home/".$this -> filename."", "r");
				
				$this -> inhalt = file_get_contents( $this -> offen );
				
				$this -> out = str_replace("{Hallo}", "Willkommen", $this -> inhalt);
				}
			else
				{
				//ERROR Verzeichnis oderDatei nicht vorhanden.
				}
        	}

    	}
	}
?>

Bin ich auf dem richtigen Weg?

Hoffe auf Kritik, um nach dem neusten Standart zu Scripten.


Momentane Fehler Meldung:

Catchable fatal error: Object of class Themplate could not be converted to string in /home/xxx/www/yyy/tpl/v1.php on line 10
 
Wenn du ein Objekt als Zeichenkette ausgeben willst, musst du den Rückgabewert in der __toString()-Methode definieren, beispielweise:
PHP:
class Foobar {
	function __toString() {
		return 'Hallo, ich bin ein '.get_class($this).'-Objekt.';
	}
}
echo new Foobar;
 
Danke, habe es so getestet und die Ausgabe klappt so...

jedoch bekomme ich in
PHP:
$this -> out
keinen Wert

PHP:
<?php
class Themplate
    {
    private $filename;
    private $offen;
    private $inhalt;
    private $out;
    
    public function __construct ($name)
        {
        $this -> filename = $name;
        }
        
    public function __toString()
		{
        return ''.$this -> out.'';
    	}

    function Themplate()
        {
        if( empty($this -> filename) )
            {
            $this -> out = 'Fehler 1';
            }
        else
            {
            if ( file_exists("/home/".$this -> filename)."" )
                {
                $this -> offen = fopen ("/home/".$this -> filename."", "r");
                
                $this -> inhalt = file_get_contents( $this -> offen );
                
                $this -> out = str_replace("{Hallo}", "Willkommen", $this -> inhalt);
                }
            else
                {
                $this -> out = 'Fehler 2';
                }
            }

        }
    }
?>

Eine leere Seite wird angezeigt...
 
PHP 5 ruft nur noch den Konstruktur __construct() auf, die Themplate()-Methode wird also gar nicht ausgeführt.

Übrigens: Template wird ohne H und Standard mit zwei Ds geschrieben.
 

Neue Beiträge

Zurück