Schaut doch ganz gut aus
Zwei Dinge die mir aber noch spontan auffielen:
1. Ich verwende hauptsächlich HTML 4.01 und hätte somit mit Deiner Klasse Probleme
2. Schreib hinter die echos immer noch ein "\n", damit im HTML Source-Code auch Zeilenumbrüche gemacht werden. Ansonsten würde alles in einer Zeile stehen - unleserlich falls Du mal nach einem HTML Problem suchen musst.
Also z.B.:
Sahnehäubchen: Wenn Du es jetzt noch durchziehen würdest, und gar keine HTML Ausgabe via PHP zu machen, wärst Du der König und hättest später bei größeren Projekten auch viele Probleme weniger.
Stell Dir mal vor Du würdest jemand zur Seite bekommen, der von PHP überhaupt keine Ahnung hätte. Er würde dann lustig das statische HTML Template (Seite) erstellen und Du müsstest dann alles ins PHP reinziehen.
Besser wäre es Du lässt seine Website so stehen wie sie ist und ersetzt nur die Dinge die dynamisch sind. Konkret würdest Du die Seite unter xxx.html abspeichern. PHP lädt das File nun und sucht nach bestimmten Merkmalen und ersetzt diese durch den Code.
Bei mir schaut das folgendermaßen aus:
wrapper.html:
Der PHP Controller für das Template:
Das Ganze habe ich von einem laufenden Projekt - kann sein dass ich zu viel gestrichen habe aber es soll nur verdeutlichen was ich meine. Die PHP (Controller) Klasse ist für ein Modul (hier "Main") zuständig.
Mit $wrapperTmpl = new TemplateView('core', 'wrapper', false); erzeugst Du ein neues Template und übergibst mit $wrapperTmpl->assign('ST_CONTENT', 'Hallo Welt '); die Inhalte für die HTML Seite ...
Zum Schluss eben das Ganze noch ausgeben (rendern).
Im Prinzip funktioniert das Ganze ähnlich der Template Klasse von Dennis. Schau hier mal nach welche PHP Kurzschreibweisen es für das HTML Template gibt:
http://de.wikipedia.org/wiki/Template_Engine#PHP_Template_Engines
--------
Jedenfalls zum Schluss: Finde es gut, dass Du Dir so viel Mühe gibst und Du bist auf dem richtigen Weg. Vielleicht reicht es erstmal Dein Projekt nach Deiner Klasse umzusetzen und Template Systeme für spätere Projekte zu nutzen.
Ich kenne das, wenn man am Anfang zu viel will und vor lauter Wald die Bäume nicht mehr sieht
Hier noch was: http://php-coding-standard.de/php_template_engine.php
Zwei Dinge die mir aber noch spontan auffielen:
1. Ich verwende hauptsächlich HTML 4.01 und hätte somit mit Deiner Klasse Probleme
2. Schreib hinter die echos immer noch ein "\n", damit im HTML Source-Code auch Zeilenumbrüche gemacht werden. Ansonsten würde alles in einer Zeile stehen - unleserlich falls Du mal nach einem HTML Problem suchen musst.
Also z.B.:
PHP:
public static function create_textarea($name, $id, $value="", $cols=50, $rows=10)
{
return "<textarea cols=\"$cols\" rows=\"$rows\" name=\"$name\" id=\"$id\">$value</textarea>\n";
}
Sahnehäubchen: Wenn Du es jetzt noch durchziehen würdest, und gar keine HTML Ausgabe via PHP zu machen, wärst Du der König und hättest später bei größeren Projekten auch viele Probleme weniger.
Stell Dir mal vor Du würdest jemand zur Seite bekommen, der von PHP überhaupt keine Ahnung hätte. Er würde dann lustig das statische HTML Template (Seite) erstellen und Du müsstest dann alles ins PHP reinziehen.
Besser wäre es Du lässt seine Website so stehen wie sie ist und ersetzt nur die Dinge die dynamisch sind. Konkret würdest Du die Seite unter xxx.html abspeichern. PHP lädt das File nun und sucht nach bestimmten Merkmalen und ersetzt diese durch den Code.
Bei mir schaut das folgendermaßen aus:
wrapper.html:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>...</title>
<link rel="stylesheet" href="core/css/screen.css" type="text/css" media="screen" />
</head>
<body>
<a name="top"></a>
<div id="header">
Blah blubb..
</div>
<!-- #header end -->
<div id="navigation">
<?= $this->ST_NAVIGATION; ?>
</div>
<!-- #navigation end -->
<div id="content">
<?= $this->ST_CONTENT; ?>
</div>
<br /><br /><br />
<div id="footer">
<div>© Cheffe :)</div>
</div><!-- #footer end -->
</body>
</html>
Der PHP Controller für das Template:
PHP:
<?php
if(!defined('validEntry')) die('Not a valid entry point!');
/**
* Controller class for the module 'Main'
*/
class Main extends ModuleController implements Index
{
/**
* Function for the module action 'index'
*
* @access public
* @return void
*/
public function index()
{
try {
// Template
$wrapperTmpl = new TemplateView('core', 'wrapper', false);
// Add the sub templates in the main template and render it
// Das Subtemplate Navigation habe ich für den Tutorial Post gelöscht - hier wird im Prinzip ein Sub Template erzeugt und eingebunden
// Hier ein Beispiel wie Du eine Variable setzt
$wrapperTmpl->assign('ST_CONTENT', 'Hallo Welt :)');
$wrapperTmpl->renderTemplate();
}
catch (Exception $e) {
echo "Seite kann nicht angezeigt werden - Code: ".$e->getCode();
}
}
// END index()
}
// END class Main
?>
Das Ganze habe ich von einem laufenden Projekt - kann sein dass ich zu viel gestrichen habe aber es soll nur verdeutlichen was ich meine. Die PHP (Controller) Klasse ist für ein Modul (hier "Main") zuständig.
Mit $wrapperTmpl = new TemplateView('core', 'wrapper', false); erzeugst Du ein neues Template und übergibst mit $wrapperTmpl->assign('ST_CONTENT', 'Hallo Welt '); die Inhalte für die HTML Seite ...
Zum Schluss eben das Ganze noch ausgeben (rendern).
Im Prinzip funktioniert das Ganze ähnlich der Template Klasse von Dennis. Schau hier mal nach welche PHP Kurzschreibweisen es für das HTML Template gibt:
http://de.wikipedia.org/wiki/Template_Engine#PHP_Template_Engines
--------
Jedenfalls zum Schluss: Finde es gut, dass Du Dir so viel Mühe gibst und Du bist auf dem richtigen Weg. Vielleicht reicht es erstmal Dein Projekt nach Deiner Klasse umzusetzen und Template Systeme für spätere Projekte zu nutzen.
Ich kenne das, wenn man am Anfang zu viel will und vor lauter Wald die Bäume nicht mehr sieht
Hier noch was: http://php-coding-standard.de/php_template_engine.php