[PHP] PHP tags embedden binnen php ?

Pagina: 1
Acties:
  • 221 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik zit met een klein probleempje. Om mijn input for te bouwen heb ik volgende code geschreven:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

    $editor = <<< EDITOR
    <form method="post" action="index.php?action=submit" enctype="multipart/form-data">
        
        <div id="toolbar">
            Toolbar not implemented yet
        </div>
    
        <textarea name="article" rows="25" cols="90">echo "boe";</textarea>
        <br>
        <input type="text" name="summary" size="60" maxlength="200">
        <br>
        <input type="submit" name="save" value="Save page">
        <input type="submit" name="save" value="Preview page">
        <input type="hidden" name="edittime">
    </form>
EDITOR;

    echo $editor;
    
?>


De bedoeling is een stukje php code te gebruiken van het type if(isset($article) {echo $article) bijvoorbeeld, binnen de textarea tags, zodat bij het previewen de tekst die de gebruiker heeft ingetypt ook getoond wordt binnen die textarea zoals het hoort.

Het probleem is dat ik niet weet hoe je bij deze notatie php code kunt laten uitvoeren.
een $test erin zetten toont daadwerkelijk de inhoud van $test.
echo $boe; toont letterlijk echo $boe; in de textarea.

Weet iemand hoe ik dat voor mekaar kan krijgen ?

Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • telefoontoestel
  • Registratie: Oktober 2002
  • Laatst online: 29-06-2024

telefoontoestel

Maak me gelukkig....Bel!!

edit: iets verkeerd gelezen denk ik.
Bedoel je dat een post waarde erin geplakt moet worden?

[ Voor 74% gewijzigd door telefoontoestel op 02-03-2005 21:49 ]

telefoontoestel


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 01:08
Eigenlijk heb ik het topic niet goed gelezen en veel te snel een stomme opmerking hier geplaatst die ik nu maar weer even weghaal.

[ Voor 78% gewijzigd door Dennis op 03-03-2005 01:08 . Reden: Hier stond eerst een niet-constructieve bijdrage van mijn kant. ]


Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
Het is niet mogelijk om statements te gebruiken in deze notatie. Je kunt wel zoals je zelf al had ontdekt variabelen afdrukken. Deze notatie werkt eigenlijk hetzelfde als de 'dubbele quotes'-notatie. Je zult de string moeten onderbreken als je een if statement wilt gebruiken...

Zie ook: http://www.php.net/manual...pes.string.syntax.heredoc
Dennis schreef op woensdag 02 maart 2005 @ 21:53:
Met <?php echo "zoek eerst zelf eens iets uit!!!!!"; ?> ???
offtopic:
Waarom niet normaal reageren, of gewoon niet :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, we zullen hem dan in stukjes kappen :)
Bedankt voor jullie hulp.

En Dennis, ik zoek ook zelf vooraleer ik vragen stel, maar dit kon ik niet vinden, mede omdat ik niet meer wist hoe die notatie heette...

Het feit dat ik slechts 146 posts heb wil misschien wel zeggen dat ik niet zoveel vragen stel op fora hé ;)

[ Voor 21% gewijzigd door Verwijderd op 02-03-2005 23:12 ]


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 01:08
Dit is php basis kennis. Als je kijkt bij de docs van php.net dan zie je dat daar vrijwel meteen staat dat je op elk stuk in je pagina <?php ?> kan zetten. Dus dat is volgens mij iets wat je gemakkelijk zelf uit had kunnen vinden.

Acties:
  • 0 Henk 'm!

Verwijderd

Dennis schreef op woensdag 02 maart 2005 @ 23:20:
Dit is php basis kennis. Als je kijkt bij de docs van php.net dan zie je dat daar vrijwel meteen staat dat je op elk stuk in je pagina <?php ?> kan zetten.
Niet met de notatie zoals in het voorbeeld gegeven is.

Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
Dennis schreef op woensdag 02 maart 2005 @ 23:20:
Dit is php basis kennis. Als je kijkt bij de docs van php.net dan zie je dat daar vrijwel meteen staat dat je op elk stuk in je pagina <?php ?> kan zetten. Dus dat is volgens mij iets wat je gemakkelijk zelf uit had kunnen vinden.
Volgens mij moet je de TS nog eens een keertje goed doorlezen, want jij komt met dingen aanzetten die niks met het probleem van de topicstarter te maken hebben :? De topicstarter gebruikt de zogenaamde 'heredoc syntax' om een string te specificeren. En dat heeft niks te maken met het feit 'dat je op elk stuk in je pagina <?php ?>' kunt gebruiken...

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 01:08
Hoshimaru,

Sorry voor mijn snelle veroordeling van deze vraag. Ik heb zelf duidelijk niet goed gelezen inderdaad (zoals ludo aangeeft). Bedankt dat je me erop hebt geattendeerd.

Om toch nog te proberen een constructieve bijdrage aan het topic te leveren:
Is het niet mogelijk om het in twee delen op te splitsen en dan . ertussen gebruiken? Of is dit juist iets wat je absoluut niet wilt?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In één stuk door was het interessantste geweest, maar mits je er geen php code in kunt steken zal het in 2 delen geschieden. Op zich niet zo'n probleem :)

Acties:
  • 0 Henk 'm!

  • ironx
  • Registratie: Augustus 2001
  • Laatst online: 01-07 19:42
PHP:
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

    $editor = <<< EDITOR
    <form method="post" action="index.php?action=submit" enctype="multipart/form-data">
        
        <div id="toolbar">
            Toolbar not implemented yet
        </div>
    
        <textarea name="article" rows="25" cols="90">{TEXTAREA}</textarea>
        <br>
        <input type="text" name="summary" size="60" maxlength="200">
        <br>
        <input type="submit" name="save" value="Save page">
        <input type="submit" name="save" value="Preview page">
        <input type="hidden" name="edittime">
    </form>
EDITOR;

    if (isset($textarea)) {
        $editor = str_replace('{TEXTAREA}', $textarea, $editor);
    } else {
        $editor = str_replace('{TEXTAREA}', '', $editor);
    }

    echo $editor;
    
?>


Zoiets mischien?

[ Voor 125% gewijzigd door ironx op 03-03-2005 09:33 ]


This posting is provided "AS IS" with no warranties, and confers no rights.


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Je kunt ook gebruik maken van de output control functies. ob_start en ob_get_contents etc. Moet je daar maar eens naar kijken.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb er dit van gemaakt:
PHP:
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
<?php

$editorA = <<< EDITOR1
<form method="post" action="index.php?action=submit" enctype="multipart/form-data">
    <div id="toolbar">
        Toolbar not implemented yet
    </div>
    <textarea name="article" rows="25" cols="90">
EDITOR1;

$editorB = <<< EDITOR2
</textarea>
    <br>
    <input type="text" name="summary" size="60" maxlength="200">
    <br>
    <input type="submit" name="save" value="Save page">
    <input type="submit" name="save" value="Preview page">
    <input type="hidden" name="edittime">
</form>
EDITOR2;

    echo $editorA;

    if(isset($article)) {
        echo strip_tags(stripslashes($article));
    }

    echo $editorB;

?>

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Waarom niet zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

//ob_start(); 

?>
<form method="post" action="index.php?action=submit" enctype="multipart/form-data">
    <div id="toolbar">
        Toolbar not implemented yet
    </div>
    <textarea name="article" rows="25" cols="90"><?php
        echo isset($article) ? strip_tags(stripslashes($article)) : '';
    ?></textarea>
    <br>
    <input type="text" name="summary" size="60" maxlength="200">
    <br>
    <input type="submit" name="save" value="Save page">
    <input type="submit" name="save" value="Preview page">
    <input type="hidden" name="edittime">
</form>
<?php

//$editor = ob_get_clean();

?>

Je kunt die comment regels nog uncommenten om alle html op te vangen in variabel $editor.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 01:08
Wellicht dat topicstarter met templates werkt en hij het allemaal netjes in een templatefile wilt hebben die elke gebruiker begrijpt, dan is laatste oplossing niet zo netjes :).

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Je kunt php zelf ook perfect gebruiken als template parser. Als een stukje code direct in verband staat met de ui, dan kun je het er gewoon bij plaatsen. Anders wordt het erg onoverzichtelijk.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
t'Is in orde, het doet hetgeen ik wil ... momenteel ;)

Kan zijn dat er weer vanalles niet correct werkt, 'k sleutel er gewoonlijk wat aan als ik met m'n vingers moet draaien op m'n werk.

http://suikun.free.fr/guest/

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Weet iemand hoe dit soort URL heet ?

Op sommige sites zijn er mensen die _http://www.blaat.com/index.php/archive/2005/03/ hebben ipv van bijvoorbeeld _http://www.blaat.com/index.php?page=archive&year=2005&month=3

Dit soort notatie komt ik laatst dikwijls tegen bij o.a. nieuws sites en forums bijvoorbeeld.

Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
Zie de P&W FAQ - PHP

Acties:
  • 0 Henk 'm!

Verwijderd

Zoek op multiviews :)
edit:

wat hij zei

[ Voor 42% gewijzigd door Verwijderd op 08-03-2005 09:23 ]


Acties:
  • 0 Henk 'm!

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 20-09 23:02
Eventjes als spuit 11, waarom niet zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    if(isset($article)) {
       $article = strip_tags(stripslashes($article));
    } else {
       $article = "";
    } 

$editor = <<< EDITOR
<form method="post" action="index.php?action=submit" enctype="multipart/form-data">
    <div id="toolbar">
        Toolbar not implemented yet
    </div>
    <textarea name="article" rows="25" cols="90">$article</textarea>
    <br>
    <input type="text" name="summary" size="60" maxlength="200">
    <br>
    <input type="submit" name="save" value="Save page">
    <input type="submit" name="save" value="Preview page">
    <input type="hidden" name="edittime">
</form>
EDITOR;

    echo $editor;

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sjaaky, ik heb het nu zo:
PHP:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php

    if($_POST['title'] != null ) {
        $titleTmp = strip_tags(stripslashes($_POST['title']));
    }
    else {
        $titleTmp="";
    }

    if($_POST['article'] != null ) {
            $txtArea = strip_tags(stripslashes($_POST['article']));
        }
        else {
            $txtArea="";
    }

    if($_POST['summary'] != null ) {
            $summaryTmp = strip_tags(stripslashes($_POST['article']));
        }
        else {
            $summaryTmp="";
    }

    if($_POST['date'] != null ) {
            $date = strip_tags(stripslashes($_POST['date']));
        }
        else {
            $date="";
    }

    $editor_top = <<< EDITOR_TOP
    <div>
    <form method="post" action="index.php?action=submit" enctype="multipart/form-data">
EDITOR_TOP;

    $editor_rest = <<< EDITOR_REST
        Title:<br>
        <input type="text" name="title" value="$titleTmp" size="60" maxlength="100">
        <br><br>
        <div id="toolbar">
            Toolbar not implemented yet
        </div>
        <textarea name="article" class="articleEditor">$txtArea</textarea>
        <br><br>
        Summary:<br>
        <input type="text" name="summary" value="$summaryTmp" size="60" maxlength="200">
        <br><br>
        <input type="submit" name="save" value="Save page">
        <input type="submit" name="save" value="Preview page">
        <input type="hidden" name="edittime">
    </form>
    </div>
EDITOR_REST;

    printf($editor_top);

    // Date - days
    printf("Day:&nbsp;<select name=\"day\" size=\"0\">");
    for($i = 1; $i < 32; $i++) {
        printf("<option value=\"" . $i . "\">" . $i . "</option>\n");
    }
    printf("</select>");

    // Date - months
    printf("&nbsp;Month:&nbsp;<select name=\"month\" size=\"0\">");
    for($i = 1; $i < 13; $i++) {
        printf("<option value=\"" . $i . "\">" . $i . "</option>\n");
    }
    printf("</select>");

    // Date - years
    printf("&nbsp;Year:&nbsp;<select name=\"year\" size=\"0\">");
    for($i = 2000; $i < 2006; $i++) {
        printf("<option value=\"" . $i . "\">" . $i . "</option>\n");
    }
    printf("</select>");

    printf("<br><br>");

    printf($editor_rest);

?>


Er moet nog een stukje bij om in die selects de datum van vandaag te selecteren als default.

Multiviews dus :p
In ieder geval heb ik nu wat Faq lectuur. Thx

Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 23:00
Mag ik vragen waarom je niet zoiets doet?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$template = <<<TEMPLATE
<html>
  <head>
    <title>MyFirstTemplate</title>
  </head>
<body>
  <h1>{title}</h1>
  <div>{article}</div>
</body>
</html>
TEMPLATE;

/*Of template in een file:
$tmpl_file = '/templates/main.tmpl';
$fhandle = fopen($tmpl_file, 'r');
$template = fread($fhandle, filesize($tmpl_file));
*/

//In te vullen variabelen:
$tmpl_data['title'] = $_POST['title'] ? strip_tags(strip_slashes($_POST['title'])) : 'Geen titel';
$tmpl_data['article'] = $_POST['article'] ? strip_tags(strip_slashes($_POST['article'])) : '...';

//En dan invullen met:
echo preg_replace('/\{([a-zA-Z]+)\}/e', '\$tmpl_data["$1"]', $template);


... en dit kan ook evt. met het snellere str_replace(). Dan doe je het zo:
code:
1
echo str_replace(array_keys($tmpl_data), $tmpl_data, $template);

Alleen moet je dan de hele tag gebruiken als key in $tmpl_data, dus $tmpl_data['title'] moet dan worden $tmpl_data['{title}'] .

[ Voor 161% gewijzigd door Morrar op 08-03-2005 13:46 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik moet toegeven dat ik nooit gedacht heb om template files te gebruiken zoals in je voorbeeld Morrar.

Maar in je voorbeeld, hoe krijg je het dan voor mekaar om meerdere artikes onder elkaar te plaatsen met zo'n template ?

Ik kan me moeilijk inbeelden dat ik dat 20 keer een artikel moet appenden aan een variabele $article, tenzij php geen problemen heeft met dat te trekken.

Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
Smarty werkt bijvoorbeeld met zogenaamde secties, hiermee kun je op een makkelijke manier herhalingen inbouwen in je template (dus de nieuwsartikelen die jij bedoeld)

PHP:
1
2
3
$news = array(array('id' => 1, 'tekst' => 'test'),
                     array('id' => 2, 'tekst' => 'tweede test'));
$smarty->assign('myvar',$news);

HTML:
1
2
3
4
5
<table>
{section name=test loop=$myvar}
<tr><td>{$myvar[test].id}</td><td>{$myvar[test].tekst}
{/section}
</table>


uitvoer:
HTML:
1
2
3
4
 <table>
   <tr><td>1</td>test</td><tr>
   <tr><td>2</td>tweede test</td></tr>
 </table>


dit is wel een heel simpel voorbeeld, maar het geeft wel aan dat herhalingen geen enkel probleem zijn

[ Voor 18% gewijzigd door Helmet op 09-03-2005 09:17 ]

Icons are overrated


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 23:00
Meerdere artikelen doe je idd met een loop-achtig construct. Smarty heeft daarvoor sections (Smarty is overigens een zeer nette template-engine), ben zelf ook met een template-engine bezig waarin ik for en foreach wil implementeren.

In het (beperkte) voorbeeld dat ik hierboven gaf zou je met 2 templates kunnen werken: 1 voor een artikel en 1 voor de rest van de pagina. Je kan dan met PHP een foreach maken waarin je over de artikelen loopt. Je vult dan voor ieder artikel het artikel-template in en append het resultaat aan een string. Dus zoals je zelf ook al voorstelde, en PHP trekt dat wel. Die string met de HTML van de artikelen gebruik je vervolgens weer in het pagina-template.

Dat is een redelijke oplossing lijkt me, als je het geavanceerder wilt moe je gewoon eens naar een echte template-engine gaan kijken (zoals bijv. Smarty).

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Morrar schreef op woensdag 09 maart 2005 @ 14:47:
Dat is een redelijke oplossing lijkt me, als je het geavanceerder wilt moe je gewoon eens naar een echte template-engine gaan kijken (zoals bijv. Smarty).
Waarom grijpen zoveel PHP-devvers toch altijd naar template engines? PHP is een template engine, en zal altijd sneller en efficiënter zijn dan een PHP script dat die functionaliteit overneemt.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
-NMe- schreef op woensdag 09 maart 2005 @ 15:34:
[...]

Waarom grijpen zoveel PHP-devvers toch altijd naar template engines? PHP is een template engine, en zal altijd sneller en efficiënter zijn dan een PHP script dat die functionaliteit overneemt.
Met het oog op overzicht en aanpasbaarheid van layout, en een strikte scheiding tussen opmaak en code, is gebruik maken van een extern pakket als smarty (dat de templates omzet naar .php-files en dus ook cached) een goede optie.

[ Voor 5% gewijzigd door Helmet op 10-03-2005 15:35 ]

Icons are overrated


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 23:00
Idd... Zoals Helemt al zegt nodigt PHP als template-engine niet echt uit tot een *nette* scheiding van logica en opmaak. Strict scheiden is redelijk onmogelijk (templates bevatten altijd een minimale vorm van logica) maar vergelijk nou zelf:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$mydb = mysql_connect('localhost', 'user', 'pass);
$result = $mysql_query('SELECT * FROM `table`');
if($result) { ?>
<html><head><title>Bla</title></head>
<body>
<table>
<?
while($row = $mysql_fetch_assoc($result)) {
   ?>
<tr><td><?=$row['a'] ?></td><td><?=$row['b']</td> ...etc </tr>
   <?
   }
}
mysql_close($mydb);
?>

is nou niet echt overzichtelijk wel? En dan heb ik het nog niet eens over wat complexere programma's met mooie structuren in classes etc. Hoe complexer het prog hoe meer dit een bende wordt. Zowel het aanpassen van layout als het debuggen van code wordt dan een stuk lastiger.

Daarom gebruik je een template engine. Je kand dan opmaak en code vrij goed scheiden, liefst ook in aparte files. Net als Smarty heb ik ook een engine gemaakt die de boel compileert, dus omzet naar PHP-code. Qua snelheid maakt het dan niet heel veel meer uit. En idd kun je de output ook nog cachen waardoor het sneller wordt dan elke keer een PHP fragment als hierboven uitvoeren (en zo'n fragment wordt meestal geen caching voor gemaakt, hooguit proxy's etc die dat doen).

Kortom: het is veel netter en niet veel langzamer.

[ Voor 10% gewijzigd door Morrar op 10-03-2005 16:16 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmmm ... ik ga het nu toch rustig aan doen hoor. Dit is de eerste keer dat ik iets deftig met php wil maken. Om zo'n template engine te bouwen ben ik de taal nog niet machtig genoeg.

Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 23:00
Je kunt een template engine (Smarty) kant en klaar gewoon downloaden en installeren, daarna is het gebruik ervan redelijk eenvoudig. Zelf eentje schrijven moet je alleen voor de lol doen of als je een of andere frustratie hebt met de bestaande engines :)

Maar doe het eerst vooral zoals jij dat zelf wilt! Voor een eerste (en 2e en 3e en 4e...) project is de oplossing zoals die hierboven staat prima geschikt. Pas als je merkt dat je daar niet meer mee uit de voeten kunt, zou ik es verder gaan kijken... Dan weet je ws. ook alweer heel wat meer over PHP.

In ieder geval succes met PHP-en!

[ Voor 6% gewijzigd door Morrar op 11-03-2005 00:02 ]


Acties:
  • 0 Henk 'm!

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 20-09 23:02
Bij een template engine wordt je min of meer gedwongen tot scheiden van business en presentatie logica. In php is dit ook perfect mogelijk, het vergt alleen wat discipline.

Ik ben een keer met smarty begonnen. Als 2e projectje wilde ik een tree weergeven. Een recursieve datastructuur dus. Ik heb toen geen manier gevonden om dat direct te doen. Enige optie die overbleef was om in php eerst de tree om te zetten naar een platte datastructuur (gewoon een array). Per entry moet je dan weer extra data gaan bijhouden etc. Het werkte wel, maar uiteindelijk zat er nog steeds presentatie logica in het php gedeelte en dat wilde je juist niet.
Dus smarty lag weer heel snel in de prullenbak.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Sjaaky schreef op vrijdag 11 maart 2005 @ 13:27:
Bij een template engine wordt je min of meer gedwongen tot scheiden van business en presentatie logica. In php is dit ook perfect mogelijk, het vergt alleen wat discipline.

Ik ben een keer met smarty begonnen. Als 2e projectje wilde ik een tree weergeven. Een recursieve datastructuur dus. Ik heb toen geen manier gevonden om dat direct te doen. Enige optie die overbleef was om in php eerst de tree om te zetten naar een platte datastructuur (gewoon een array). Per entry moet je dan weer extra data gaan bijhouden etc. Het werkte wel, maar uiteindelijk zat er nog steeds presentatie logica in het php gedeelte en dat wilde je juist niet.
Dus smarty lag weer heel snel in de prullenbak.
Dat is ook precies de reden waarom ik geen template engine gebruik. Voor simpele web apps kan het wel, maar als je echt een geadvanceerde gui wilt neerzetten, dan komt toch al snel tekort met zo'n engine. Overigens werk ik nu met het MVC pattern wat erg lekker werkt. Ik heb voor iedere pagina een controller class die wat acties uitvoert op basis van de parameters, zoals het instantieren van wat domein objecten (en eventuele acties daarop). Die weer worden dan doorgegeven aan een view object die op zijn beurt de pagina rendert. Werkt als een trein, en ik heb zo geen template engine nodig. Zo'n view object wordt afgeleid van een basis class die ook de header en de footer print. Eventueel kunnen die functies ook worden overschreven voor speciale functionaliteit.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Sjaaky schreef op vrijdag 11 maart 2005 @ 13:27:
Bij een template engine wordt je min of meer gedwongen tot scheiden van business en presentatie logica. In php is dit ook perfect mogelijk, het vergt alleen wat discipline.

Ik ben een keer met smarty begonnen. Als 2e projectje wilde ik een tree weergeven. Een recursieve datastructuur dus. Ik heb toen geen manier gevonden om dat direct te doen. Enige optie die overbleef was om in php eerst de tree om te zetten naar een platte datastructuur (gewoon een array). Per entry moet je dan weer extra data gaan bijhouden etc. Het werkte wel, maar uiteindelijk zat er nog steeds presentatie logica in het php gedeelte en dat wilde je juist niet.
Dus smarty lag weer heel snel in de prullenbak.
Dus wat gebruik je nu dan?

Acties:
  • 0 Henk 'm!

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 20-09 23:02
Geen php meer. ;)
Na mijn smarty experiment zag ik in dat je beter gewoon binnen php zelf diverse lagen kunt programmeren. Dat biedt veel meer flexibiliteit. Alleen moet je jezelf wel dwingen om niet even snel met een hackje hier en een hackje daar de diverse lagen om zeep te helpen.
Echt lange ervaring heb ik hier niet mee omdat ik gestopt ben met parttime php-devven. Ik ben gaan afstuderen en dat had niets met webdevelopment te maken.
Ik ben wat dat betreft ook nog zoekende naar de zaligmakende webdev techniek. Als ik weer iets in die richting ga doen kies ik ws voor java of asp.net, iig een gecompileerde taal met strong type-checking.
Pagina: 1