[PHP] Ausgabe mit Klasse hat längere Parsezeit als mit echo

Wie sieht das mit Smarty und seinen Plugins überhaupt aus ? - Ich muss zugeben, ich habs ja selber noch nie benutzt :shifty: - Wenn ich den Plugin-Ordner leerlösche, läuft es dann auch noch, bzw. läuft sogar schneller ?

Das kann ich dir nicht sagen. Ich denke es passiert nicht. Solange du die Plugins verwendest sollte Smarty nicht meckern.

Ich werde das machen was strolch00 vorgeschlagen hat und danach entscheide ich, welches System ich benutze :)
 
Wie sieht das mit Smarty und seinen Plugins überhaupt aus ? - Ich muss zugeben, ich habs ja selber noch nie benutzt :shifty: - Wenn ich den Plugin-Ordner leerlösche, läuft es dann auch noch, bzw. läuft sogar schneller ?

njea es läuft auch noch, du kannst eben nur die ganzen funktionen nicht nutzen, aber schneller wird es auch nicht, da das laden der plugins wirklich nur minimal zeit kostet, wenn ich mich recht entsinne wurde auch mal daran gearbeitet die on-the-fly zu laden, eventuell wurde es ja bereits umgesetzt

Aber ich kann mich über die Geschwindigkeit von Smarty wirklich nicht beschweren, die paar ms die ich verliere, vreliere ich gerne, wenn ich so einfach das tpl-system mit eigenen funktionen und modifikatoren erweitern kann

@tleilax: ich werde mir das mal ansehen, kannte nur SmartyLite als Alternative, welches dann ja umbenannt, nun aber doch eingestellt wurde
 
Hmm jetzt habe ich ein Problem mit Smarty:
Ich binde mit {include_php file=$page} eine Datei ein. Die Datei ist wieder mit Smarty aufgebaut. Obwohl ich in der Ausgangsdatei (index.php) als auch in der einzubindenen Datei ($page)

$smarty->compile_check = true;

steht, ändert sich am Aussehen der Seite nichts, wenn ich die Datei $page ändere oder darin eingelesene Templates. Das cachen funktioniert sonst super.
Habt ihr eine Idee wie ich das problem löse?
 
Ja klar, nicht umsonst verwende ich include_php :mrgreen: :ugly:
Damit meinte ich eigentlich, dass in der PHP Datei wieder mit Smarty gearbeitet wird ($smarty = new Smarty; ...)
 
neija Johnson wolte dir klar machen, dass das Quatsch ist, du bindest in Smarty kein PHP ein so wenig wie du in PHP HTML einbinden, du lässt dein PHP-Script ausführen und sendest smarty dann Variablen mittels assign() ;)
 
Gerne :ugly:

Vorab: Ich glaube ich habe alles ein bisschen umständlich gemacht, aber mir viel nichts besseres ein ...

Ok, ich habe eine Datei
-> index.php
in der ich mit Hilfe von Smarty ein Template ausgebe (home.tpl).
in
-> index.php
habe ich folgenes definiert:
$smarty->compile_check = true;
$smarty->caching = true;

In
-> home.tpl steht dann u.a. {include_php file=$page}. $page wird von der
-> index.php vorgegeben. In dem Fall hier ist es eine PHP Datei.
In der Datei
-> $page
habe ich dann wieder mit Smarty gearbeitet und lasse ein paar Templates ausgeben, zudem habe ich in der Datei ebenfalls definiert:
$smarty->compile_check = true;
$smarty->caching = true;

Angenommen ich ändere die Datei
-> $page
wird, wenn ich
-> index.php
aufrufe die Veränderung nicht angezeigt.
Erst wenn ich die Cachedateien in dem Cacheordner lösche, wird die Veränderung "sichtbar".

Wenn ich allerdings
-> home.tpl
ändere, kann man den Unterschied sofort sehen.

Komisch, oder? Und das ist das Problem ...
 
Ich habe wiedermal nicht verstanden was du möchtest, nur was mir dauerhaft ins Auge springt, ist der Fehler, dass du im Smarty PHP laden willst, WAS NICHT SEIN DARF

tleilax hat mal nen kleinen Artikel über MVC geschrieben, da steht auch drinne, wie es gelöst werden sollte, wenn ein Frontcontroller (index.php) andere Seiten laden soll


Hier noch mal aus meinem Projekt rauskopiert wie ich es mache als 2. Beispiel:
PHP:
//entsprechende Seite includen
$phpdatei=sprintf('%s%s/%s.php',CONFIG_SEITENKONFIGURATION_FILESYSTEM,$art,$step);
if(file_exists($phpdatei)){
  require($phpdatei);
}
//Template ausgeben
$smarty->display($art.'_'.$step.'.tpl');

im Gegensatz zu tleilax habe ich eben keinen FrontController für die Templatetes, aber das hat bei mir durchaus seine Gründe.

Vllt hilft dir der Artikeö und das Snippet weiter und dir richtige Umsetzung deines Problemes, lässt den Fehler verschwinden.
(Smarty darf nie irgendwelchen Kontakt zu PHP haben, sonst liegt schon ein grundsätzliches Denkproblem vor)
 
Ok, jetzt verstehe ich langsam warum du mich nicht verstehst :ugly:
Danke für den Artikel, ich denke der wird mir sehr helfen.
 
Vorab: Ich glaube ich habe alles ein bisschen umständlich gemacht, aber mir viel nichts besseres ein ...
[...]

wenn du schon ein template system nutzt dann musst du erstmal verstehen zu was und wie ;) der sinn von einem template systems ist es eigentlich die programmlogik von der ausgabelogik zu trennen.

mal kurz bildlich dargestellt was du da versuchst:

PHP:
Programmlogik (index.php)
   Ausgabelogik (home.tpl)
       Programmlogik ($page.php)
           Ausgabelogik ($page.tpl)

also du rufst von der ausgabelogik wieder programmlogik auf... was aber quatsch ist und an dem sinn eines templatesystems vorbei arbeitet. richtig(er) wäre es wenn sich die programmlogik selbst aufruft...

also in der form von:

PHP:
Programmlogik (index.php)
   Programmlogik ($page.php)
Ausgabelogik (home.tpl)
      Ausgabelogik ($page.tpl)

als code würde dass in etwa so aussehen:

index.php
PHP:
<?
$smarty = new ...
switch($page) {
   case 'impessum':
     include('impressum.php');
     break;
   case:
     ....
   default:
     $smarty->assign('template','error.tpl');
}
$smarty->display('home.tpl');
?>

impressum.php
PHP:
<?
$smarty->assign('template','impressum.tpl');
?>
home.tpl
PHP:
<h1>MEINE TOLLE SEITE</h1>
{{include file=$template}} //syntax!?
<hr />
FOOTER

btw: das ist nur eine form wie man mit smarty arbeiten kann, viele wegen führen nach rom.
 
Danke für die Erklärung. Ich glaube, ich habe einiges Mißverstanden.

Ich denke tleilax Frontcontroller ist genau das, was ich "gesucht" habe. Und du hast hier ja ein ähnliches Modell beschrieben. Ich denke jetzt komme ich alleine weiter :)