Template Parser

Door Tom K, 20 jaar geleden, 11.130x bekeken

Een tutorial over het maken van een Template Parser

Gesponsorde koppelingen

Inhoudsopgave

  1. Inleiding
  2. Bestand Verkrijgen en Lezen.
  3. Bestand aanpassen en parsen.
  4. De Block Functie

 

Er zijn 10 reacties op 'Template parser'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Tom K
Tom K
20 jaar geleden
 
0 +1 -0 -1
sorry, er is wout fout gegaan bij het toevoegen, ben nog bezig om aan t epassen
Tom K
Tom K
20 jaar geleden
 
0 +1 -0 -1
hij is klaar
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
Goed dan steek ik gelijk van wal...

Je gebruikt wel public bij je method's a la php5. Maar gebruikt a la php4 nog var $var ?! in plaats van public/private/protected e.d.

Verder vind ik de error verzamelijk slecht. Hier hebben we Exceptions en trigger_error(); voor...

Ik heb het niet getest, maar werkt dit ook met blokken in blokken? Ik zie geen enkele vorm van recursie namelijk...

Ook mis ik wat crusiale delimeters in de regexen volgens mij... zoals iD
En ik kan nog veel meer tags bedenken voor in de templates zelf:
REUSE
INCLUDE
FOR
Jurgen assaasas
Jurgen assaasas
20 jaar geleden
 
0 +1 -0 -1
Qua code vond ik deze tutorial wat minder maar qua techniek en uitleg vond ik dit toch wel goed, ik heb meer inzicht er in gekregen hoe een templateparser werkt.
Joren de Wit
Joren de Wit
20 jaar geleden
 
0 +1 -0 -1
Je geeft het zelf eigenlijk al een beetje aan, de tutorial is niet echt nuttig. Het schrijven van een eigen template parser is het wiel opnieuw uitvinden aangezien er al zoveel goede alternatieven bestaan.

Wat betreft je code, het viel met op dat je in je constructor controleert of het bestand bestaat en dat vervolgens in getfile() weer doet. Dat is dubbelop dus ik zou hem in getfile() eruit halen. Verder zou ik ook nog eens naar de visibility van je properties en methods kijken. Moet getfile() bijvoorbeeld van buitenaf benaderbaar zijn? Volgens mij niet. Een protected of private visibility zal dus voldoen.

@Jurgen: Smarty handleiding, leef je uit...
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
smarty... tja... is een leuke engine, heel uitgebreid!
en dan krijg je dus ook 170kb aan files voor...
Ik heb mijn eigen geschreven.
1 voor XSLT/XML (serverside) en 1 voor XHTML.
respectievelijk 2 packages van 18 en 16 kb... doen precies wat ik nodig heb en gebruiken geen eval();

Maar inderdaad zijn genoeg template-engines!
Als je tijd en interesse hebt is het toch altijd leuk je eigen te maken.
Daarnaast zijn de meeste templaters nog steeds op php4 gebaseerd...
Arian Stolwijk
Arian Stolwijk
20 jaar geleden
 
0 +1 -0 -1
naja, het lijkt me sterk dat jij in je 18/16 kb n?t zoveel functionaliteit hebt gestopt als in Smarty.

In smarty hoef je geen blocks te maken, je kan gewoon een array assignen, zodat de smarty variabele ook gewoon een array is, zo kan je met een simpele foreach loop hem zo uitlezen. Veel simpeler dan bij Yapter of TemplatePower... Net zo bij objecten trouwens.
Een ander voordeel is dat Smarty PHP code genereerd, en cached. Zo wordt slechts 1 keer de code geparsed, en in nette php code opgeslagen, de volgende keer wordt gewoon dat gecachede bestand geinclude.
Verder kan je je eigen Smarty functies aanmaken, de mogelijkheden zijn bijna eindeloos, wat je bij een eigen template parser toch niet zo makkelijk zo krijgt, en wat Yapter en Template power echt ontbreekt.

Smarty is dus snel en heel flexibel, goed gecode en zeer makkelijk in gebruik... wat wil je meer ?
M Ypma
M Ypma
20 jaar geleden
 
0 +1 -0 -1
@Arjan
Ik heb er 2 dagen terug 1 geschreven, en ik zweer je, die biedt je net zoveel mogelijkheden als Smarty. En is vele malen sneller. En doet geen dingen die niet nodig zijn... ik zal hem even in de scriptlib plaatsen
Edwin
Edwin
20 jaar geleden
 
0 +1 -0 -1
Vraagje:
wat als je een blok niet wilt gebruiken, dan komt hij wel gewoon op de pagina?
hoe op te lossen?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Mark PHP
Mark PHP
20 jaar geleden
 
0 +1 -0 -1
@Blanche
ben het niet helemaal mee eens dat schrijven van een template class onnodig is.
Ten eerste, het maken van een eigen (template) class is altijd een goede oefening. Bij een beetje goede templateparser heb je te maken met OOP, cache, Regex, recursie etc.

Dan kan het zo zijn dat de opdrachtgever een unieke code van je vraagt, of dat je zelf een unieke code wil creeren (misschien uit commercieel oogpunt), zodat je het script gewoon kan verkopen zonder aan allerlei licensies vast te zitten.

Om die laatste rede heb ik ook mijn eigen parser geschreven (include, comments, (nested) blocks en (block)variabelen). Ik kan zeggen, vooral op het gebied van regex en cache mechanisme heb ik nogal wat geleerd. Daarnaast is het nogal een uitdaging om een zo snel mogelijk parsesysteem te maken.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Inleiding
  2. Bestand Verkrijgen en Lezen.
  3. Bestand aanpassen en parsen.
  4. De Block Functie

Labels

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.