Avatar billede squazz Novice
25. marts 2012 - 21:23 Der er 21 kommentarer

Lidt overvejelser om f.eks. single og double quotes samt <?=

Ok, der er SÅ mange måde at sætte kode PHP kode op på, at jeg nu godt kunne tænke mig lidt inputs fra folk herinde på, hvordan man bedst gør det, og hvad der er det mest normale at gøre.

Jeg tænker både på læsbarhed, og ydelse.

Tag f.eks. disse eksempeler, alle er de noget jeg har set eksempler på:
(jeg var nødt til at fjerne http:// foran maps.google for at I kunne se koden ordenligt.)
Brugen af " og {}
return "<a href=\"maps.google.dk/maps?q=from:{$from} to:{$to}&t=m&ie=UTF8&oe=UTF8&hl=da\" target=\"_blank\" class=\"link\">{$name}</a>";

Brugen af ",' og .
return "<a href=\maps.google.dk/maps?q=from:'".$from."' to:'".$to."'&t=m&ie=UTF8&oe=UTF8&hl=da\" target=\"_blank\" class=\"link\">'".$name."'</a>";

Brugen af ' og .
return '<a href="maps.google.dk/maps?q=from:'.$from.' to:'.$to.'&t=m&ie=UTF8&oe=UTF8&hl=da" target="_blank" class="link">'.$name.'</a>';


Dertil er der selvfølgelig også muligheden for at lave mellemrum som her:
Brugen af " og {}
return "<a href=\"maps.google.dk/maps?q=from:{$from} to:{$to}&t=m&ie=UTF8&oe=UTF8&hl=da\" target=\"_blank\" class=\"link\">{$name}</a>";

Brugen af ",' og .
return "<a href=\maps.google.dk/maps?q=from:'" . $from . "' to:'" . $to . "'&t=m&ie=UTF8&oe=UTF8&hl=da\" target=\"_blank\" class=\"link\">'" . $name . "'</a>";

Brugen af ' og .
return '<a href="maps.google.dk/maps?q=from:' . $from . ' to:' . $to . '&t=m&ie=UTF8&oe=UTF8&hl=da" target="_blank" class="link">' . $name . '</a>';


Det var så single og double quotes. Når man skriver HTML kode og skal bruge lidt PHP nogle steder har jeg også set dette gjort på flere forskellige måder.
Eksempel:

Brugen af <?=
<meta name="description" content="<?= $description; ?>">

Brugen af <?php echo
<meta name="description" content="<?php echo $description; ?>">


Som ekstra har jeg også overvejet følgende HTML eksempler:
<br>
<br />

<input>
<input />

Og alle de andre i denne familie

Jeg håber der er et par stykker derude som kan komme med lidt inputs. Eventuelt skrive eller linke til en guide så andre også kan få udnytte af informationerne. Det er min opfattelse at der er mange holdninger og måder at gøre det på.
Avatar billede pstidsen Novice
25. marts 2012 - 22:14 #1
Jeg kan kun HTML delen og jeg skulle mene at i XHTML SKAL man lukke ALLE tags - også dem der ikke har har et lukke tags. Altså er <br> og <input> ikke valid i XHTML. Det er de derimod i HTML, som man bruger mest.
Avatar billede heinzdmx Nybegynder
25. marts 2012 - 22:48 #2
I forhold til <? og <?php så er den første en shorttag som ikke er understøttet af alle webhoteller og derved anbefales det ikke at bruge det, ligeledes kan det indstilles til at følgende kan bruges <%, men igen ikke anbefalet.

Se f.eks. følgende:
http://stackoverflow.com/questions/200640/are-php-short-tags-acceptable-to-use


I forhold til single quote og double quote mener jeg at have læst at den ene parser det igennem for indeholdet af $variable, mens den anden ikke gøre, performance impact er dog ikke noget at tale om i almindelig tale.

Se her:
http://virendrachandak.wordpress.com/2012/03/18/php-double-quotes-vs-single-quotes/
Avatar billede Slettet bruger
25. marts 2012 - 23:00 #3
Personligt bruger jeg aldrig short-tags, som f.eks. [b]<?=[/b, da - som @heinzdmx nævner - ikke er understøttet som standard.

Til valg af quotes plejer jeg at bruge single quotes som udgangspunkt, medmindre jeg skal bruge flere single quotes end double quotes i min string. Valget bunder i at jeg er "født og opvokset" med at bruge double-quotes rundt om HTML-attributes og det er derved nemmere at indsætte dem, når jeg laver min PHP string med single quotes.

Dertil bliver sidste del også næsten besvaret.. Da jeg normalt bruger single quotes til at lave mine strings, så kan jeg ikke indsætte variabler i min string, uden at "binde" dem til stringen (concatenation), da PHP ellers vil tolke det som ren tekst. Derudover syntes jeg også det skaber bedre overblik, når variabler og strings er opdelt - og de fleste text editors vil så også farve dine variabler.

Men som sagt er alt dette baseret på mine personlige holdninger og jeg har ikke testet om det har nogen effekt på performance.
Avatar billede kjeldsted Novice
25. marts 2012 - 23:24 #4
Single/double quotes:
Som der vist også blev nævnt i #2 pharser PHP alt indhold i double quotes. Altså den leder efter variabler og andet som den så udskifter. Med single quotes tager den den rå tekst man har. Altså kan man ved single quotes undgå at serveren skal til at lede efter variabler o.lign. hvis man ved at den ikke behøver det. Og man behøver jo ikke sætte serveren til mere arbejde end højst nødvendigt.

Fx.

$var = 'Hello';
$foo = '$var World!';
echo $foo.'<br>';

$bar = "$var World";
echo $bar.'<br>';

$baz = "{$_GET['text']} World";
echo $baz;

Vil udskrive

$var World!
Hello World
Hej World
(forudsat at URLen indeholder ?text=Hej
Avatar billede vagnk Juniormester
26. marts 2012 - 04:18 #5
#2
<?= er faktisk tilladt og bliver respekteret som shorttag i alle tilfælde, hvorimod <? styres af php.ini. Se sidste note i http://www.php.net/manual/en/language.basic-syntax.phpmode.php

Tags uden lukketag skal lukkes inden i selve tag'et. Det er en W3-ting der ret sikkert med tiden bliver standard.

Jeg bruger dobbeltquotes som ydre og single quotes som indre adskillelse. Det er nu mest fordi min php-editor i mange tilfælde foreslår det sådan. Det kunne jeg muligvis lave om på, men hvorfor skulle jeg egentlig det?

Den overordnede bagtanke må være om koden kan læses af andre.
Avatar billede olebole Juniormester
26. marts 2012 - 17:09 #6
<ole>

@vagnk: Når du skriver:

"<?= er faktisk tilladt og bliver respekteret som shorttag i alle tilfælde, hvorimod <? styres af php.ini. Se sidste note [...]"

- bør du huske at tilføje: "- hvis webhotellet altså har opdateret til allernyeste version indenfor de seneste tre uger". Din udtalelse er korrekt fra version 5.4 - som kom 1. marts 2012  *o)

/mvh
</bole>
Avatar billede vagnk Juniormester
27. marts 2012 - 09:54 #7
OK, OK. Nu skriver jeg jo "Se sidste note", kan så ikke godkendes?
Bare en lille smule??
Mellem venner???
Vagn
Avatar billede olebole Juniormester
27. marts 2012 - 13:58 #8
Således truet med venskab, må jeg give mig ... så pyt, da  *D
Avatar billede squazz Novice
28. marts 2012 - 14:21 #9
Det jeg umiddelbart har fået ud af dette indtil videre er at man skal bruge single quotes så meget som muligt.

Samtidig lader det også til at vi nærmer os en tid hvor det er ligemeget om man bruger <?= eller <?php echo.

Mit spørgsmål er så, er det bedste at lave noget lignende dette:
$foo = $var . 'World!';

Eller lignende dette:
$foo = "$var World!";

Altså, vil det være bedst at lave concatenation, eller at bruge double quotes?

Når jeg ser på denne sætning:
"... Derudover syntes jeg også det skaber bedre overblik, når variabler og strings er opdelt - og de fleste text editors vil så også farve dine variabler."

Overvejer jeg om de fleste vælger concatenation fordi de fleste text editors vil farve variablerne. Eller er der også deciderede hastigheds/ydelses forskelle alt efter hvad man gør?
Og hvad med <?= og <?php echo. Er der ydelses forskelle her?
Avatar billede heinzdmx Nybegynder
28. marts 2012 - 14:37 #10
Mellem
<?= og <?php echo
Vil jeg ikke tro der er den store forskel mellem, det er jo bare shorttag for det, men er ikke helt sikker. Hvis man kun skal bruge koden selv og er sikker på at serveren er opdateret 100 % så er der ikke noget problem i <?=

I forhold til  concatenation vs double quotes

Der vil jo altid være en forskel når du på den ene side har en "du gør sådan her" og på den anden side har "læs igennem for variabler og erstat så", omend det er en lille forskel.
I forhold til hvad der er bedst så er det jo nok en smagssag. 

Bemærk dog at det kun er min opfattelse ud fra hvad jeg har læst forskellige steder
Avatar billede squazz Novice
28. marts 2012 - 14:56 #11
Jeg kom til at tænke på, hvad gør man med SQL?
mysql_query("SELECT user_name FROM users WHERE ID='" . $galleryData['creator'] . "'", $con)


Hvordan skal denne sættes op hvis det skulle gøres rigtigt?
Avatar billede olebole Juniormester
28. marts 2012 - 15:55 #12
Med hensyn til MySQL, behøver du slet ikke bekymre dig - for der bruger du naturligvis prepared statements  *o)
Avatar billede squazz Novice
29. marts 2012 - 10:46 #13
Hehe, jae, det gør jeg jo (snart) *o)
Avatar billede squazz Novice
24. april 2012 - 17:50 #14
Jeg tror jeg fandt en løsning på det hele, lige undtagen #9. Er der nogen der har inputs til denne?
Avatar billede virendrachandak Nybegynder
17. juni 2012 - 19:33 #15
Avatar billede olebole Juniormester
17. juni 2012 - 19:56 #16
@virendrachandak: But it's still written in ancient, outdated and unsecure code. Wonder why ...?!??  =)
Avatar billede squazz Novice
17. august 2012 - 02:00 #17
Kan det virkeligt passe at der ikke er nogen der har nogle inputs til #9? Det er trods alt den der er det mest centrale af mit spørgsmål, det er den jeg ser flest forskellige måder at gøre det på, og, det er den der er blevet diskuteret mindst i denne tråd ;)
Avatar billede olebole Juniormester
17. august 2012 - 04:22 #18
Forskellen er yderst marginal, så derfor taler folk primært om fordelene ved den highlightede syntaks
Avatar billede squazz Novice
17. august 2012 - 12:29 #19
Betyder det så også at der ikke er en af måderne der er at foretrække hvad læsbarhed angår?
Avatar billede olebole Juniormester
17. august 2012 - 13:56 #20
Find en kode - kik i den - tænk. Kun du kan vide, hvad du synes er lettest og derfor foretrækker. Jeg kan ikke vide det, men det ville da komme bag på mig, hvis du finder variabler mellem dobbelte gåseøjne for letlæselige  =)
Avatar billede squazz Novice
03. oktober 2014 - 11:50 #21
Jeg synes alting er blevet svaret på, og i min runde for at lukke gamle spørgsmål vil jeg derfor selv lægge et svar, som kun bruges hvis ikke der er andre der lægger et svar for at få et par points :)
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

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