Heyyy guys! Een vraag:

Er is een programma dat gebruikt een eigen template engine. Hiervoor wil ik een PHP engine schrijven die de bestanden goed weg schrijft zodat ik krijg wat ik wil. Handiger uitgelegd (ik werk met Blade van Laravel):

Ik maak code in de programmeertaal van het systeem en dit word naar blade geparsed.

Hier komt mijn vraag:

Het programma gebruikt bijvoorbeeld:

{% if gebruiker.naam == 'Donny' %}
Hallo donny!
{% else %}
Jij bent donny niet!
{% endif %}

Hoe kan ik het beste dit om zetten naar:

@if($gebruker['naam'] == 'Donny')
Hallo Donny
@else
Jij bent donny niet
@endif
Wat is de meerwaarde van zo'n abstractie ten opzichte van:
<?php
// aanname: $gebruiker['naam'] bestaat
if ($gebruiker['naam'] == 'Donny') {
    ?>Hallo Donny<?php
} else {
    ?>Jij bent Donny niet<?php
}
?>

(even afgezien van het feit dat je dit soort dingen niet zou moeten hard-coden, dit is code die je niet kunt hergebruiken)

?

:/
[ignore]{% wordt dus <?php
%} wordt dus ?>
Zinnen die niet beginnen met {% zijn dus echo's? Wordt dus echo " .... ";

Maar welke taal is het precies? Want er is vast wel een (betere) parser dan wat str_replaces().
Ik weet niet of het verstandig is om op die manier PHP code echt te genereren, als dat je bedoeling is.

Zo'n (automatische) conversie lijkt mij ook nogal foutgevoelig.

Zou je eens kunnen beschrijven wat je precies probeert te bereiken ("ik wil van template taal A (welke?) naar template taal B (welke?)") en waarom?

Ook zou je een afweging kunnen maken: weegt het schrijven van een parser (wat bepaald geen sinecure is) of wat dan ook op tegen het handmatig omzetten? En wil je uberhaupt nog een templatetaal gebruiken na afloop, en zoja, waarom?
Ik ben erachter gekomen dat de template parsing gedaan word met TWIG... Ik heb hiervoor een pakket geinstalleerd voor laravel. Duurde even, maar heb het gevonden :)

Reageren