PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Spezielle Schreibweisen


M@tes
2012-03-26, 11:54:42
Hallo!
Php hat ja weniger bekannte, aber dafür meiner Meinung nach ganz praktische Schreibweisen, welche ich auch gerne nutze. Eine davon wäre sowas wie:
<? if ( $Mode == "test" ): ?>
<div>Fooooo</div>
<div>Fooooo</div>
<div>Fooooo</div>
<? endif; ?>
Diese Variante ist von der Lesbarkeit grössere Seiten meiner Meinung nach besser als die übliche Variante:
<?
if ( $Mode == "test" ) {
echo "<div>Fooooo</div>
<div>Fooooo</div>
<div>Fooooo</div>";
}
?>
Jetzt bin ich auf der Suche nach einer ähnlichen Schreibweise nur für die Deklaration einer Variable. Weiss allerdings nicht wonach suchen. Ich suche sowas in der Art wie:
<? $A = ?>
<div>Fooooo</div>
<div>Fooooo</div>
<div>Fooooo</div>
<? end $A; ?>
In Perl ging das glaub in etwa so (is schon lang her):
$A = <<Blub
<div>Fooooo</div>
<div>Fooooo</div>
<div>Fooooo</div>
Blub

Hoffe ihr versteht was ich meine.
Danke und Gruss


/edit: Ok zumindest weiss ich jetzt das es heredoc heisst:
$string = <<<EOF
mehrzeiliger
Text
EOF;

Ziel wäre jetzt eine Schreibweise wie:
<? $string = <<<EOF ?>
<div>Fooooo</div>
<div>Fooooo</div>
<div>Fooooo</div>
<? EOF ?>

/edit2:
Inzwischen bin ich weiter, aber eine Endlösung habe ich leider noch nicht:

<? $Var = <<<EOF
<div>Fooooo</div>
<div>Fooooo</div>
<div>$Vas</div>
EOF
?>

<?=$Var ?>

Marscel
2012-03-26, 14:41:09
Templates? Der Lesbarkeit ist das nämlich alles nicht unbedingt förderlich.

ezzemm
2012-03-27, 07:11:11
Was natürlich immer geht ist das:
<?php
$foo='
<ul class="bar">
<li>'.$var.'</li>
</ul>
';
?>

Ist aber auf Dauer unübersichtlich. Besser ist es den HTML-Teil in eine separate HTML-Datei auszulagern.
$html= file_get_contents('tpl/code.html');

Du kannst im HTML-Teil auch Variablen plazieren, dann musst du eval anwenden:
eval ("\$html= \"file_get_contents('tpl/code.html')\";");

petersenk
2012-03-27, 08:46:23
Du kannst im HTML-Teil auch Variablen plazieren, dann musst du eval anwenden:
eval ("\$html= \"file_get_contents('tpl/code.html')\";");

:eek: :freak: ;D

Ach komm, des is aber ned dein Ernst, oder?

fdk
2012-03-27, 09:07:34
Inceptioncode incoming.

"We need to go deeper".;D

M@tes
2012-03-27, 14:47:55
Naja das Projekt ist eigentlich schon fast fertig. Jetzt gäb es aber noch ein Punkt, wo mir praktisch den ganzen Aufbau auf den Kopf stellen würde und ich dies lieber mit dieser Zwischenspeicherlösung realisieren möchte. Templates fallen aus dem Grund eher aus.

"Was natürlich immer geht ist das"
Das is genau das was ich vermeiden wollte, weil dies für längere Quelltexte nicht gerade schön zum lesen ist.

Da gefällt mir die Auslagerung fast besser. Das eval bei Usereingaben kritisch ist, ist mir klar, aber warum sollte dies bei einem gespeichertem HTML File nicht gemacht werden??

ezzemm
2012-03-28, 07:04:54
Ich wüsste auch nicht wo das Problem liegen soll, solange man keine POST-Variablen usw. direkt im Template verwendet. Macht man ja aber auch nicht ;)

Das schöne ist an den Templates, man kann auch Arrays-Werte ($array[foo] - keine Anführungszeichen) und Objekte angeben ($obj->value).
Und man gleich das System gleich mit einem Sprachvariablen-System kombinieren, also daß Text-Platzhalter die Texte eingesetzt werden. So kann man das System mehrsprachig betreiben, und hat Inhalte und Templates getrennt.

Das Ganze noch hübsch in eine Klasse verpackt, und man hat sein eigenes einfaches Smarty ;)
Wenn du es die mal anschauen willst, verwende ich eine solche Klasse hier: http://www.forum-3dcenter.org/vbulletin/showthread.php?t=514827
in der Datei "classes/template.php"

AlecWhite
2012-04-05, 03:53:44
öh..

- Performance?
- Debuggen?
- Wartbarkeit?
- Wiederverwendbarkeit?
...

Gegen eval() spricht noch ne ganze Menge mehr - wenn ein Developer sowas macht, muss er schon einen besseren Grund haben als Bequemlichkeit.

http://www.php.net/manual/de/language.types.string.php#language.types.string.syntax

Das ist die Doku - was anderes zum Deklarieren von Strings gibt's nicht. Und wie du siehst: Heredoc wird unterstützt.

Stellt sich natrlich die Frage, was am Anfang des Projekts schief gegangen ist, dass man das tatsächlich braucht.