Door
Ozzie PHP
op 12-02-2019 15:07
gewijzigd op 12-02-2019 15:09
5.718 views
Ik programmeer al weer een tijdje en toen ik jaaaaren geleden met PHP begon werd aangeraden om strings en variabelen altijd te concatten en enkele quotes te gebruiken.
Als ik mag kiezen tussen 'performance' en 'leesbaarheid', kies ik altijd voor leesbaarheid. Performance van code als geheel zou niet mogen afhangen van het type quotes dat je gebruikt, tenzij er een bug in PHP zit. In mijn optiek mooie ontwikkeling in JS is de zgn template literal in combinatie met de back-tick: `Hallo ${firstname} ${lastname}!`. Niet meer dat gehaspel met de +.
Voor PHP gebruik ik een eenvoudige template-engine die ik aanpas naar eigen behoefte (via Composer "phpunit/php-text-template": "^1.2"). Deze template-engine bevat HTML met hier en daar een {blok} dat vervangen gaat worden door een nader te bepalen waarde. Qua syntax vertoont het overeenkomsten met de JS template literals.
Enkele quotes als het kan, dubbele quotes als het moet.
Performacewinst pak je ergens anders.
Tijdswinst heb je direct omdat je makkelijk kunt lezen wat je zojuist hebt geprogrammeerd.
NB: als het over grotere lappen tekst gaat die een combinatie van PHP(-variabelen) en tekst gaat kan output buffering uitkomst bieden. Je doet dan alsof je alles direct weergeeft maar vangt alle output netjes op in een buffer. Dat is wat mij betreft nog steeds de meest "clutter free" aanpak.
Strings met enkele quotes worden niet geparsed (enkele escape constructies daar gelaten). Het is de simpelste vorm van stringgebruik wat je (theoretisch) een minimale performancewinst oplevert, die tegenwoordig toch geen zak meer uitmaakt. Het dwingt je tot het scheiden van lappen statische tekst en variabelen.
Strings met dubbele quotes kun je makkelijk combineren met enkele quotes wanneer je deze nodig hebt, bijboorbeeld als je queries bouwt waarin kolomwaarde worden gebruikt. Dit zodat je dan niet helemaal gierend gek wordt van het escapen van enkele of dubbele quotes, wat tevens de boel compleet onleesbaar maakt.
En omdat je dan met een simpele vuistregel werkt volgens een stramien die je impliciet dwingt tot een eenduidige werkhouding waarbij code leesbaar blijft.
En omdat je dan op zijn minst te werk gaat volgens een plan, en dat is nog altijd beter dan geen plan.
Heb je een andere/betere manier die voor jou werkt: go right ahead.
Ikzelf gebruik vaak de eerste code van Ozzie. Puur omdat het leesbaar is, en de syntax van de string en de variabelen/functies gescheiden zijn. Altijd een single-quoted echo als het voor een enkele regel is, zodat het niet botst met de gebruikelijke dubbele-quotes van HTML. En escapen wil ik juist zo weinig mogelijk doen, omdat dat slecht leesbaarder wordt. Ik houd het liefst van schone code.... ;-)
Bij blokken met HTML beëindig ik vaak de PHP-tags en gebruik netjes <?php echo $blaat; ?> tussendoor, als ik iets in PHP moet echo'en. In geen enkel geval bouw ik een echo-put met op elke regel en echo. Dat vind ik zo onnodig en onlogisch. het komt over alsof je tijdens een gesprek steeds na je zin een stilte laat vallen en weer verder praat :-P
Oké ... nu volg ik je even niet meer. Jij geeft als stelregel dat je enkele quotes moet gebruiken ... en vervolgens kom je met diverse redenen die het nut daarvan ontkrachten.
Wat raad jij nu aan, want ik zie geloof ik iets over het hoofd of ik begrijp je verkeerd.
@Ariën
>> Ikzelf gebruik vaak de eerste code van Ozzie. Puur omdat het leesbaar is, en de syntax van de string en de variabelen/functies gescheiden zijn.
Dat doe ik dus ook, maar strikt genomen zijn de dubbele quotes eigenlijk duidelijker (mits er niks geëscapet hoeft te worden).
Dit:
<?php
echo "Hallo $firstname $lastname!";
?>
lijkt me duidelijker dan dit:
<?php
echo 'Hallo ' . $firstname . ' ' . $lastname . '!';
?>
Dus waarom kies je dan toch voor dit laatste? Zelf doe ik dat dus ook, maar is het nog wel handig vraag ik me af.