php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.01.2010, 15:13  
Benutzer
 
Registriert seit: 20.04.2009
Beiträge: 54
PHP-Kenntnisse:
Anfänger
Yanko befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Fragen zu Smarty im Bezug auf OOP/Caching

Ich habe vor mich etwas mehr mit OOP zu beschäftigen(habe schon Erfahrungen mit Java)

Deswegen will ich ein Hobbyprojekt starten (learning by doing)

Ich habe mich fü Smarty als Template-Engine entschieden (hab mit templates wahrscheinlich nur falsche Erfahrungen):

Als mir das Erklärt worden ist dachte ich das es zum einbinden der dateien ist also so:
PHP-Code:
<?php
   
require('templatesystem.class.php');
   
$t = new Templatesystem;
   
$t->include("../klasse1.class.php");
   
$k1 = new Klasse1("Beispiel");
   echo 
$k1->test ;
?>
Aber bei Smarty-Tuts hab ich eher die meinung, dass smarty die übergebenen werte für die variablen im design ersetzt und nicht andere klassen einbindet:
PHP-Code:
<?php
   
require('klasse1.class.php');
   
$k1 = new Klasse1("Beispiel");
   require(
'Smarty.class.php');
   
$smarty = new Smarty;
   
$smarty->assign("test"$k1->test);
?>
Also worauf ich hinaus will, ist ob man die anderen klassen mit require einbinden soll oder ob man ne klasse(wenn obiges richtig dann smarty) benutzen soll um sie einzubinden

und 2. wegen Caching:

also bei meiner Seite ändert sich nach fast jeden aufruf etwas. auf der Smarty-page stand, dass man durch caching bessere performance bekommt.
aber wenn sich ständig etwas ändert dauert es doch im endeffekt länger als ohne caching? Wird bei smarty es immer so gemacht oder kann man es abschalten bzw. müsste man caching aktivieren, um es zu nutzen oder ist es automatisch deaktiviert?

Hab bei Google schon etwas gesucht und finde vorallem bei 1. mal das mal das andere und es hilft mir nicht weiter

Wenn das das falsche board war, dann tut es mir leid aber bei dem anderen Stand Profi Niveau und soweit bin ich doch noch nicht!

mfG

Yanko
Yanko ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 16.01.2010, 15:43  
Benutzer
 
Registriert seit: 22.11.2009
Beiträge: 78
PHP-Kenntnisse:
Anfänger
christophk befindet sich auf einem aufstrebenden Ast
Standard

Zum Ersten lässt sich sagen, dass ich zwar nicht weiß, warum ein Templatesystem Klassen einbinden sollte, du aber - um require/include für Klassen zu meiden - Autoload benutzen kannst. Sieh's dir einfach mal im php.net-Manual an: autoload.

Gruß
christophk ist offline  
Alt 16.01.2010, 15:49  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.729
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Ich versuche mich mal an (1):

Die Idee hinter einem Templatesystem ist es, Präsentation (z. B. HTML-Code) weitmöglich von Anwendungslogik (PHP) zu trennen. Das sieht generell so aus, dass innerhalb der Anwendung Daten ermittelt und in passende Form gebracht werden (zum Beispiel durch DB-Abfragen), die dann nur noch in ein HTML-Gerüst (oder eine sonstige Form der Ausgabe, z. B. RSS-Feed) eingetragen werden müssen.

Das heißt, die Anwendungslogik wird geschrieben "wie immer", erzeugt aber selbst keine Ausgaben, sondern speichert auszugebende Werte in Variablen zwischen.

Diese Variablen kannst du dann an eine Klasse wie Smarty übergeben, die dann nur noch dafür zuständig ist, sie ins Template zu schreiben und das Template auszugeben. Mehr ist das nicht.

Simples Beispiel ohne Smarty und Co.:

PHP-Code:
<?php

$quadrate 
= array();

for (
$i 1$i <= 10$i++) {
    
$quadrate[$i] = $i $i;
}

// Im "Template" unten sollen nur noch Werte verwendet werden, die in $tpl
// stehen

$tpl['seitentitel'] = 'Meine Seite';
$tpl['quadrate']    = $quadrate;

?>

<!DOCTYPE html>

<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title><?php echo htmlspecialchars($tpl['seitentitel']); ?></title>
    </head>

    <body>
        <h1>Quadratzahlen</h1>

        <?php foreach ($tpl['quadrate'] as $k => $v): ?>

        <p>Quadrat von <?php echo htmlspecialchars($k); ?>:
            <?php echo htmlspecialchars($v); ?></p>

        <?php endforeach; ?>
    </body>

</html>
Zu (2) siehe Anleitung: Smarty
mermshaus ist gerade online  
Alt 16.01.2010, 15:53  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Also zum Thema Templates: Templates hat direkt mal gar nichts mit Klassen oder dem Laden von Klassen zutun. Bei Templates handelt es sich um Dateien mit HTML die Lücken besitzen. Diese "Lücken" werden später mal durch Werte ersetzt. Somit ist es möglich PHP Code und HTML von einander zu trennen und nur die nötigsten Sachen im HTML zu behalten.

Du hast also eine PHP Datei die z.B. Daten aus der DB holt und eine Template Datei die zum Beispiel den HTML Code einer Tabelle enthält. Um jetzt die Daten in die Tabelle zu bekommen kannst du in der PHP Datei der Template Engine (Smarty ist eine Template Engine) diese Werte aus der Datenbank übergeben. Und diese TPL Engine ist dafür da die Lücken im HTML mit den Daten zu füllen.

Mit dem laden von Klassen hat das also nichts zu tun (mit OOP übrigens auch nichts).



Und zum Thema Caching: Caching ist nur dann sinnvoll wenn auf deiner Seite Daten angezeigt werden die sich nicht bei jedem Aufruf ändern. Zum Beispiel hast du deine Startseite auf der News angezeigt werden. Diese ändern sich sehr selten (im Vergleich zu den Aufrufen). Daher macht es Sinn die Startseite zu cachen. Da dadurch müssen die Daten nur einmal aus der DB geladen werden und sind danach direkt als Datei verfügbar ohne dass daran noch etwas getan werden muss.

Der Cache läuft dann vielleicht 1h und wird dann erneut generiert.

Smarty nutzt nicht Caching von alleine, dass musst du schon implementieren (siehe Doku).

Beitrag editiert:
mermshaus war schneller xD
Flor1an 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
[Erledigt] Problem mit Smarty extend Powie PHP Tipps 2009 17 02.01.2010 23:36
Smarty und das MVC [-UFO-]Melkor Software-Design 11 29.12.2008 13:01
Smarty Templates & ZF KeKs0r PHP-Fortgeschrittene 6 24.12.2008 16:20
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
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
Smarty: allgemeine Fragen zum Zusammenspiel mit der Klasse & PHP Tipps 2005-2 6 13.09.2005 22:22
Smarty Error Simon9990 PHP Tipps 2005-2 8 07.07.2005 09:34
[Erledigt] includepathproblem pear blockiert smarty und umgekehrt PHP Tipps 2005 1 08.05.2005 18:46
[Erledigt] Fragen über Fragen... wer kann helfen? PHP Tipps 2004 2 08.07.2004 21:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
smarty blockiert andere klassen, smarty und oop, smarty erfahrungen, php templates oop, klasse aus template aufrufen smarty, smarty oop, php oop und smarty, oop with smarty engine, php oop caching, smarty und oop beispiel, php smarty die grafik kann nicht angezeigt werden, weil sie fehler enthält., smarty in klassen verwenden, oop smarty, smarty h1 automatisch klasse geben, dateinamen smarty caching, smarty klassen inkludieren, smarty php erfahrungen, smarty wert füt php benutzen, smarty etwas auf einer seite nicht anzeigen nur auf anderen, smarty template dateien werden nicht aktualisiert

Alle Zeitangaben in WEZ +2. Es ist jetzt 16: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