Template parser

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cobol Developer

Dit ga je doen Als Cobol Ontwikkelaar zal je gaan meebouwen aan een onderdeel van het backend systeem waarbij je het functionele ontwerp vertaald naar een technische oplossing die geïntegreerd kan worden in de huidige omgeving. Je zorgt ervoor dat de bedrijfsprocessen op een efficiënte manier worden uitgevoerd en werkt proactief aan het verbeteren hiervan. Samen met jouw collega’s reviewen jullie elkaars code en test je je eigen code. Je werkt nauw samen met andere ontwikkelaars, testers en functioneel ontwerpers. Taken pakket: Beheren en doorontwikkelen van de bestaande omgeving; Vertalen van een functionele vragen naar een technische oplossing; Doorvoeren van

Bekijk vacature »

Full stack developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Frontend Developer - Leeuwarden

Als Frontend Developer bouw jij mee aan het onderwijs van de toekomst! In een scrum team werken met jonge en enthousiaste collega’s, moderne technieken, ruimte voor eigen ontwikkeling en op een proactieve wijze kunnen meewerken aan innovatie binnen het onderwijs. Magister is het state-of-the-art softwarepakket dat scholen in het voortgezet onderwijs op alle fronten ontzorgt. Van leerlingenadministratie tot het ondersteunen van individuele leerlijnen, van toegang tot digitaal lesmateriaal tot het plannen van het lesrooster. In de Magister app bedient Magister ruim 2,5 miljoen gebruikers waarvan, dagelijks meer dan 600.000 unieke. Hiermee is Magister de absolute marktleider in onderwijsland. Wat vragen

Bekijk vacature »

.NET Developer

Functieomschrijving Ben jij klaar voor de volgende stap in jouw carrière? Kom werken bij dit kleine softwarebureau en werk aan de gaafste maatwerk projecten. Je komt te werken in een klein development team en werk nauw samen met elkaar, om maatwerk software te leveren en bij te dragen aan bedrijfsautomatiseringen. Je gaat werken met de Microsoft stack en technieken als .NET, C#, Entity, MVC, SQL server. In de functie krijg je veel vrijheid om zelf beslissingen te nemen en je hebt impact op de bedrijfsprocessen. Bedrijfsprofiel Dit familiebedrijf bestaat al ruim 20 jaar. Zij hebben een vast netwerk van klanten,

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc 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

Bekijk vacature »

Back-end Developer (Permanent position with the em

Bedrijfsomschrijving Dutch specialist in technical installation materials. Functieomschrijving Purpose of the position: Our client is looking for a Back-end Developer who, together with the rest of the energetic and dynamic team, is responsible for the development and management of the website. This not only concerns the development and management of the current website, but also the development of a new Headless Commerce Platform to keep the customer's website Future proof. Within the IT department, there is a real DevOps culture and the commerce team is at the forefront and tries to implement continuous improvements. Most important tasks: ï‚· Designing and

Bekijk vacature »

Belastingdienst - Freelance Senior Applicatie ontw

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 6 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: We verwachten van je, dat je: Brede ervaring hebt als JAVA-ontwikkelaar; Ervaring hebt met Agile/Scrum-werken en je thuis voelt in een Agile omgeving; Een aandeel levert aan het scrumproces en in de SAFe-releasetrain; Zelfstandig werkt in een scrumteam en intensief de samenwerking op zoekt met je directe collega’s en je omgeving; Ervaring meebrengt met het schattten en inplannen van taken tot en met het testen en demonstreren van de opgeleverde functionaliteit; Collega’s in je

Bekijk vacature »

C#.NET/Unity Developer

Functieomschrijving Voor een gewaardeerde werkgever in de omgeving van Breda zijn wij op zoek naar een software ontwikkelaar. Dit bedrijf houdt zich bezig met de ontwikkeling van WMS Software (C#/Unity & SQL). Past dit bij jou? Lees snel verder! Jouw werkzaamheden zullen er als volgt uitzien: Je werkt aan innovatieve softwareoplossingen voor het verbeteren en/of vernieuwen van processen; Samen met 6 applicatieontwikkelaars hebben jullie de verantwoordelijkheid voor de uitbreiding en ontwikkeling van de webapplicaties; Het uitvoeren van updates/aanpassingen aan de huidig draaiende applicaties; Je bent een luisterend oor naar klanten en vertaalt hun wensen door naar bruikbare software. Bedrijfsprofiel Wie

Bekijk vacature »

Senior Front-end developer

Functie Als front-end developer ga je aan de slag voor verschillende klanten, waarbij veel rekening wordt gehouden met waar je woont (dit is altijd binnen het uur), en word er gezocht naar een organisatie die past bij jou. Zowel qua persoonlijke ambities als de technische aansluiting. De opdrachten duren gemiddeld 1 à 2 jaar maar dit hangt ook af van je wensen. Je werkt in een teamverband voor een klant en zult nauw samenwerken met zowel eigen collega’s als die bij de klant werkzaam zijn. Ze zijn op zoek naar een technische front-end developer die ruime ervaring heeft in één

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Senior .NET developer

Functie As a Senior .NET developer you will work in our Research & development team. Our team consists of 17 colleagues! We are currently busy setting up a completely new architecture for a new product. We use VS2022 and .NET 6.0 for our new product. Your function is therefore mainly backend oriented. Since we develop measuring equipment for the chemical industry, it is also very important to develop high-quality software for its control. You are also responsible for designing, implementing and testing new features. For this position its also very important to ensure future-proof and sustainable architecture. Eisen - A

Bekijk vacature »

Integratie expert - Java Developer

Dit ga je doen Nieuw koppelingen ontwerpen, ontwikkelen en implementeren; Je schakelt met de klanten om hen zo goed mogelijk van dienst te zijn. Strategisch kijken naar nieuwe mogelijkheden op bestaande of nieuwe koppelingen zo effectief mogelijk te realiseren; Je bestaande toolset afwegen tegen nieuwe mogelijkheden om integratiedoelen steeds effectiever en/of effcienter te bewerkstelligen; Bestaande software koppelingen beheren, dit zijn koppelingen met zowel interne als externe systemen; Overleg met zowel directe collega's als met stakeholders om nieuwe integratieplannen concreet te maken; Je kunt de junioren meenemen op sleeptouw. Hier ga je werken Onze klant is op zoek naar een ervaren

Bekijk vacature »

SQL database developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als SQL database developer? Dit bedrijf bouwt applicaties om processen in distributiecentra te optimaliseren. Ter uitbreiding van het development team zijn wij op zoek naar een SQL database ontwikkelaar. Wil jij werken voor een groeiende werkgever in regio Breda waar jij de ruimte en tijd krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je houdt je bezig met het creëren en bouwen van MS SQL server databases; Je werkt aan innovatieve softwareoplossingen voor het verbeteren en/of vernieuwen van logistieke processen; Je gaat projecten vanaf het begin tot het

Bekijk vacature »

Java/Kotlin Developer

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 »

Full-stack Developer

As a Full-stack developer at KUBUS, you will develop the (web)applications and services of BIMcollab. You will work on both the front- and back-end. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact in the market, but small enough that as an individual developer you can have an impact and really make a difference. Our development team consists of over 40 developers, testers, scrum masters and product owners, divided over

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

27/05/2026 13:30:21
 
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.