Template parser

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Gorinchem zijn wij op zoek naar versterking. Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met de back end werken! Bedrijfsprofiel Onze

Bekijk vacature »

C#.NET-developer - JUNIOR

Functie omschrijving Voor een leuke opdrachtgever in omgeving Brielle zijn wij op zoek naar een junior developer. Werk jij graag met de volgende tools & technieken? C#, .NET, ASP.NET, MVC en SQL? Kijk dan snel of dit iets voor jou is! Als programmeur bij een productiebedrijf zal je voornamelijk nieuwe software schrijven maar ook bestaande software verbeteren. Verder werk je veel samen in back end projecten met leuke collega's. Bedrijfsprofiel Met een team van ruim 130 personen staan ze elke dag weer klaar om IT en Business te combineren door het ontwikkelen van producten op maat. Er zijn 3 teams,

Bekijk vacature »

.NET developer

Functie Jij begint als .NET ontwikkelaar in een team met 10 andere Software Engineers. De werkzaamheden zijn afwisselend, zo kan het dat jij bezig bent met volledig nieuwe features of het door ontwikkelen van bestaande sites of shops. Wij ontwikkelen web applicaties, maar ook mobiele applicaties. Daarnaast bijt jij je soms ook van in externe koppelingen met systemen zoals een ERP. Als team is er een duidelijke focus m.b.t. het waarborgen van de performance en snelheid van webshops. Ook zijn wij expert op het gebied van configuratoren. Kortom enorm veel afwisselende werkzaamheden! Ook jouw werkplek kan afwisselend zijn. Soms heb

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

.NET Developer

Functie omschrijving In deze functie ga je werken als C# Developer. Jij gaat aan de slag met de volgende taken: Maatwerk software bouwen; Huidige softwareprojecten verder uitbouwen en optimaliseren; Ideeën van de klant omzetten naar handige oplossingen en tools; Bovenstaande doe je middels de Microsoft- stack: C#, ASP.NET en MVC/ Entity Framework. Ben je net afgestudeerd aan een HBO opleiding Informatica, aarzel dan niet om te solliciteren. Dit is namelijk de ideale startersfunctie! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van websites. Dit is door

Bekijk vacature »

Account Developer

Voor Bol.com zijn wij per direct op zoek naar een Account Developer voor 32-40 uur per week op het kantoor in Utrecht. Wil jij een directe bijdrage leveren door partners van de juiste data-inzichten te voorzien en via campagnes op nieuwe platformkansen en features te wijzen? Ben jij analytisch sterk en kun jij dit vertalen naar plannen en inspirerende gesprekken? Lees dan snel verder! wat bieden wij jou Salaris van €2400 - €2600 obv 40 uur Minimaal 6 maanden Werklocatie is Utrecht Werken bij bol.com wie ben jij Jij bent commercieel gedreven en weet altijd aan de juiste knoppen te

Bekijk vacature »

Senior Full Stack developer

Bedrijfsomschrijving tbd Functieomschrijving Full Stack Java Development bij Randstad Groep Nederland (HQ) Er is een vacature in het Corporate Client Solutions (CCS) team. Dit team is met een ander team net begonnen aan het project ‘Grip op Inhuur’. Het doel van dit project is de tevredenheid van onze leveranciers te verhogen en de efficiëntie van onze administratie te verbeteren. Onderdeel daarvan is een ‘Mijn-omgeving’ voor ZZP’ers en leveranciers. Naast dit nieuwe project werkt het team ook aan het onderhoud en verbeteren van een digitaal vacature management systeem waarmee dagelijks vele vacatures worden voorzien. Het team ontwikkelt zo veel mogelijk zelf

Bekijk vacature »

Front-end Developer

Do you want to work with the latest technologies on the development of new systems and applications? Create elegant interfaces using VueJS for thousands of users? Get moving and strengthen Nederlandse Loterij as a Front-end Developer. Thanks to your efforts, our services are always presented in style. As a Front-end Developer you are responsible for website development and improving customer experience based on data analyze. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Front-end Developer you score by: Writing elegant, testable components without side-effects to provide functionality to the users Website development, adding

Bekijk vacature »

Intern - Junior PHP ontwikkelaar in fris en jong t

Bedrijfsomschrijving Werk jij graag een in fris, flexibel en jong team? Bij ons ben jij vrij om te bepalen waar jij het liefst werkt en op de vrijdag komen wij gezellig bij elkaar op kantoor. Flexibiliteit en vrijheid zijn bij ons de norm en dat geeft jou de ruimte en energie om het beste uit jezelf te halen! Ons team bestaat uit vijf enthousiaste collega's die jou graag ondersteunen in zowel je persoonlijke als professionele ontwikkeling. Met twee ervaren Senior Developers als mentoren ben jij in goede handen. Wij zien onszelf als een vriendengroep die gezamenlijk werken aan iets moois

Bekijk vacature »

Software developer

Werkzaamheden voor jou als software developer Voor een goede relatie in de regio Zwolle (meerdere locaties) zoeken wij een software developer die betrokken is bij de ontwikkelcyclus en verantwoordelijk is voor het testen en keuren van nieuwe en geoptimaliseerde software. In deze functie ben je in de implementatiefase de persoon die risico's beoordeelt en intern oplossingen aanbrengt om risico's te verkleinen. Binnen het ontwikkelteam van de software ben je een belangrijke schakel waar je intensief meewerkt met scrum. Het voorkomen van bugs in de programma's en het bevorderen van gebruiksvriendelijkheid voor eindklanten zijn voor jou een uitdaging en geeft voldoening

Bekijk vacature »

.NET developer

Functie Voor jou als junior .NET ontwikkelaar staat er een flinke uitdaging klaar bij dit bedrijf waar jij veel van kan gaan leren. Zo willen zij een flinke uitbreiding doen op het webbased gedeelte dat zij nu hebben en willen zij het standaard deel gaan moderniseren. Jouw team is dan ook op zoek naar een junior .NET ontwikkelaar die het leuk vindt om op basis van research en development aan de slag te gaan. Jouw mening telt mee als het gaat om hoe en met wat deze applicaties gebouwd en herschreven gaan worden. Jouw functie bij dit bedrijf gaat dan

Bekijk vacature »

Lead Front-end developer

Functie Hun huidige applicatie worden ontwikkeld in o.a. React, Redux, TypeScript. Ze werken graag met de nieuwste technieken en tooling en zoeken ook developers die hier proactief op zoek naar gaan. Als senior/lead developer ben je een kartrekker in het team. Naast het meedenken over bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Zo kun je bijvoorbeeld 1 dag in de week met 2 collega’s bezig zijn om samen met hen te kijken naar hun ontwikkeling, doelstellingen en uiteraard de gewenste begeleiding hierin. Hiernaast sta je als

Bekijk vacature »

Java Ontwikkelaar

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Back end Node.js developer

Functie Het ontwikkelteam bestaat momenteel uit 5 (back-end) Developers, 2 systeembeheerders, 1 DevOps engineer, 1 Tech Lead en 2 Scrum Masters. Samen wordt er doorontwikkeld aan twee SaaS-platformen die in een hoog tempo doorontwikkeld moeten worden. Omdat innovatie een belangrijk speerpunt binnen de organisatie is, wordt er ook continu naar snellere en slimmere oplossingen te bedenken en realiseren. Als Back-end Developer hou jij je dagelijks bezig met vraagstukken zoals: API-development, high volume datastromen, het ontwikkelen van Bots aan de hand van A.I. Daarnaast denk en werk jij mee aan de onlineapplicaties voor klanten. Er wordt zelfstandig en in teamverband gewerkt

Bekijk vacature »

Software Developer (Junior functie)

Functieomschrijving Wij zijn op zoek naar een Software Developer! Sta jij in de startblokken om je carrière te beginnen en kan je niet wachten om toffe software te gaan ontwikkelen? Kortom, ben je onlangs afgestudeerd of sta je op het punt om je papiertje te behalen? Voor een IT dienstverlener dat gespecialiseerd is in Microsoft technologie zijn wij op zoek naar C#.NET Developers. Het bedrijf heeft meerdere klanten in regio Utrecht waar je permanent kan komen te werken. Kom je liever te werken bij een klein softwarebedrijf of bij een groot consultancy bureau? Dat is helemaal aan jou de keuze!

Bekijk vacature »
Roy B

Roy B

20/10/2012 14:51:58
Quote Anchor link
Ik ben bezig met het bouwen van een eigen templateparser. Ik heb een begin gemaakt (nog zonder foutafhandeling en dergelijke), maar vraag me nu het volgende af..

Stel ik haal alle nieuwsitems op uit een database en wil deze weergeven in een template. Normaal ken ik een waarde toe aan ik een variabele door gebruik te maken van de functie assign. In dit geval zijn het meerdere waardes(een array). Hoe kan ik deze toekennen/weergeven?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
// voorbeeld.php
<?php
include "classes/templateparser.class.php";

$template = new Templateparser("home.html");
$template->assign("title", "Roy van Breugel");
$template->assign("newsitems", $newsitems);

echo $template->display();
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// templateparser.class.php
<?php
class Templateparser
{
    private $_template;
    private $_template_dir = "/templates/";
    private $_content;
    
    public function __construct($template)
    {

        $this->_template = $template;
        if(file_exists($this->_template_dir.$template))
        {

            $this->_content = file_get_contents($this->_template_dir.$template);
        }
    }

    
    public function assign($pattern, $recplacement)
    {

        $this->_content = preg_replace("#\{".$pattern    ."\}#si", $replacement, $this->_content);
    }

    
    public function display()
    {

        return $this->_content;
    }
}

?>
Gewijzigd op 20/10/2012 14:52:27 door Roy B
 
PHP hulp

PHP hulp

13/05/2024 16:10:19
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/10/2012 15:24:10
Quote Anchor link
vergeet het woord assign.

je kunt een complete array in je class opslaan of een object (lees andere class)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
include "classes/templateparser.class.php";

$template = new Templateparser("home.html");
$template->assign(array('title' => 'Roy van Breugel',
                        'newsitems' => $newsitems));

echo $template->display();
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
class Templateparser
{
    private $_template;
    private $_template_dir = "/templates/";
    private $_content;
    
    public function __construct($template)
    {

        $this->_template = $template;
        if(file_exists($this->_template_dir.$template))
        {

            $this->_content = file_get_contents($this->_template_dir.$template);
        }
    }

    
    public function assign($arr)
    {

        $this->_content = $arr;
    }

    
    public function display()
    {

        return $this->_content; // dit dan wel even in de view/template splitten
// bijv. als echo $content['title'];

    }
}

?>
Gewijzigd op 20/10/2012 15:27:02 door Frank Nietbelangrijk
 
Roy B

Roy B

23/10/2012 12:14:45
Quote Anchor link
Dat zou inderdaad kunnen. Maar stel ik wil de laatste 5 nieuwsitems weergeven. Hoe kan ik dan bijvoorbeeld de titel van de nieuwsitems weergeven?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/10/2012 13:09:52
Quote Anchor link
een extra variabele aan de class toevoegen en een getfunctie/setfunctie

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
class Templateparser
{
    private $_template;
    private $_template_dir = "/templates/";
    private $_content;
    private $title;
    
    public function __construct($template)
    {

        $this->_template = $template;
        if(file_exists($this->_template_dir.$template))
        {

            $this->_content = file_get_contents($this->_template_dir.$template);
        }
    }

    
    public function getTitle)
    {

        return $this->title;
    }

    
    public function setTitle($title)
    {

        $this->title = $title;
    }

    
    public function display()
    {

        return $this->_content; // dit dan wel even in de view/template splitten
// bijv. als echo $content['title'];

    }
}

?>
Gewijzigd op 23/10/2012 13:10:42 door Frank Nietbelangrijk
 
Ozzie PHP

Ozzie PHP

23/10/2012 14:27:54
Quote Anchor link
@Roy: even uit nieuwsgierigheid... hoe ziet zo'n template eigenlijk eruit?
 
Roy B

Roy B

23/10/2012 14:47:15
Quote Anchor link
@Ozzie,
Hieronder een voorbeeldje.. In dit geval is {content} een stukje tekst, maar stel dat het nu om een nieuwspagina gaat, dan wil ik i.p.v. {content} de laatste 5 nieuwsberichten weergeven.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html>
<head>
<title>{title}</title>
<link href="images/wec5.ico" rel="shortcut icon" type="image/x-icon"/>
<link href="styles/default.css" rel="stylesheet" type="text/css"/>
</head>

<body>
<div id="container">
  <div id="header">
    {title}
  </div>
  <ul id="menu">
    <li><a class="menuitem active" href="home.html">Home</a></li>
    <li><a class="menuitem" href="nieuws.html">Nieuws</a></li>
    <li><a class="menuitem" href="portfolio.html">Portfolio</a></li>
    <li><a class="menuitem" href="contact.html">Contact</a></li>
  </ul>
  <div id="content">
    {content}
  </div>
  <div id="footer">
  
  </div>    
</div>
</body>
</html>
Gewijzigd op 23/10/2012 14:49:08 door Roy B
 
Rick van Riel

Rick van Riel

23/10/2012 14:57:13
Quote Anchor link
Dan zorg je er toch gewoon voor dat de data die je weg wil schrijven in {content} als vooraf is gegenereerd. Op deze manier maakt het dan niks uit wat voor data je erin zet.

Op dit moment kun je met deze code dus alleen teksten kwijt. Als je de content voordat je het in de variabele $this->_content opslaat door een controller haalt die alles in een view opslaat kan je de view in de variabele $this->_content opslaan. Zo geef je jezelf meer vrijheid met de data die je wegschrijft naar de template.
 
Kris Peeters

Kris Peeters

23/10/2012 15:30:21
Quote Anchor link
Ja, precies.

Je slaat alle content op in een variabele.
Op het allerlaatste moment haal je alles door je parser.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
... // SELECT ... FROM nieuwsitems ...
$content = "";
while ($row = mysql_fetch_assoc($res)) {
  $content .= '<div class="nieuwsitem"><h2>' . $row['titel'] ...
}
...

$template->assign("content", $content);
echo $template->display();
?>


Je kan natuurlijk je class uitbreiden, waardoor dit alles binnen de class wordt verwerkt.
bv. een methode append($pattern, $item)
 
Ozzie PHP

Ozzie PHP

23/10/2012 16:29:55
Quote Anchor link
Is dit eigenlijk gebruikelijk om op deze manier met templates te werken? Wat is het verschil met het gebruiken van variabelen, bijv.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
  <div id="content">
    <?php echo $content; ?>
  </div>


in plaats van

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
  <div id="content">
    {content}
  </div>


In het 1e geval hoef je alleen de template te includen, en je hoeft niet eerst het bestand in te lezen en dingen te vervangen. Het lijkt mij dat dat beter is voor de performance?
 
Kris Peeters

Kris Peeters

23/10/2012 16:44:34
Quote Anchor link
Beide komen voor, ja.
Er zijn verschillende systemen die je als gebruikelijk kan beschouwen.

Tja ... 't is aan de template parser zo intelligent als nodig te zijn.

Wat mij betreft, vind ik dat een template parser een vrij eenvoudig ding is.
Bestand lezen ( file_get_contents() ) en een placeholder vervangen ( str_replace() ). Voor mij is er weinig extra nodig.

Andere scripters steken er dan weer wat meer tijd in en leveren dit pareltje
http://www.phphulp.nl/php/script/data-verwerking/bbcode-parser-v-01/1558/bbcodeparserv01/1143/
 
Roy B

Roy B

23/10/2012 16:48:27
Quote Anchor link
@Ozzie,
Om antwoord te geven op uw vraag.. Op de tweede manier is de code gescheiden van de html en zodoende de template makkelijker aan te passen of te vervangen.
 
Wouter J

Wouter J

23/10/2012 16:49:13
Quote Anchor link
Ozzie, lees eens dit topic. Daar discussiëren een aantal voorstanders en een aantal tegenstanders met elkaar: http://www.phphulp.nl/php/forum/topic/template-engine-doen-of-niet-doen/83080/
Gewijzigd op 23/10/2012 16:51:35 door Wouter J
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/10/2012 18:55:53
Quote Anchor link
Wat betreft Ozie's voorbeelden ben ik het met Ozzie eens. De eerste is véél sneller zowel met het ontwikkelen van je applicatie als in het gebruik. Echter er is een maar. De tweede is met name geschikt als gebruikers - die niet aan de code mogen komen - zelf hun template mogen maken en/of aanpassen. er dient natuurlijk dan wel een mooie handleiding geschreven te worden over de notatie, de keywords etc. Om dit goed te doen is er een grote investering nodig in tijd. En als je dat dan al gaat doen, ben je niet het wiel opnieuw aan het uitvinden? ik durf eigenlijk al te beweren van wel. Er zal vast wel een mooie PHP library te vinden zijn die dit allemaal voor je regelt.

Frank.
 
Ozzie PHP

Ozzie PHP

23/10/2012 20:56:54
Quote Anchor link
Thanks voor jullie antwoorden. De nadelige bijdrage aan de performance zou voor mij een reden zijn om niet voor een template parser te kiezen.
 
Wouter J

Wouter J

23/10/2012 22:55:20
Quote Anchor link
Ozzie, performance hoeft er helemaal niet aan te leiden. Laat ik Twig als voorbeeld nemen. Zodra deze in de productie omgeving zit cached hij bij het allereerste bezoek van de allereerste bezoeker, dus niet per bezoeker, alle pagina's als of het een gewone PHP template was. Zeg maar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
Twig template
=============
{% for article in articles %}
    <h1>{{ article.title }}</h1>
    <p>{{ article.intro }}</p>
{% endfor %}

Gecachede template
==================
<?php foreach ($articles as $article) : ?>
    <h1><?= $article['title'] ?></h1>
    <p><?= $article['intro'] ?></p>
<?php endforeach ?>


Hierdoor is er geen sprake meer van een template parser in de productie omgeving.
 
Ozzie PHP

Ozzie PHP

23/10/2012 23:01:21
Quote Anchor link
Ah zo... ik snap wat je bedoelt. Maar ik vind het net zo makkelijk om rechtstreeks de php code te typen :)
Maar voor iemand die niet kan programmeren kan ik me voorstellen dat het handig zou kunnen zijn.
 
Wouter J

Wouter J

23/10/2012 23:20:12
Quote Anchor link
Ozzie, het heeft nog meer voordelen. Bijv. auto-escaping, template inhertance, het limiteren van wat een webdesigner kan doen, ect.
 
Ozzie PHP

Ozzie PHP

23/10/2012 23:25:54
Quote Anchor link
Ja, maar ik zie voor mezelf (op dit moment) nog niet echt voordelen. Ik zal me er binnenkort nog wat meer in verdiepen en wie weet stel ik m'n mening dan nog bij...
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/10/2012 23:44:51
Quote Anchor link
Dank je Wouter.

Kijk eens op http://twig.sensiolabs.org/..

Dit zijn toch hele belangrijke punten. even wat copy-paste:

Documented: Twig is fully documented, with a dedicated online book, and of course a full API documentation.

Secure: When it comes to security, Twig has some unique features:

Automatic output escaping: To be on the safe side, you can enable automatic output escaping globally or for a block of code

Fast: One of the goals of Twig is to be as fast as possible. To achieve the best speed possible, Twig compiles templates down to plain optimized PHP code. The overhead compared to regular PHP code was reduced to the very minimum.

Toevoeging op 23/10/2012 23:53:10:

Vooral de laatste spreekt me wel aan: To achieve the best speed possible, Twig compiles templates down to plain optimized PHP code..

Ga dat maar even zelf maken.

Overigens snap ik Roy ook wel, je hebt een idee en je wil dat uitvoeren. Bovendien is dat goed voor je skills.
Gewijzigd op 23/10/2012 23:56:16 door Frank Nietbelangrijk
 
Wouter J

Wouter J

23/10/2012 23:58:02
Quote Anchor link
Frank, ook een Symfony gebruiker? :) Ik ben over het algemeen niet zo'n voorstander van het wiel opnieuw uitvinden, maar als leerproces is het inderdaad erg geschikt!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

24/10/2012 00:08:41
Quote Anchor link
Wouter nee hoor, al wil ik nog wel eens mijn licht er mee opsteken. Ik gebruik Codeigniter. Lekker licht.
 



Overzicht Reageren

 
 

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.