Ich seh immer wieder das Leute HTML mit PHP ausgeben (z.BAls PHPler krieg ich da immer wieder den Kotzreiz,denn meiner Meinung nach sollte man diese beiden Dinge stehts voneinander trennen.PHP-Code:
echo '<br>';
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
Gut:PHP-Code:
<?php
foreach($cars as $car)
{
echo '<p>'.$car.'</p>';
}
?>
Die 2te Schreibweise erhöht in größeren Html Dokumenten extrem die Leserlichkeit zudem kann der Frontendler ohne große Probleme änderungen Vornehmen.PHP-Code:
<?php foreach($cars as $car) :?>
<p> <?php echo $car ?> </p>
<?php endforeach ?>
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:
etc.PHP-Code:
<?php if() :?>
<?php else :?>
<?php endif; ?>
<?php while() :?>
<?php endwhile ?>
<?php foreach() :?>
<?php endforeach?>
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 ->
Schöner wäre doch an dieser Stelle wenn man die Logik von der Ausgabe trennen würde.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>
Als erstes die Html Datei:
Anstadt direkt im HTML Dokument die Daten zu validieren könnte man eine PHP Klasse erstellen die diese Aufgabe für uns übernimmt.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; ?>
Somit hätten wir sicher gestellt, dass Logik von Ausgabe getrennt ist (Ja ich weiß langsam nervt es :D).
Ich hab direkt nochmal das Beispiel von Oben mit den Schleifen angewendet :)
Zum Verständnis nochmal der Validator
Ich hoffe ich konnte wenigstens ein wenig verständlich machen worauf ich hinaus wollte. Kritik erwünschtPHP-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;
}
}
?>
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