[php] welke manier is beter.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • hneel
  • Registratie: Maart 2001
  • Laatst online: 14:16

hneel

denkt er het zijne van

Topicstarter
Ik ben pas nieuw bezig met php, en het is me bij het bekijken van voorbeelden opgevallen dat de manier van php en html mengen door de een anders wordt gedaan als door de ander.

De een gaat uit van een html file en zet daar af en toe een php regel tussen. Zoals dit voorbeeld
PHP:
1
2
3
4
5
<html>
<body>
<?php echo("Hello World!"); ?>
</body>
</html>


Terwijl anderen liefst uitgaan van 1 groot php blok en dat ook heel de html file laten genereren. Zoals dit voorbeeld:

PHP:
1
2
3
4
5
6
7
<?php
echo("<html>"); 
echo("<body>"); 
echo("<p>Hello World</p>");
echo("</body>"); 
echo("</html>"); 
?>


Welke manier heeft nou jullie voorkeur en waarom?

Acties:
  • 0 Henk 'm!

  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 10-07 16:50

dawuss

gadgeteer

In principe is geen van beide manieren beter.
Als je het echt goed wilt doen, dan ga je met templates werken :)
Dan houd je HTML van PHP gescheiden, en dat is heel netjes.

Voor meer informatie daarover kun je hier kijken. Let op: de gebruikte TemplateParser FastTemplate heeft wat aanpassingen nodig als je hem met een php4 server wilt gebruiken.

[ Voor 41% gewijzigd door dawuss op 17-01-2004 22:25 ]

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


Acties:
  • 0 Henk 'm!

  • budi
  • Registratie: Januari 2000
  • Laatst online: 13:11
Tsja, hangt er een beetje vanaf hoe complex je webpagina is. In mijn geval op mijn eigen intranet gooi ik gewoon de PHP regels door het HTML heen en doe ik ook vrij veel html in echo's als de output variabel moet zijn (bijvoorbeeld in if statements).
Maar wat ik ook vrij vaak zie is dat men speciale dynamische en statische pagina's maakt. Dynamisch de PHP scripts en statisch de HTML pagina's die dan meestal ook door andere mensen ontworpen worden.

Hmmm, ik hoop dat je hier eigenlijk wel wat aan hebt en dat het geen opsom topic wordt. :)

MY Systemconfiguration: 10fingers@5chars/s; 2legs@5km/h; 1mouth@14k4; 2ears@18Khz; 2eyes@-6&-7


Acties:
  • 0 Henk 'm!

  • Rac-On
  • Registratie: November 2003
  • Niet online
persoonlijk probeer ik altijd zo min mogelijk context switching te doen. duzz zo veel mogelijk html achter elkaar, vervolgens zo veel mogelijk php en dan pas weer html.

Ik jouw geval zo ik dus (principieel) voor de tweede optie gaan, maar dat is eigenlijk onzin.
Voor een klein stukje code zou ik methode 1 gebruiken, maar over het algemeen blijf ik het liefst zo lang en veel mogelijk binnen php

doet niet aan icons, usertitels of signatures


Acties:
  • 0 Henk 'm!

  • wim__k
  • Registratie: Februari 2003
  • Laatst online: 21-11-2020
dawuss schreef op 17 januari 2004 @ 22:23:
In principe is geen van beide manieren beter.
Als je het echt goed wilt doen, dan ga je met templates werken :)
Dan houd je HTML van PHP gescheiden, en dat is heel netjes.

Voor meer informatie daarover kun je hier kijken. Let op: de gebruikte TemplateParser FastTemplate heeft wat aanpassingen nodig als je hem met een php4 server wilt gebruiken.
templates gebruiken zoals FastTemplate of Smarty heb ik ook nooit een goed idee gevonden - PHP is een template taal dus waarom zou je boven op je PHP weer een apart te leren taal gooien om je views en business logic gescheiden te houden? Het makkelijkste is om gewoon simpele PHP instructies zoals echo's enzo in je view te plaatsen en je ingewikkelde business logic in andere files en hierin de views includen.
Een andere mogelijkheid om toch dat template gevoel te houden is om XML/XSLT te gebruiken om je pagina's op te bouwen. Zo blijf je bij een vastgestelde standaard en de XML die je genereerd heeft weer legio andere output mogelijkheden (XML-FO, PDF, Flash)

Acties:
  • 0 Henk 'm!

  • saviour
  • Registratie: Juli 2000
  • Niet online
Toen ik begon met PHP wilde ik een gastenboekje bouwen (wie niet? ;)), daarin gooide ik ook al mijn HTML en PHP door elkaar en was het één groot zooitje.

Daarna wilde ik een forum bouwen (wie niet? ;)), daar ben ik nog steeds mee bezig en dat doe ik m.b.v een TemplateParser, namelijk: TemplatePower. Zelf vind ik dat erg prettig werken en ik denk dat het voor een beginner ook erg makkelijk is om zoiets te doen :)

Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 09:19
Om even terug te komen op template parsers en of die nou goed zijn of niet, zie je dat er tegenwoordig op een andere manier template engines gebruikt worden; ze gaan niet elke keer dat er een pagina moet worden gemaakt eerst de 'template-taal' helemaal compilen, maar maken van de template-taal gewone PHP.
Alleen wanneer het source-template aangepast wordt wordt het weer gecompiled. Je hebt dan (bijna) geen performance loss meer, maar je kunt wel op een simpele manier source en HTML scheiden.
Je kunt bijvoorbeeld practisch geen gebruik maken van verschillende templates als je zelf HTML overal tussendoorweeft. En probeer alles maar eens aan te passen aan een nieuwe stijl. Ik zou niet graag meer dan 20 bestanden willen doorspitten op html-codes!

Verbouwing


Acties:
  • 0 Henk 'm!

  • Myrdhin
  • Registratie: April 2000
  • Laatst online: 19-09 23:15
Wellicht is deze thread ook interessant voor je: [rml][ php] Content uit een database in een buffer plaatsen[/rml]

Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Zoals eerder al opgemerkt zijn templates wel een goede manier om content en code te scheiden. Ik kan me voorstellen dat je in het begin nog niet zover wilt gaan om het strikt op die manier te scheiden. Voor mij is het ook nog iets wat in de toekomst wel staat te gebeuren, maar op dit moment heb ik het nog niet.

Bij mijn sites komt het erop neer dat hetgene wat echt verandert, in PHP staat, de rest in HTML. Ik begin mijn sites altijd met een begin.php en eindig met een end.php. Die 2 files bevatten eigenlijk (bijna) alleen HTML, aangezien hierin grotendeels de layout van de site wordt bepaald. Alle PHP files spreken deze begin en end aan, de rest heb ik dus in PHP staan. Voor mij altijd een prima methode geweest om de basis altijd al te hebben als ik een nieuwe pagina moest maken.

Mocht je overigens gelijk met templates aan de gang gaan cq willen, is dat natuurlijk altijd beter (-:

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 10-07 16:50

dawuss

gadgeteer

Rotjeknor schreef op 17 januari 2004 @ 23:40:
Zoals eerder al opgemerkt zijn templates wel een goede manier om content en code te scheiden. Ik kan me voorstellen dat je in het begin nog niet zover wilt gaan om het strikt op die manier te scheiden. Voor mij is het ook nog iets wat in de toekomst wel staat te gebeuren, maar op dit moment heb ik het nog niet.

Bij mijn sites komt het erop neer dat hetgene wat echt verandert, in PHP staat, de rest in HTML. Ik begin mijn sites altijd met een begin.php en eindig met een end.php. Die 2 files bevatten eigenlijk (bijna) alleen HTML, aangezien hierin grotendeels de layout van de site wordt bepaald. Alle PHP files spreken deze begin en end aan, de rest heb ik dus in PHP staan. Voor mij altijd een prima methode geweest om de basis altijd al te hebben als ik een nieuwe pagina moest maken.

Mocht je overigens gelijk met templates aan de gang gaan cq willen, is dat natuurlijk altijd beter (-:
Op deze manier heb ik het ook heel lang gedaan. Een compromis tussen redelijke aanpasbaarheid en snelle opzet van de code.
Toch wil je, als je eenmaal van het gemak van templates genoten hebt, nooit meer wat anders.

aan Wim_k wil ik graag vragen hoe hij de dynamiek van een templateparser kan compenseren met native PHP, want volgens mij is dat echt niet mogelijk.

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


Acties:
  • 0 Henk 'm!

  • wim__k
  • Registratie: Februari 2003
  • Laatst online: 21-11-2020
dawuss schreef op 17 januari 2004 @ 23:48:
[...]
aan Wim_k wil ik graag vragen hoe hij de dynamiek van een templateparser kan compenseren met native PHP, want volgens mij is dat echt niet mogelijk.
Ik vraag me altijd af bij de meeste template systemen wat er zoveel makkelijker is aan het gebruik van {variable} tegenover <?=$variable ?> - is dat eerste echt zoveel makkelijker? En kijk naar bijvoorbeeld een template systeem als smarty, daar zit op dit moment al een complete taal in die weer boven op PHP ligt, dus je krijgt de volgende prachtige constructie.

smarty > php > C++ > assambly > machinecode

Terwijl juist PHP was bedoeld om een makkelijke laag boven op C++ te zijn waarmee je snel een website in elkaar kan draaien DUS, een templatetaal! Ik zit dus al enige tijd met smart (no pun intended) te wachten wanneer er een templatetaal boven op smarty komt omdat de templatetaal in smarty een beetje te ingewikkeld is geworden.
Ik zie dus zelf meer in het zelf scheiden van me code tussen simpele presentatie code en business logic, ik heb geen template parser nodig om dat voor me te doen.

Acties:
  • 0 Henk 'm!

  • ReddishRat
  • Registratie: Juli 2003
  • Laatst online: 23-02-2023
Ik vind het makkelijkste van PHP dat je het tussen je het tussen je (x)html kan gooien. Wel gestructureerd natuurlijk :)

Dus je 1ste manier >:)

Acties:
  • 0 Henk 'm!

  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 10-07 16:50

dawuss

gadgeteer

wim_k schreef op 18 januari 2004 @ 00:23:
[...]


Ik vraag me altijd af bij de meeste template systemen wat er zoveel makkelijker is aan het gebruik van {variable} tegenover <?=$variable ?> - is dat eerste echt zoveel makkelijker? En kijk naar bijvoorbeeld een template systeem als smarty, daar zit op dit moment al een complete taal in die weer boven op PHP ligt, dus je krijgt de volgende prachtige constructie.

smarty > php > C++ > assambly > machinecode

Terwijl juist PHP was bedoeld om een makkelijke laag boven op C++ te zijn waarmee je snel een website in elkaar kan draaien DUS, een templatetaal! Ik zit dus al enige tijd met smart (no pun intended) te wachten wanneer er een templatetaal boven op smarty komt omdat de templatetaal in smarty een beetje te ingewikkeld is geworden.
Ik zie dus zelf meer in het zelf scheiden van me code tussen simpele presentatie code en business logic, ik heb geen template parser nodig om dat voor me te doen.
Met Smarty heb ik persoonlijk totaal geen ervaring, maar mijn vraag heb je niet beantwoord.

Als je 200 pagina's hebt, die allemaal heel erg verschillend zijn, maar wel allemaal bepaalde, steeds terugkerende, elementen gebruiken, dan is dat niet meer netjes te hard-coden in php. Zelfs niet met includes. Als je dan een keer iets wilt wijzigen, dan is dat een hel. Hoe los jij dat op zonder templates?

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


Acties:
  • 0 Henk 'm!

Verwijderd

dawuss schreef op 18 januari 2004 @ 02:13:
[...]
Als je 200 pagina's hebt, die allemaal heel erg verschillend zijn, maar wel allemaal bepaalde, steeds terugkerende, elementen gebruiken, dan is dat niet meer netjes te hard-coden in php. Zelfs niet met includes. Als je dan een keer iets wilt wijzigen, dan is dat een hel. Hoe los jij dat op zonder templates?
Meschien een schot voor open doel, maar door goed includes met functies en objecten te schrijven die geen letter html bevatten? Maar enkel terug geven wat er gedaan moet worden.
Dit is niet bedoelt als steek ofzo, maar het is wel gewoon waar.

Persoonlijk is 1 ding standaard bij mij.
ik werk meestal minimaal in 4 bestanden.

meestal ziet ht er dan ook zo iets als dit uit.

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
<?php
    include './users.inc';
    include './functions.inc';
    include './news.inc';

... aan maken objecten enzo
?>

..header...

<div id="main">
<?php
    if (isset($_GET['section'])) {
            switch ($_GET['section']) {
       case 'news':
            news($news_obj,$user_obj);
          break;
       default:
            info($user_obj);
        }
    }else{
        info($user_obj);
    }
?>
</div>


style en layout die ik dan in een CSS bestandje.
de stukjes php in function.inc bevatten ook html voor opmaak.
maar de includes waar de objecten in zitten bevatten niks qua opmaak.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    function news($news_obj,$user_obj){
    print "
        <h1>News</h1>
        <table border=0>
    ";

    for ($i=0;$i<$news_obj->get_count();$i++) {
        list($title, $user, $date, $story) = $news_obj->get_news_item($i);
        print "
                <tr>
                    <td>
                        <h4>$title </h4>
                    </td>
                    <td width=10>
                        <h4></h4>
                    </td>
                    <td align=right width=2
..etc.. etc.. etc...

de verdere functies en objecten bevatten totaal geen html en geven enkel informatie als uitvoer.

zo deel ik mijn projectjes op in 4 duidelijke lagen.
1 voor de layout. (de CSS)
1 voor het overzicht (de index.php)
1 voor de opmaak (de functie.inc)
1 voor de functie afhandeling (de verdere includes)

persoonlijk vind ik dat lekker overzichtelijk werken.
maar ik denk dat het eerder een kwestie is van smaak.
bij het gebruik van php in html heb je meer overzicht op de html.
en bij gebruik van html vanuit php heb je weer meer overzicht over de php.

aan de andere kant is het nu ook voor het eerst dat ik over die templates hoor.
dus meschien dat k volgende week vrolijk met templates werkt.
zometeen even lezen :)

[ Voor 7% gewijzigd door Verwijderd op 18-01-2004 05:35 ]


Acties:
  • 0 Henk 'm!

  • mschol
  • Registratie: November 2002
  • Niet online
ik kan me vergissen maar als je wilt werken met templates zal je dus in O.O.P moeten gaan werken :?
of zie ik iets over het hoofd?

Acties:
  • 0 Henk 'm!

  • Myrdhin
  • Registratie: April 2000
  • Laatst online: 19-09 23:15
dawuss schreef op 18 januari 2004 @ 02:13:
[...]

Met Smarty heb ik persoonlijk totaal geen ervaring, maar mijn vraag heb je niet beantwoord.

Als je 200 pagina's hebt, die allemaal heel erg verschillend zijn, maar wel allemaal bepaalde, steeds terugkerende, elementen gebruiken, dan is dat niet meer netjes te hard-coden in php. Zelfs niet met includes. Als je dan een keer iets wilt wijzigen, dan is dat een hel. Hoe los jij dat op zonder templates?
Wim_k bedoelt dat hij PHP als template taal gebruikt. Waarom een taal bovenop PHP maken voor template terwijl eigenlijk PHP juist als template taal uitermate geschikt is? Zie: Beyond The Template Engine.

Templates scheiden niet de code van de HTML, maar scheiden de business logic zoals data uit een database halen en bewerken en presentation logic zoals de data netjes in een tabel weergeven.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Wat ik tegenwoordig doe is de array $GLOBALS['output'] vullen met alle gegevens die ik wil outputten. Op basis van een instelling include ik een bepaalde parser. Dit is gewoon een functie die altijd parseoutput heet.

Ik heb op dit moment alleen maar een functie die XML maakt, maar dit kan dus ook een functie zijn die een aantal str_replace acties uitvoert.

Ook kan dit een functie zijn die alleen maar de view layer include om zo alle gegevens te printen op de juiste plaats. Daarvoor gebruik ik dus dingen als <?PHP echo $GLOBALS['output']['titel']; ?>

[ Voor 6% gewijzigd door djluc op 18-01-2004 14:03 ]


Acties:
  • 0 Henk 'm!

  • eborn
  • Registratie: April 2000
  • Laatst online: 18-09 19:03
dawuss schreef op 18 januari 2004 @ 02:13:
Als je 200 pagina's hebt, die allemaal heel erg verschillend zijn, maar wel allemaal bepaalde, steeds terugkerende, elementen gebruiken, dan is dat niet meer netjes te hard-coden in php. Zelfs niet met includes. Als je dan een keer iets wilt wijzigen, dan is dat een hel. Hoe los jij dat op zonder templates?
Tja, maar in jouw geval moet je ook nog 200 templates aanpassen. Of je moet binnen het template-systeem bepaalde blokken kunnen 'includen', maar goed, dat kan in PHP ook.

Templates zijn voor mij vooral nuttig als er iemand zonder PHP kennis aan de layout moet sleutelen. Of als ik een modulair systeem op moet zetten wat op verschillende sites binnen een geheel afwijkende layout gebruikt moet worden. Daar gebruik ik mijn eigen template-parser voor met minimale functies (if en een loop-structuur). De rest los ik zoveel mogelijk op in PHP, want daar is het uiteindelijk ook voor bedoeld ;)

Acties:
  • 0 Henk 'm!

  • saviour
  • Registratie: Juli 2000
  • Niet online
mschol schreef op 18 januari 2004 @ 09:01:
ik kan me vergissen maar als je wilt werken met templates zal je dus in O.O.P moeten gaan werken :?
of zie ik iets over het hoofd?
Hoezo zou dat moeten dan?

Ik weet niet eens wat dat OO coden nou precies inhoudt, laat staan dat ik het kan :P, maar toch gebruik ik een templateparser :)

Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

wim_k schreef op 17 januari 2004 @ 22:44:
Een andere mogelijkheid om toch dat template gevoel te houden is om XML/XSLT te gebruiken om je pagina's op te bouwen. Zo blijf je bij een vastgestelde standaard en de XML die je genereerd heeft weer legio andere output mogelijkheden (XML-FO, PDF, Flash)
Dat doe ik, en ik vind het geniaal werken. Ik krijg een duidelijke scheiding tussen mijn layout en mijn content en als ik zou willen zou ik zo andere output-vormen kunnen maken, en ik heb een gestandaardiseerde template-language die (IMHO) goed leesbaar is.

Zie ook mijn weblog.

Rustacean

Pagina: 1