Maar waarom zou je een statische plak HTML echo'en?
En als de description-content het dynamische deel is, echo dan dat deel? Zo houd je ook beter het verschil tussen statisch en dynamisch in stand. Hoef je ook geen escape-sequences toe te voegen voor een simpele regelovergang.
Het is niet gebruikelijk en zinvol om statische html te echo'en. Alles wat je in php doet moet verwerkt worden en kost dus extra tijd. Statische informatie ga je daarom niet echo'en.
Dit zet je dus gewoon buiten je php code. Dan hoef je ook geen newline toe te voegen.
<meta name="description" content="Mijn meta beschrijving">
<volgende regel hier>
Dit is onderdeel van een functie, dus dit staat niet zo in de head sectie. Kan de echo overigens misschien beter door return vervangen in dit geval. Is inderdaad niet een statische meta beschrijving, maar zo even gedaan voor het topic.
Dit is onderdeel van een functie, dus dit staat niet zo in de head sectie. Kan de echo overigens misschien beter door return vervangen in dit geval. Is inderdaad niet een statische meta beschrijving, maar zo even gedaan voor het topic.
Dan doet die functie te veel. Single-responsibility principle:a class or module should have one, and only one, reason to be changed.
Straks kom je er bijvoorbeeld achter dat je die description per webpagina op drie plaatsen nodig hebt: niet alleen in een reguliere meta-tag, maar ook in Open Graph en in een rich snippet in JSON. Een functie die de description genereert, zou daarom los moeten staan van de functie(s) die er meta-tags of iets anders van maken.
Omgekeerd zou een andere functie die regeleinden invoegt na meta-tags in de head ook compleet los moeten werken van een functie die een description-tag genereert. Dat is immers functionaliteit die eventueel ook geldt voor andere tags in de head die helemaal niets met een description van doen hebben.
Als je afwisselende delen statisch+dymamisch hebt en hier een plakje HTML van wilt maken zou je ook kunnen overwegen om output buffering te gebruiken. Dit is als het ware een (tijdelijke) emmer waarin je alle output opvangt.
Volgens mij is het ook een goed ontwerpprincipe om functies niet rechtstreeks dingen te laten echo'en (natuurlijk zijn hier ook uitzondering op) maar de inhoud als string te retourneren.
Je krijgt dus bijvoorbeeld zoiets:
<?php
function bakHTML($data) {
ob_start(); // start output buffering
?><div>
<lala><?php echo $data['x']; ?</lala>
<asdf><em><?php echo $data['y']; ?></em></asdf>
</div><?php
return ob_get_clean(); // vang inhoud op en retourneer als string
}
?>
Dan doet die functie te veel. Single-responsibility principle:a class or module should have one, and only one, reason to be changed.
Veel frameworks houden zich wat dat betreft niet exact aan de 'regels'. Theoretisch klopt je opmerking. De praktijk is vaak anders. Wat je klopt zegt, maar een functie om meta op te bouwen is ook weer niet heel vreemd of ongebruikelijk.
Het betreft een WordPress website en dan werkt het net even anders.
Ik heb een functie waarin ik de (niet statische) meta beschrijving genereer en die functie wordt uitgevoerd in de head sectie van de site. Hiervoor haak ik in op de wp_head() functie van WordPress: https://developer.wordpress.org/reference/functions/wp_head/
Overigens, wanneer ik binnen mijn functie return ipv echo, wordt er geen meta beschrijving geplaatst. Vandaar dat ik toen blijkbaar voor echo gekozen heb.
Nogmaals bedankt allemaal, ik weet weer een stuk meer..