Alle noter
PHP Note 01

PHP på dansk

Det startede med et code-review - og endte med at jeg lærte, hvordan PHP-interpreteren virker.

Mand der skriver PHP-kode

En af mine kollegaer havde engang sendt et code-review afsted til en anden kollega på noget simpel kode, som ikke skulle udløse for mange anmodninger om rettelser.

Og dog - han havde i koden skrevet en kommentar på dansk.

Det er selvfølgelig ikke nogen dødssynd at skrive en kodekommentar på dansk, men det ser nu lidt underligt ud:

kloer-fem.phpPHP
/**
* Giv klør fem mellem 2 brugere.
*
* @param User $initiator Den bruger som anmoder om klør fem
* @param User $accepter Den bruger som accepterer klør fem
* @return Coolness Angiver sejheden af highfiven baseret på lydniveauet af klør fem
*/
function giveHighFive(User $initiator, User $accepter): Coolness
{
$clapLoudness = $initiator->highfives($accepter);
return Coolness::fromClapLoudness($clapLoudness);
}

Spol frem til frokostpausen, hvor det blev diskuteret heftigt. De fleste var selvfølgelig enige om, at koden skal skrives på engelsk, og derfor skal kommentarerne da også være det - det er det eneste der giver mening. Dog fyrede jeg en joke af:

Hvis jeg nu laver PHP-syntaksen på dansk, må jeg så gerne skrive kommentarer på dansk?

Joke ved frokostbordet - engang i foråret 2025

Efter latteren havde lagt sig, blev det selvfølgelig til en samtale om, hvorvidt det overhovedet er muligt - altså at gøre PHP-syntaksen dansk. Her vidste jeg, at en gut tidligere havde forsøgt at “brittanize” alle keywords i PHP. I repositoriet havde Samuel også været så flink at give en guide til, hvordan man ændrer keywords i PHP-interpreteren.

Det var opskriften på at ændre syntaksens sprog, og derfor må det bestemt være muligt at lave PHP på dansk. Egentlig er det ret simpelt:

zend_language_scanner.lC
<ST_IN_SCRIPTING>"echo" {
<ST_IN_SCRIPTING>"ekko" {
RETURN_TOKEN_WITH_IDENT(T_ECHO);
}

Filen zend_language_scanner.l indeholder de strings, der identificerer tokens i PHP-interpreteren. Det er så nemt - dog er der den hage ved det, at compileren selv bruger PHP-filer til tests og benchmarking, som vi er nødt til at ændre, før den vil compile. F.eks. clicommand.inc:

clicommand.incPHP
echo "Requested file '$arg' does not exist.\n";
ekko "Requested file '$arg' does not exist.\n";

Det hele endte med en fork af PHP-kildekoden, som du kan finde på min GitHub. Den ligger som en pull request, og i kommentarerne ligger der et kodestykke, som rent faktisk kan køres, hvis man compiler den version med det “danske hack”, jeg har lavet.

dansk-test.phpPHP
<?php
klasse Test
{
offentlig statisk funktion test()
{
ekko 'hej verden';
}
}
Test::test();

Det kommer nok aldrig i produktion - men det var en sjov måde at lære, hvordan PHP-interpreteren fungerer under motorhjelmen. Og ja, kommentarerne må godt være på dansk.

Mathias Nørreskov Kastrup
Skrevet af
Mathias Nørreskov Kastrup

PHP-udvikler fra Kolding. Her skriver jeg om ting jeg bygger, undersøger og finder interessante nok til at huske.

Læs også

Alle
PHP · Note 02

SVG-grafer i PHP uden JavaScript

4 min