Vars in Strings
Natuurlijk weet iedereen hier wel hoe PHP ongeveer werkt, maar er zijn nog wat onenigheden over strings. De 1 zegt dat het zo moet:
De ander zegt dat het zo moet:
Of zo:
Ik kan je vertellen dat de drie bovenstaande voorbeelden, allemaal goed zijn. Alleen is er natuurlijk wel een voorkeur methode. Zelf gebruikte ik altijd het 3e voorbeeld. Alleen weet ik nu ook, dat het een beetje overbodig is om dit zo te doen. Het is veel typwerk en je moet elke keer dat er een var in een string voorkomt de string afsluiten en de variabele plaatsen (buiten de quotes). Wanneer je een string begint kun je de variabelen die hierin moeten, er gewoon letterlijk in zetten (bijv.:)
PHP ziet dat je een string begint en omdat $_SERVER[PHP_SELF] in een string moet staan, hoef je het dus niet te escapen (d.m.v. " . $_SERVER['PHP_SELF'] . "). Dit is eigenlijk hetzelfde als met andere $variabelen.
Eigenlijk is het 'nog' beter als je het 1e voorbeeld gebruikt. Wanneer je double-quotes (") gebruikt, zal PHP bij elke karakter kijken, is het een dollarteken, is het een \n enz. Met single-quote (') zal PHP hier niet over nadenken en zal hij gewoon alles letterlijk overnemen wat jij intypt. Hij checked nu niet voor vars of dergelijke omdat PHP weet dat hier geen vars in voorkomen. Bijvoorbeeld:
Eigenlijk zou je het dus moeten doen zoals bovenstaand voorbeeld. Je ziet: ' . $_SERVER['PHP_SELF']; Dit moet dus omdat wanneer je single quotes gebruikt aan moet geven dat er een var komt. Dat doe je dus door het te onderbreken via ' . Het maakt echter niet ontzettend veel uit of je nou double-quotes of single-quotes gebruikt. Zelf zou ik double-quotes gebruiken zodat je jezelf veel typwerk bespaart. En het mag tenslotte, dus waarom zou je het niet doen ook al is het 'net' iets langzamer? Wanneer je erg eigenwijs was en bewijzen wil zien, kun je bovenstaande voorbeelden overnemen en het het volgende helemaal bovenaan je pagina plaatsen:
error_reporting(E_ALL) zorgt ervoor dat ELKE foutmelding wordt weergeven en niet alleen cruciale foutmeldingen zoals een parse error.