Ich seh immer wieder das Leute HTML mit PHP ausgeben (z.B
PHP-Code:
echo  '<br>'
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($keyhtmlspecialchars($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