Avatar billede Pape_dk Nybegynder
28. januar 2011 - 11:19 Der er 14 kommentarer og
1 løsning

PHP og HTML - best practice

Hvad er best practice?

Eks. 1
<html>
<body>

<?php
$color = "red";
?>
<p>Roses are <b><?=$color?></b></p>
</body>
</html>


Eks. 2
<html>
<body>
<?php
$color = "<b>red</b>";
echo "<p>Roses are $color</p>";
?>
</body>
</html>

Personligt synes jeg jo at det er rart at kunne holde styr på diverse HTML tags og at de ikke er "gemt" rundt omkring i variabler og php-kode. Det gør det (for mig) også lettere at overskue i fx Dreamweaver.

Men hvad er best practice og hvad performer bedst?

Findes der en industriel standard for denne slags?
Avatar billede repox Seniormester
28. januar 2011 - 11:26 #1
Nej, der findes ikke en en industriel standard - typisk vil Best Practice være noget man bestemmer på arbejdspladsen/mellem kollegerne/mellem udviklerne.

Dog ligger der en del artikler og guides på nettet om BP men det vil ofte være personlige holdninger eller BP som en person/gruppe er vant til at arbejde efter.

Mange gange vil du opleve at udviklingen af et sprog ofte kommer til at diktere visse former for BP - såsom PHP's short tags.

For at kommentere dine to kodeeksempler vil jeg mene at de er for simple til at rent faktisk kunne afgøre om det ene er bedre end det andet.

Min personlige holdning er at jeg ønsker ikke selv at lade PHP udskrive mere HTML end højst nødvendigt, så hvis jeg endelig skal give udtryk for noget, vil Eks. 1 være mit foretrukne valg.

Men BP er oftest en smagssag.
Avatar billede Pape_dk Nybegynder
28. januar 2011 - 11:36 #2
Enig i, at det er et simpelt eksempel. Men det var bare for at illustrere om html'en bør være i php-koden's echo.

Tak for din kommentar
Avatar billede HBP2 Praktikant
28. januar 2011 - 11:45 #3
Hvis det bare er et simpelt eksempel, og du normalt har meget mere komplicerede sider, så vil jeg sige at ingen af dem er den bedste løsning.

Jeg forstår ikke folk som blander HTML og PHP på den måde; den slags betyder at hvis man vil ændre i designet (HTMLen) så kommer man uundgåeligt til også at ændre i koden (PHP). De to ting bør adskilles.

Jeg bruger selv class.rFastTemplate - her ville HTMLen se sådanne ud:

<html>
<body>
<p>Roses are <b>{COLOUR}</b></p>
</body>
</html>

og PHPen ville loade HTML som en template og erstatte {COLOUR} med "red".
Avatar billede repox Seniormester
28. januar 2011 - 11:57 #4
#3
Din kommentar er enormt specifik i forhold til den overordnede debat om BP - jeg ville personligt aldrig kunne finde på at bruge et templating system som det du anvender. Istedet vil jeg anvende et MVC (jeg ved godt mange MVC frameworks tilbyder Smarty eller lignende som Template motor) hvor jeg kan adskille efter det mønster som MVC tillader. Jeg ser ikke noget specifikt problem (eller nogen faktisk forskel) i at skreve enten:
<div>{MY_CONTENT}</div>

eller
<div><?php echo $my_content; ?></div>


Jeg ser til gengæld en fordel i at jeg ikke behøver at have et template lag til at oversætte 'variabler' for mig, for det er ikke nødvendigt.

Template systemer er ikke en snak BP - men en snak om design patterns - IMO.

Men som tidligere nævnt - der er ingen universel sandhed - kun holdninger.
Avatar billede Pape_dk Nybegynder
28. januar 2011 - 12:43 #5
Hvad med hastigheden, når man bruger templates?

Jeg kunne umiddelbart have en mistanke om, at

<div>{MY_CONTENT}</div>

afvikles langsommere end

<div><?php echo $my_content; ?></div>
Avatar billede Pape_dk Nybegynder
28. januar 2011 - 12:46 #6
Men det lyder til at der er enighed om at php og html bør adskilles... uanset hvad..
Avatar billede repox Seniormester
28. januar 2011 - 13:01 #7
Jeg vil sige at performancemæssigt bør du ikke bekymre dig for meget om det med template motorer - det er sjældent at man har indhold der kræver at fokus skal lægges på det. Men alt andet lige skal du naturligvis tænke på at det blot er endnu et lag dit data skal gennem - men jeg tvivler stærkt på det rent faktisk er noget du kan måle.

Men personligt ser jeg ikke noget formål i at indlæse en template motor, for at lære deres syntaks når PHP kan løse det lige så effektivt med en syntaks du allerede kender.
Avatar billede cronaldo Nybegynder
29. januar 2011 - 01:49 #8
Performancemæssigt er der først et problem når du har rigtig mange loops i dine pseudo-variabler i dine views.

Det er smart så snart din side bliver bearbejdet af både en grafiker (med fx ansvar for HTML + CSS) og en programmør (med ansvar for fx PHP/MySQL/JavaScript). En grafiker er nok tilbøjelig til at forstå mindre php og mere tekst (ala {variable} ) og på den måde kan det gøre arbejdet en smule lettere.

Så den er 50-50. Selvfølgelig har du ret i, at det går langsommere - men lamborghini er også langsommere end en ferrari; gør det den langsom? ;-)
Avatar billede cronaldo Nybegynder
29. januar 2011 - 01:50 #9
men en lamborghini er også langsommere end en bugatti *
(bare for lige at skitsere den ordentligt) :p
Avatar billede repox Seniormester
29. januar 2011 - 17:54 #10
#3
Jeg er ikke enig i din kommentar om en grafikers forståelse for variabelnavngivning; ved overlevering af et view til en grafiker vil under alle omstændigheder være nød til at kommentere variabler og scripting for at give grafikeren forståelsen for det dynamisk generede output. Om du så fortællere grafikeren at variabler er pakket ind i {} eller <?php echo ;?> kan da aldrig nogensinde skabe mere eller mindre forståelse for effekten?
Avatar billede erikjacobsen Ekspert
29. januar 2011 - 18:12 #11
Der er ingen hastighedsproblem som sådan i Smarty, da templatefilen oversættes til "rå" PHP-kode.

Og Smarty kan forhindre grafikeren i selv at bruge "rå" PHP-kode, og dermed lave ulykker ud over de løkker og variabler han får rådighed over.

Men hvad der er "bedst" afhænger uhyggeligt meget af hvad man ønsker at opnå.

Sådan helt for mig selv er rå PHP en fin templatemaskine.
Avatar billede Pape_dk Nybegynder
31. januar 2011 - 08:58 #12
Tak for kommentarerne, som i bund og grund bekræftede det mig i, at php og html bør adskilles.

Mange brugbare kommentarer, men HBP2 er den eneste som har smidt et svar og point tilfalder HBP2.
Avatar billede cronaldo Nybegynder
31. januar 2011 - 16:38 #13
Du skal huske at meningen med at PHP og HTML kan laves på samme side jo netop gør, at det ikke er mere eller mindre skidt rent kodemæssigt at gøre det.

Det er klart, at der inhouse kan være nogle standarder for hvordan man gør det - men ikke desto mindre giver det jo ikke fejl at skrive PHP og HTML sammen (i højere eller mindre grad).. så jeg tror næsten det er et spørgsmål om hvad man tror på ;)
Avatar billede Pape_dk Nybegynder
31. januar 2011 - 17:11 #14
Næ næ. Jeg er med på, at alt jo i den sidste ende bliver parset som html og at begge metoder er mulige.

Var bare interesseret i at høre lidt holdninger til det. Jeg synes personligt det er lettest at debugge og overskue når man ikke 'gemmer' sine tags.
Avatar billede cronaldo Nybegynder
31. januar 2011 - 21:14 #15
Ja, det er nok også argumentationen for de fleste, hehe :-)
Men du kan jo bare lave nogle php-kommentarer i toppen, hvor du angiver alle pseudo-variabler ("{variabel}"), og hvad de bruges til. :-)

Der er selvfølgelig mange måder at gøre det på, men jeg kan i hvert fald personligt godt lide at have tingene adskilt i så høj grad som muligt :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester