| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack (1) | Themen-Optionen | Thema bewerten |
| | |
| Neuer Benutzer | Nabend zusammen, ich habe folgendes Problem mit meiner eigenen "Template-Engine": Hier erstmal die target Seite {TITLE} (mit dem "Fehler") Der Fehler ist offensichtlich. Die Tabelle mit den Logs ist nicht im Content-Bereich. Meine Frage: Wie kommt das, dass die über dem Layout ist? Normale Strings kann er anzeigen wie {DATUM} z.B. Würde mich freuen wenn jemand einen Einfall für die Lösung hat. PHP-Code: PHP-Code: PHP-Code: |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.069
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Vermutlich weil deine showLogs() Methode der Logging Klasse den Wert nicht per return zurückliefert, sondern mit echo in den Ausgabepuffer schreibt. Benutz mal HTML-Validierung, das ist ja grauenhaft und kann dir bei einigen Problemen mit HTML sehr helfen (diesem allerdings nicht). Für Firefox: https://addons.mozilla.org/de/firefox/addon/249 https://addons.mozilla.org/de/firefox/addon/60 (Tools -> Validate HTML) |
| | |
| | |
| Moderator und Wett-König | Hallo methanol, SQL-Abfrage-Routingen haben in einer Template-Engine designtechnisch nichts zu suchen. Die Komponente sollte so unabhängig sein, dass sie ohne das funktioniert. SQL-Abfragen und Ausgaben sollten in eigenen Präsentationslogik-Komponenten residieren. Just my 2 cents!
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | |
| Supermoderator HD Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Definiere eine externe Klasse, die die Datenbankabfragen übernimmt. Deine Templateklasse benutzt dann nur noch diese Datenbankklasse als Schnittstelle und hat nichts mehr selbst damit am Hut.
__________________ Refining Linux Advent Calendar series “24 Outstanding ZSH Gems” |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 06.09.2008
Beiträge: 189
![]() | Also ich weiß nicht... Ich kann mit dieser Klasse im Allgemeinen nichts Anfangen. Der Support von PHP 4 wurde mit dem Release der Version 4.4.9 nun offiziell eingestellt. Dieser Schritt wurde bereits letztes Jahr angekündigt und sollte mit dem Start der Olympischen Spiele in Bejing zusammenfallen. Ich kann nur empfehlen, dass schnellst möglich alle ihre alten und noch verwendbaren Klassen oder Scripte auf den Stand von PHP5 bringen (ist auch komfortabler). Zudem habe ich mir nur die Methode makeFile() angesehen und schon den Faden verloren. Wieso heißt diese Methode makeFile()? Soweit ich das sehe erstellt diese methode doch garkeine Datei sondern lädt ein Template. Daher solltest du lieber einen Konstruktor oder wenigstens einen Namen wie load() oder so verwenden. Zudem ist es viel einfacher das Template mit file_get_contents() einzulesen. Die Variable $template musst du im übrigen nicht nochmal in der Methode deklarieren. Es reicht auch, wenn du das am Anfang der Klasse machst. Wie kann das ganze nun alternativ aussehen? Greife doch einfach auf die magischen Funktionen von PHP zurück. Mit __set(), __get() und __call läst sich eine sehr sehr einfache und übersichtliche Klasse basteln, mit der du dieses Problem nicht hast. PHP-Code: Code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>· <?= $this->title; ?> ·</title>
<meta name="Title" content="<?= $this->title; ?>" />
<meta name="Author" content="pseudo@mail.de" />
<meta name="Publisher" content="pseudo.tld" />
<meta name="Copyright" content="pseudo.tld" />
<meta name="Revisit" content="After 2 days" />
<meta name="Keywords" content="pseudo, test, titel, homepage, website" />
<meta name="Description" content="Besuchen Sie meine Seite! Es könnte sich lohnen." />
<meta name="Abstract" content="Visit my website. It'll be great." />
<meta name="Robots" content="INDEX,FOLLOW" />
<meta name="Language" content="Deutsch" />
<meta name="Distribution" content="global" />
<meta http-equiv="content-Type" content="text/html;charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="design.css"/>
</head>
<body>
<div id="page">
<h1 id="headline"><?= $this->title; ?></h1>
<ul id="navigation">
<?= $this->navigation; ?>
</ul>
<div id="content">
<?= $this->content; ?>
</div>
<p id="footer">
powered by <?= $this->title; ?> © <?= $this->date; ?>
</p>
</div>
</body>
</html>
PHP-Code: str_replace() kann man zwar verwenden, halte ich aber für eine schlechte Idee, da das ein echter Performance Fresser werden kann. Habe ich früher auch gemacht, geht auch für sehr sehr kleine Projekte, ist aber nicht sehr empfehlenswert und, wie man sieht, geht es doch auch sehr sehr viel einfacher. MfG, Andy
__________________ I'm so tired of slitting the throats of people calling me a violent psychopath. Geändert von #Avedo (16.10.2008 um 01:36 Uhr). |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 06.09.2008
Beiträge: 189
![]() | Du verwendest zwar nicht str_replace() aber du verwendest preg_replae(). Das meinte ich. Ich denke die Klasse ist relativ einfach zu verstehen. Kleine Schwierigkeiten bereiten, wie du bereits erwähntest, zumeist die magischen Methoden, sowie das Handling von Exceptions. Exceptions sind einfach eine gute und sehr saubere Fehlerbehandlung.
(Quelle: selfphp.de) MfG, Andy
__________________ I'm so tired of slitting the throats of people calling me a violent psychopath. |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
LinkBacks (?)
LinkBack to this Thread: http://www.php.de/php-fortgeschrittene/48140-erledigt-template-fehler.html | ||||
| Erstellt von | For | Type | Datum | |
| Erste Klasse, Fehlermeldung - PHP • Webdesign Forum | This thread | Refback | 16.10.2008 02:33 | |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Lieber Template oder Normal für ein community? | mysteryxxx | PHP Tipps 2008 | 8 | 17.09.2008 23:04 |
| Eckige Klammern in Template | nutshell | PHP Tipps 2006 | 9 | 05.06.2006 19:12 |
| template mit funktion einlesen | imported_kremser | PHP Tipps 2006 | 16 | 03.02.2006 00:43 |
| template in template einfuegen | tonne | PHP Tipps 2005-2 | 8 | 10.11.2005 22:24 |
| Template Error: set_root: ./tpl/ is not a directory | argon | PHP Tipps 2007 | 11 | 01.11.2005 14:30 |
| Wordpress Template | HTML, Usability und Barrierefreiheit | 8 | 22.08.2005 11:21 | |
| Template System oder Lösung gesucht | PHP Tipps 2005 | 14 | 21.05.2005 22:07 | |
| Template verständniss problem; referenz | PHP Tipps 2005 | 17 | 19.05.2005 06:06 | |
| Template: Verschachteln von foreach | PHP Tipps 2005 | 2 | 12.05.2005 15:37 | |
| Smarty Problem (Template Laden) | JanM | PHP Tipps 2005 | 5 | 11.05.2005 16:36 |
| Php Code als Variable definieren und in Template darstellen | PHP Tipps 2004-2 | 4 | 31.12.2004 16:22 | |
| suche ein bestimmtes template system | PHP Tipps 2004-2 | 2 | 07.11.2004 19:49 | |
| Template Parser | PHP-Fortgeschrittene | 9 | 06.10.2004 23:04 | |
| Inhalte von 2 Servern über 1 Template laufen lassen? | scheibo | PHP Tipps 2004 | 1 | 30.09.2004 01:20 |
| [Erledigt] Template Scripting | PHP-Fortgeschrittene | 2 | 04.06.2004 18:34 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| mysteryxyx@web.de |