Template parser

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Cobol Applicatieontwikkelaar

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving In de applicatie ETM

Bekijk vacature »

C# developer

Functie Als ervaren Software Engineer wordt jij verantwoordelijk voor het bedenken en ontwikkelen van technische (maatwerk) oplossingen voor onze klanten en dit samen met de klant af te stemmen. Jij wordt o.a. verantwoordelijk voor de doorontwikkeling het software pakket welke voor ons enorm belangrijk is. Dit pakket zorgt er namelijk voor dat wij complete productielijnen kunnen aansturen en monitoren. Daarnaast heb jij actief contact met onze hoofdvestiging om het software achter een van onze systemen te verbeteren en te herschrijven. Momenteel zijn onze C# applicaties geschreven met o.a. Winforms. Echter hebben wij de actieve ambitie om dit te gaan herschrijven

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 »

Junior Back end developer PHP, Symfony

Functie Wij hebben onlangs onze eerste collega’s aangenomen, waardoor ons development team momenteel uit 4 personen bestaat. We bouwen onze software op basis van een PHP-framework (wat op zichzelf een Symfony framework is). Qua ontwikkeling focussen wij ons op 3 focus velden; – API-ontwikkeling/ Component Creatie – Implementatie – Framework ontwikkeling; het toevoegen van nieuwe functionaliteit of interne microservices Onze senior software engineer focust zich momenteel op de laatste twee punten, maar wij komen handen te kort op het eerste veld. Daarom zijn wij op zoek naar een enthousiaste junior software engineer die graag de kneepjes van het vak wil

Bekijk vacature »

Digital Agency is looking for PHP developers!

Functie The team currently has 20 colleagues, consisting of developers (front and backend) and the operations team, which also includes management and two scrum masters. They are looking for a PHP developer who is able to work independently. You will work in one of the three scrum teams and start working on a project for the customer. The interesting thing about this is that you do have variety in terms of work, but at the same time continuously work for existing customers. This also gives you the opportunity to really go into depth and develop innovative technical solutions. In terms

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 Webdeveloper

Als Lead webdeveloper bij KUBUS ben je verantwoordelijk voor het implementatie design van requirements en de software architectuur van de webapplicatie en services van BIMcollab. In je rol als lead developer zoek je als vanzelf op een creatieve manier naar het optimum tussen benodigde implementatie-tijd, de performance van de applicatie en een snelle go-to-market van features, aansluitend bij onze geautomatiseerde test- en release train. Hierbij bewaak je in samenwerking met de andere senior ontwikkelaars in je team de architectuur van de applicatie en adviseer je de product owner over noodzakelijke refactoring om de onderhoudbaarheid van het platform te verbeteren. Ons

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

Java developer - procesoptimalisatie (Inhouse)

Functie Wat ga je doen als Java developer? Jij als back end developer hebt al enige ervaring opgedaan in jouw vakgebied. Voornamelijk het werken met Java en Spring spreekt jou aan. Jij wordt samen met je collega developers in het team verantwoordelijk voor de gehele back end van de applicatie. Hierdoor heb jij veel zelfstandigheid in je rol en zul je ook zelf beslissingen samen met de PO maken. Er wordt gewerkt volgens de SCRUM methodiek, om zo structuur te creëren in de werkzaamheden. Binnen de 2-wekelijkse sprints pak jij je taken op die samen met de PO afgestemd zijn.

Bekijk vacature »

.NET Developer C# VB

Samengevat: Deze werkgever is actief in software voor het matchen van vraag en aanbod van gebruikte auto-onderdelen. Ben jij een .NET Developer? Heb je ervaring met het ontwikkelen (REST) en integreren van webservices? Vaste baan: C# .NET Developer C# VB HBO €2.600 - €6.200 Wij ontwikkelen software om vraag en aanbod van onderdelen van personenauto's bij elkaar te brengen. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. De branche van dit bedrijf is Automotive. Functie: Voor de vacature als .NET Developer Dordrecht HBO ga je

Bekijk vacature »

Full Stack PHP Developer

Functieomschrijving Ervaren PHP Developer gezocht! Wij zijn op zoek naar een ervaren PHP Developer die het IT team van een organisatie in de regio Ermelo gaat versterken. Voor deze functie zijn we op zoek naar een enthousiaste en breed georiënteerde IT-er die deze innovatieve organisatie nog een stap verder gaat brengen. Wij zijn op zoek naar iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je bent verantwoordelijk voor het samenwerken met een externe partij het is hierbij jouw taak om deze partij uit te dagen op het geleverde werk. Het schrijven van concepten aan de AI

Bekijk vacature »

Back-end Developer

Functie omschrijving Als Back-end Developer heb je de eer om als eerste interne developer bij deze organisatie te beginnen. Op dit moment zijn er externe developers, maar daar wil de organisatie verandering in brengen. Op termijn moet de gehele afdeling uit intern personeel bestaan. Je kan je voorstellen dat de eerste interne developer ook de nodige kennis mee moet brengen. Dat klopt. Je gaat je namelijk aan het begin bekommeren over de externe developers en uiteindelijk over je interne collega's. Verder ga je het volgende doen: Het bedenken, beheren en onderhouden van webportalen, API-koppelingen en applicaties; Je bedenkt en werkt

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 »

Developer

Functie omschrijving Gaat jouw hart sneller kloppen van software developen in C#.NET? Voor een softwarebedrijf in regio Den Bosch zijn wij op zoek naar een C# programmeur. Lees snel verder! Wat ga je doen? Je gaat werken met C# en ASP.NET MVC Framework om onder meer webapplicaties, webshops en websites te ontwikkelen. Je optimaliseert de bestaande software en helpt mee aan het automatiseren van bedrijfsprocessen. Je gaat samen met je collega's de juiste oplossing op basis van de wensen van de klanten uitwerken tot een mooi product. Bedrijfsprofiel Het ontwikkelen van softwareoplossingen en kantoorautomatiseringen is waar dit bedrijf voor staat.

Bekijk vacature »

Senior developer (PHP en VB.NET)

Functie De development afdeling bestaat uit 2 teams. Het productteam (10 developers) is verantwoordelijk voor verschillende applicaties met als doel om zoveel mogelijk te automatiseren en uit te werken tot standaard software. Met diverse Solutions Architecten en ervaren developers denken ze voortdurend mee met hun klanten en bouwen ze de basis van het uiteindelijke maatwerk dat wordt geleverd. Hiernaast hebben ze een maatwerk/projectteam. Dit team bestaat momenteel uit 8 developers (junior tot senior) en is verantwoordelijk voor het maatwerk in hun klantprojecten. Momenteel zijn ze op zoek naar een senior developer die aan de slag gaat in het productteam. Hierin

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

12/05/2024 18:04:31
 
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.