Gå til innhold

Rett bruk av " og '


Anbefalte innlegg

Videoannonse
Annonse

Php har ingen måte å skille konstanter fra andre strings i en heredoc. Uansett ser jeg ikke noen grunn til å bruke heredoc, har du lange tekster, kan du inkludere dem. Med heredoc mister du samtidig:

  • muligheten for funksjonersuttrykk uten å gå ut av og deretter inn av heredoc igjen
  • PHP4 bakover kompabilitet
  • Identerings muligheter. Heredoc gir parse error hvis den er indentert

Lenke til kommentar
PHP4 bakover kompabilitet

Heredoc er kompatibel med PHP4, men ikke lenger bakover. Akkurat hva man skal med PHP3-kompabilitet skjønner ikke jeg, da mange viktige funksjoner dukket opp i PHP4.

 

Identerings muligheter. Heredoc gir parse error hvis den er indentert

 

Det er bare siste linje av Heredoc som ikke kan indenteres, innholdet kan godt indenteres så mye man bare vil. Det er i så fall bare en linje som bryter med indent, og det kan man i de fleste tilfeller unngå.

 

Men jeg er enig i at heredoc bør unngås så lenge det er andre alternativer (inkludering o.l.). Rotete syntaks bør unngås. :)

Lenke til kommentar

heredoc er veldig kjekt og har mange brusktilfeller... tenk det hvis du skal sette inn en lang html kode i et script og vil ikke avslutte php fordi det skal plasseres inn variabler mange steder. Tenk det i tillegg at du har et javascript f.eks. onClick="alert('Tekst')". Der bruker du både ' og " og for enkelhetsskyld, slik at du slipper å escape " eller ' så bruker du bare heredoc.

 

dabear: selv om du ikke ser nytten nå så kommer du sikkert til å gjøre det hvis du satser mer på php. Videre ble vel PHP 4 lansert i 1998, så hvis noen fortsatt bruker en 7 år gammel versjon av PHP så er neppe heredoc det største problemet, men utrolig mange bugs og mangel på funksjoner. Heredoc er ofte brukt og det er ikke uten grunn at det finnes :)

 

zokra: som jeg beskrev innledningsvis så er det spesielt nyttig dersom du har ' og " i teksten og ikke vil escape de. Tenk deg hvis du f.eks. bruker en wysiwyg editor og bare klipper og limer et design, da er det nyttig og bare enkelt kunne lime inn et nytt design uten å måtte escape quotes.

Lenke til kommentar
Jeg bruker helst heredoc så lite som mulig, men f.eks. om man skal echoe ut 150 linjer med CSS eller HTML (gjerne om HTMLen inneholder tekst med ' i seg) så er det ganske greit med heredoc, siden " og ' vil kreve endel escaping og annet tull.

Når dere nevner det, så sjønner jeg vitsen med å bruke det noen ganger...

Lenke til kommentar
  • 3 år senere...

Apropos heredoc.

 

I dreamweaver så fuckes syntax highlightingen opp når det er javascript i heredoc.

 

Altså, dokumentet går ikke tilbake til php-syntax-highlighting etter hvis det er </script> inne i heredoc. (jeg trenger bare å fjerne siste taggen, >, så løser det seg, men åpenbart ingen løsning)

 

Fantastisk irriterende, og jeg håper det er min feil eller noe og at dere har en god løsning eller noe på det.

 

 

Edit:

Jeg fant en fiks på dette problemet:

 

echo <<<EOF
<!-- ?> -->
<script type="text/javascript">
**[masse javascript her]
</script>
**<masse HTML>
<!-- <?php -->
EOF;

 

Legg merke til at jeg har kommentert inn en stopp og en start av PHP rett etter heredoc starter og rett før det det slutter.

Dette "lurer" dreamweaver, men ikke php/html :)

Endret av Twinflower
Lenke til kommentar

Hmm lurer litt på det samme.

 

jeg skal ha en link som kan innehold to ord (2 ords brukernavn)

 

echo '<a href="profil.php?bruker='.$bruker.'">'.$bruker.'</a>';

 

Blir det ritkig??

 

jeg må ha "" roundt linken ellers vil den ikke ha med dobble brukernavn eks.

hey ho blir til profil.php?bruker=hey og da kommer man jo ikke inn på rikitg profil..

Lenke til kommentar
echo <<<EOF
<!-- ?> -->
<script type="text/javascript">
**[masse javascript her]
</script>
**<masse HTML>
<!-- <?php -->
EOF;

Skal jeg vise deg et alternativ?

<?php
if ( true ) {
?><script type="text/javascript">
console.log( 'showokara' );
</script>
<?php
}
?>

Hvorfor outputte HTML/JS/CSS i "PHP-mode" når du enkelt kan ?> ?

Her ville jeg faktisk foretrukket PHPs alternative syntaks:

<?php if(true): ?>
<script type="text/javascript">
	console.log( 'showokara' );
</script>
<?php endif; ?>

I hovedsak fordi krøllparanteser har en tendens til å forsvinne i teksten. Personlig har jeg ikke sansen for motorer som smarty osv. heller, fordi jeg mener PHP allerede er et template språk, og det er rimelig pent og oversiktlig.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...