Ich seh immer wieder das Leute HTML mit PHP ausgeben (z.B Als PHPler krieg ich da immer wieder den Kotzreiz,denn meiner Meinung nach sollte man diese beiden Dinge stehts voneinander trennen.
Also Ausgabe stehts von Programmlogik trennen.
Eigentlich keine große Sache und wenn man sich einmal dran gewöhnt hat hilft es ungemein
Naja ich hab mir gedacht ich poste einfach mal ein paar Anregungen
1.PHP Schleifen in Html benutzen
Schlecht
PHP-Code:
<?php
foreach($cars as $car)
{
echo '<p>'.$car.'</p>';
}
?>
Gut:
PHP-Code:
<?php foreach($cars as $car) :?>
<p> <?php echo $car ?> </p>
<?php endforeach ?>
Die 2te Schreibweise erhöht in größeren Html Dokumenten extrem die Leserlichkeit zudem kann der Frontendler ohne große Probleme änderungen Vornehmen.
Die Schreibweise funktioniert mit allen PHP Schleifen und Abfragen.
Wichtig ist der : nach dem Schleifen/Abfragen-Kopf und dass anstadt mit geschweiften Klammern die Schleife/Abfrage mit <?php end+Name?> beendet wird
Beispiel:
PHP-Code:
<?php if() :?>
<?php else :?>
<?php endif; ?>
<?php while() :?>
<?php endwhile ?>
<?php foreach() :?>
<?php endforeach?>
etc.
2. PHP im eigentlichen HTML Dokument minimieren
Ein Beispiel hierfür wäre man möchte die Post Daten validieren.
Oft sehe ich dann sowas hier ->
PHP-Code:
<?php
$vorname = htmlspecialchars($_POST['vorname']);
$zuname = htmlspecialchars($_POST['zuname']);
mehr validation ...
...
...
...
//Ausgabe
echo '<p>'.$vorname.' '.$zuname.'</p>';
?>
<form action="" method="post">
<input name="vorname" type="text" size="30" maxlength="30" />
<input name="zuname" type="text" size="30" maxlength="40"/>
</form>
Schöner wäre doch an dieser Stelle wenn man die Logik von der Ausgabe trennen würde.
Als erstes die Html Datei:
PHP-Code:
<?php
//Validator einbinden
require_once 'validator.php';
//Validator erstellen und Daten übergeben
$validator = new validator($_POST);
?>
<form action="" method="post">
<input name="vorname" type="text" size="30" maxlength="30" />
<input name="zuname" type="text" size="30" maxlength="40"/>
</form>
<?php //getData holt sich die Daten die validiert wurden
foreach($validator->getData() as $value) :?>
<p> <?php echo $value; ?> </p>
<?php endforeach; ?>
Anstadt direkt im HTML Dokument die Daten zu validieren könnte man eine PHP Klasse erstellen die diese Aufgabe für uns übernimmt.
Somit hätten wir sicher gestellt, dass Logik von Ausgabe getrennt ist (Ja ich weiß langsam nervt es ).
Ich hab direkt nochmal das Beispiel von Oben mit den Schleifen angewendet
Zum Verständnis nochmal der Validator
PHP-Code:
<?php
class validator
{
private $data = array();
public function __construct($data){
$this->validate($data);
}
public function validate($data=null){
if($data== null) return false;
foreach($data as $key=>$value)
{
$this->setData($key, htmlspecialchars($value));
// more validating
//.... ;)
}
return true;
}
private function setData($key, $value)
{
$this->data[$key] = $value;
}
public function getData()
{
return $this->data;
}
}
?>
Ich hoffe ich konnte wenigstens ein wenig verständlich machen worauf ich hinaus wollte. Kritik erwünscht
P.S. Ich muss noch dazu erwähnen das ich den Code aus dem Kopf geschrieben hab und er eventuell Fehler enthält. :p
gruß c4pone