PHP Variablen im String, Problem

Jukkales

Erfahrenes Mitglied
Hallo

In PHP ist es ja möglich Variablen die in einem String sind auszugeben ohen das man diese aus dem string nehmen muss. Sprich echo "Hallo $name"

Aufgrund dieser Tatsache wollte ich das für ein Templatesystem verwenden. Um die arbeit von mir und meines Designers zu trennen.

Jetzt hab ich das Problem:
Ich habe den Variablennamen einfach in den Quelltext geschreiben udn dann den Quelltext mit get_file_content() geholt. Danach deklarierte ich die Variable und gab den Text aus, mit dem Ergebniss das der Variablenname weiterhin steht. Das Burning Board von Woltlab macht das ähnlich nur dort Funktioniert es

Kann mir da jeman helfen?

~Jukka
 
Hi,

grundsätzlich empfehle ich Dir zum Arbeiten mit Templates Smarty:
http://smarty.php.net

Denn mit eigenen Templatefunktionen gelangt man ohne ausreichendem Wissen ganz schnell an Grenzen.

Wenn Du dennoch bei Deinem eigenem System bleiben willst, poste bitte etwas Code zu dem Problem. "Danach deklarierte ich die Variable ..." kommt mir schon sehr Spanisch vor.
Deklariert wird immer ganz am Anfang, dann folgt die Definition, dann die Ausgabe ...

Gruß tyg3r
 
Variablen zwischen doppelten Anführungszeichen werden vom Parser interpretiert
Variablen zwischen einfachen Anführungszeichen werden vom Parser ignoriert

Konkret:
PHP:
$kuh = "Katze";

echo "Ich habe eine $kuh"; //Ausgabe: Ich habe eine Katze
echo 'Ich habe eine $kuh'; //Ausgabe: Ich habe eine $kuh

Ist es in etwas das, was du wissen wolltest?
 
Hi,

grundsätzlich empfehle ich Dir zum Arbeiten mit Templates Smarty:
http://smarty.php.net

Denn mit eigenen Templatefunktionen gelangt man ohne ausreichendem Wissen ganz schnell an Grenzen.

Wenn Du dennoch bei Deinem eigenem System bleiben willst, poste bitte etwas Code zu dem Problem. "Danach deklarierte ich die Variable ..." kommt mir schon sehr Spanisch vor.
Deklariert wird immer ganz am Anfang, dann folgt die Definition, dann die Ausgabe ...

Gruß tyg3r

Ich möchte kein Fertiges templatesystem nutzen, es geht ja auch alles in meinem System, Rekursives Einfügen, Multilanguage, If Bedingungen etc naja
Nur das aben nicht und ich weiß nicht warum.

PHP:
<?
require('lib/config.inc.php');
$testvar = "Dies ist ein Test";
echo $tpl->Output('index');
?>

Das emein ich mit dem deklarieren

An Igäl:
Ja das weiß ich und das hab ich auch beachtet, nur handelt es sich hierbei ja um einen Dateiinhalt nicht um eine "statische" Variable
 
Mit [phpf]file_get_contents[/phpf] erhälst du lediglich einen bereits "escapten" String, also das, was du via
PHP:
$fgc = '$myvar';
// oder
$fgc = "\$myvar";
erhalten würdest.

An dieser Stelle muss also der Spaß anderweitig evaluiert werden: [phpf]eval[/phpf];
PHP:
eval('$string = "' . addslashes($fgc) . '";');
oder ähnlich. Dieses Verfahren ist aber nicht sonderlich hübsch und schnell.
Ich frage mich, warum so viele denken, in PHP eine eigene Templatesprache verwenden zu müssen, wo doch PHP schon eine Templatesprache an sich ist?
Wenn ordentlich organisiert, ist eine komplett auf PHP basierende Template- / Viewengine wohl immer noch die beste Wahl.
Einen sehr schönen Ansatz machte man mit der Zend_View Klasse aus dem Zend Framework - Wäre vielleicht nen Einblick wert.
 
Ja so geht es danke, mal sehn was sich da machen lässt.

Und warum ich das so mach? Es gibt immerhin leute die kein PHP können so kann man das viel einfacher mit einem Templatesystem machen, und desweiteren ist es außerdem ein Übungsgrund für mich

Trodzdem danke ^^
 
Ich frage mich, warum so viele denken, in PHP eine eigene Templatesprache verwenden zu müssen, wo doch PHP schon eine Templatesprache an sich ist?
Wenn ordentlich organisiert, ist eine komplett auf PHP basierende Template- / Viewengine wohl immer noch die beste Wahl.
Einen sehr schönen Ansatz machte man mit der Zend_View Klasse aus dem Zend Framework - Wäre vielleicht nen Einblick wert.

Naja, ganz so einfach kann man die Sache nicht sehen. Es hängt immer davon ab wo ein Projekt zum Einsatz kommt und wer daran arbeitet.

ZendFramework ist ne schöne Sache für Leute die nicht in der Lage sind sich ein eigenes Framework zu bauen oder einfach keine Zeit dafür haben. Ob die mit ihrer Lösung den richtigen Weg gehen, möchte ich nicht bestätigen. In vielen Fällen kommt man nicht ohne konsequente Trennung zwischen PHP und Ausgabescript (HTML, XHTML, XML, etc) aus.

Weiterhin bietet diese Vorgehensweise riesige Vorteile im Hinblick auf Erweiterungen/Änderungen:
- Was z.B. ist, wenn man von PHP auf JAVA umsteigen will/muss?
- Was ist wenn man von HTML zu XHTML umstellen will?
- Oder aber die komplette Ausgabe in ein XML ausgeben möchte um z.B. eine Flashseite damit zu speisen?
Die Änderung des entsprechenden Bereiches und eine Anpassung der API reichen aus.

Ein weiterer Pluspunkt an Smarty ist, dass aus den Templates ein "Mischcode" kompiliert wird, was natürlich erhebliche Performance Vorteile mit sich bringt. Es wird also quasi ein PHP/HTML "Gemisch" erzeugt, so wie PHP auch mal ursprünglich gedacht war.

Aber PHP(5) hat sich zu einer stark Objektorientierten Sprache weiterentwickelt.
Und meiner Meinung nach ist alleine das Mischen von HTML und PHP sehr prozedural.

Naja wie gesagt, der eine so, der andere so ...
Übrigens, das Arbeiten mit Templateengines vereinfacht auch die Programmierung selber!
Ganz ähnlich wie die Trennung von HTML und Style (CSS). Viele kamen damit nicht klar, weil es "neu" ist ... Nur jeder der umgestiegen ist und sich eingeabeitet hat, würde nie wieder zurück zur "alten" Technik.

Gruß tyg3r
 
Zurück