[PHP] Gestruktureerde opmaak van code?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Ik heb nog weinig ervaring met het bouwen van websites. Om te oefenen ben ik begonnen met een homepage. Eerst heb ik een statische pagina in HTML en CSS geschreven. In het HTML bestand ben ik steeds netjes met een tab ingesprongen als een element een niveau dieper komt te liggen (bijvoorbeeld door een div). Nu wil ik wat PHP toevoegen om bijvoorbeeld reacties in te lezen vanuit Mysql. In het PHP bestand zou ik ook graag in willen springen bij loops en dergelijke. Als ik zowel de PHP functies en de "geëchode" HTML code inspring dan wordt de code vrij onoverzichtelijk. Daarbij komt dat de tabs in de "geëchode" HTML code niet in de source terug te vinden zijn (of je zou steeds \t\t\t moeten toevoegen). Als je de page source zou inspecteren in een browser dan zou het een onoverzichtelijke bende zijn.

Omdat ik niet veel ervaring heb met webpaginas leek het me een goed idee om hier wat tips over te vragen. Is er een bepaalde layout conventie waar goed mee te werken is? en voegen jullie steeds een boel \t\t toe om de layout van het resulterende HTML bestand netjes te houden?. Het zal vast onduidelijk overkomen, maar ik weet niet hoe ik deze vraag anders kan stellen.

mvg, Bram

Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 18-09 18:00
Je kunt ook onderstaande gebruiken:
PHP:
1
2
3
4
5
6
<?php
echo <<<EOF
      hier de getabbede html
      <dit komt ook op deze locatie in jou bron>
EOF;
?>

[ Voor 4% gewijzigd door jbdeiman op 24-08-2009 16:09 ]


Acties:
  • 0 Henk 'm!

  • Luqq
  • Registratie: Juni 2005
  • Laatst online: 11:11
Ik zou je aanraden om eens te kijken naar een template engine zoals smarty :) Daarmee kan je je html en php code netjes uit elkaar houden, maakt het misschien ook minder verwarrend voor jezelf.

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 18-09 20:25

TeeDee

CQB 241

1: browsers renderen het niet anders als bijvoorbeeld alles op 1 lijn terecht komt
2: ik zou me er niet druk om maken
3: dat je html onoverzichtelijk wordt kan ik mee leven maar je backend code door allerhande nietszeggende chars toe te voegen is wmb onvergeeflijk!

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
TeeDee schreef op maandag 24 augustus 2009 @ 16:11:
1: browsers renderen het niet anders als bijvoorbeeld alles op 1 lijn terecht komt
2: ik zou me er niet druk om maken
3: dat je html onoverzichtelijk wordt kan ik mee leven maar je backend code door allerhande nietszeggende chars toe te voegen is wmb onvergeeflijk!
Idd dat dus. Wanneer je een goede html viewer gebruikt, bv. de addon bij Firefox, dan maakt hij de htmlcode vanzelf netjes.

Acties:
  • 0 Henk 'm!

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

In principe doet het er helemaal niks toe dat de gegenereerde HTML netjes is opgemaakt. Je browser zal de pagina toch wel laten zien. En hoeveel mensen zullen er nou werkelijk gaan kijken naar de code?

Het belangrijkste is dat jij je eigen broncode een beetje normaal kan lezen. :)

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 18-09 21:46

Matis

Rubber Rocket

Wanneer je bijvoorbeeld Firebug voor FF of Developpertoolbar voor IE neemt, dan zie je de broncode netjes opgemaakt worden door die programma's. Op de manier die je zelf beschreef in je TS.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
oke, de layout van de HTML output maakt opzich niets uit. Ik dacht alleen dat het er nogal prutserig uit zou zien voor de mensen die het inspecteren als het een lange keten is zonder enige vorm van inspringen.

maar in jullie PHP-bestanden, springen jullie daar voor de layout zowel de php functies als de html code die "geëchood" wordt in ? Als je bijvoorbeeld een menu "echoot" dan heb je een stuk HTML met daarin meerdere tabs. voor de duidelijkheid van je php bestand lijkt het me handig die tabs erin te laten zitten. zoiets als dit:

PHP: filename
1
2
3
4
5
6
7
echo "
<div class="menu">
     <div>
             blablabla
             ......etc
     </div>
</div>";


Misschien dat je meerdere menu's zou willen echoen, dan staat de code van hierboven misschien wel in een for-next constructie. dan krijgt alles in je editor ook nog eens het inspringen van de for-next loop erbij.

Als je meerdere van dit soort losstaande stukken HTML echoot dan wordt het er niet duidelijker op, omdat sommige een heleboel inspringen van de PHP code mee kunnen krijgen. Andere misschien weer helemaal niets als de echo zich op het bovenste niveau van de PHP code bevind. Als je dan in je PHP bestand naar de HTML code kijkt dan is het niet meteen duidelijk hoeveel <divs> diep een bepaald element ligt, of wat de diepte is vergeleken met het stuk HTML code een paar lijnen hoger. Ik weet nog niet hoe ik dit slim aan kan pakken.

Ik heb even naar Smarty gekeken zoals Luqq me aanraadde en het is opzich een leuk concept waarmee ik nog niet bekend was. Ik weet alleen niet hoe flexibel templates zijn. Als het aantal posts op de pagina niet vast staat dan kan de template ook niet vaststaan lijkt me. Is er enige flexibiliteit wat betreft het aantal elementen?

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 18-09 21:46

Matis

Rubber Rocket

Persoonlijk doe ik het zelf altijd liever met printfjes ( http://us2.php.net/manual/en/function.printf.php )

Of anders zo:
PHP:
1
2
3
4
5
6
echo '<div class="menu">';
echo '<div>';
echo 'blablabla';
echo '......etc';
echo '</div>';
echo '</div>';


OF (zoals al voorgesteld)

PHP:
1
2
3
4
5
6
print <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon no extra whitespace!
END;


Lees wel eerst even deze URL voordat je het wilt proberen: http://us2.php.net/manual/en/language.types.string.php

[ Voor 44% gewijzigd door Matis op 24-08-2009 16:45 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Of eindig gewoon je php tag, zet een stuk html en begin je php-tag weer. Heb je ook gewoon je html syntax highlighting voor dat gedeelte.

Eigenlijk als je html moet echo'en ben je niet zo handig bezig en maak je geen gebruik van goede templating.

[ Voor 29% gewijzigd door Bosmonster op 24-08-2009 16:49 ]


Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 11:12
Bosmonster schreef op maandag 24 augustus 2009 @ 16:48:
Of eindig gewoon je php tag, zet een stuk html en begin je php-tag weer. Heb je ook gewoon je html syntax highlighting voor dat gedeelte.

Eigenlijk als je html moet echo'en ben je niet zo handig bezig en maak je geen gebruik van goede templating.
Inderdaad, voor simpele dingen kun je gewoon <?php echo "HTML blaat "; ?> HTML <?php echo "MySQL wat is dat.."; ?> en ga maar door.

Het werkt in ieder geval makkelijker dan telkens een print doen van: <<EOF etc.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Manuel schreef op maandag 24 augustus 2009 @ 16:59:
[...]

Inderdaad, voor simpele dingen kun je gewoon <?php echo "HTML blaat "; ?> HTML <?php echo "MySQL wat is dat.."; ?> en ga maar door.

Het werkt in ieder geval makkelijker dan telkens een print doen van: <<EOF etc.
maar php is toch vooral handig om HTML code te genereren? De stukken HTML waar ik niets mee deed die gooide ik ook best vaak buiten de PHP tags. maar soms heb je enkele PHP constructies die eigenlijk inspringen vereisen, zoals loops, if-then-else statements etc. Binnen de <?php tags heb je dus te maken met het inspringen in PHP code en inspringen in de gegenereerde HTML code. dat maakt het vergelijken met de HTML buiten de ?> onoverzichtelijk omdat de code die daar staat geen tabs heeft van de PHP opmaak.

2 stukken HTML code die normaal even veel ingesprongen zouden zijn staan op deze manier niet naast elkaar omdat het stuk binnen de <?php tags ?> ook de tabs van de php code heeft meegekregen. of je moet er voor kiezen om geen tabs te gebruiken in je loops, if-then-else statements enzo.

Of probeer ik nu dingen op te lossen die het eigenlijk niet waard zijn?

Bram

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Verwijderd schreef op maandag 24 augustus 2009 @ 17:19:
[...]
maar php is toch vooral handig om HTML code te genereren? De stukken HTML waar ik niets mee deed die gooide ik ook best vaak buiten de PHP tags.
Buiten de php != buiten de php

Je kan je php ook best afsluiten in een loop bijvoorbeeld en dan verder gaan met plain html ;)

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 18-09 20:51

krvabo

MATERIALISE!

PHP:
1
2
3
4
5
6
<?
$data = array();
foreach ($data as $value) {
     ?><span class="row"><?=$value;?></span><?
}
?>

Al kun je voor zulke korte dingen het beter echoën als:

PHP:
1
2
3
4
5
6
<?
$data = array();
foreach ($data as $value) {
     echo '<span class="row">'.$value.'</span>';
}
?>


En over je inspringen in de source: Kijk eens in de source hier op got.
Elke \r\n is weer bandbreedte heh :P

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 18-09 21:46

Matis

Rubber Rocket

krvabo schreef op maandag 24 augustus 2009 @ 17:26:
En over je inspringen in de source: Kijk eens in de source hier op got.
Elke \r\n is weer bandbreedte heh :P
Haha, dat is ook wel een goede :P

PHP:
1
2
3
4
5
6
<?
$data = array();
foreach ($data as $value) {
     printf('<span class="row">%s</span>',$value);
}
?>

Code fixed :)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 18-09 20:51

krvabo

MATERIALISE!

Matis schreef op maandag 24 augustus 2009 @ 17:29:
[...]

Haha, dat is ook wel een goede :P

PHP:
1
2
3
4
5
6
<?
$data = array();
foreach ($data as $value) {
     printf('<span class="row">%s</span>',$value);
}
?>

Code fixed :)
Hoewel jouw manier natuurlijk erg netjes is, vind ik hem bij meerdere variablenen erg onduidelijk. Bij 5 of meer variabelen wordt het al erg onhandig om het achteraf te lezen. Dus "fixed" vind ik wel erg ver gaan ;)

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 10:07
krvabo schreef op maandag 24 augustus 2009 @ 17:26:
PHP:
1
2
3
4
5
6
<?
$data = array();
foreach ($data as $value) {
     ?><span class="row"><?=$value;?></span><?
}
?>

Al kun je voor zulke korte dingen het beter echoën als:

PHP:
1
2
3
4
5
6
<?
$data = array();
foreach ($data as $value) {
     echo '<span class="row">'.$value.'</span>';
}
?>


En over je inspringen in de source: Kijk eens in de source hier op got.
Elke \r\n is weer bandbreedte heh :P
Ik gebruik in mijn views vaak het volgende
PHP:
1
2
3
4
5
<?php $data = array(); ?>
<?php foreach ($data as $value): ?>
<span class="row"><?php print($value);?></span>
<?php endforeach; ?>
?>

Ik heb het idee dat dit net weer een tikje makkelijker is voor designers (die toch hoofdzakelijk met de views bezig zijn) omdat het makkelijk te zien is dat de foreach beeindigd wordt, plus is er onderscheid tussen endif of endforeach.

Overigens ben ik het ook eens met mensen hierboven dat er een scheiding tussen je verschillende lagen moet zitten.
HTML moet eigenlijk alleen in je template of view terecht komen en niet elders in je applicatie imho.

[ Voor 11% gewijzigd door Ramon op 24-08-2009 17:55 ]

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wat is er nu gefixed dan?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 18-09 21:46

Matis

Rubber Rocket

Just kidding, ieder zijn eigen voorkeur!

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
krvabo schreef op maandag 24 augustus 2009 @ 17:35:
[...]

Hoewel jouw manier natuurlijk erg netjes is, vind ik hem bij meerdere variablenen erg onduidelijk. Bij 5 of meer variabelen wordt het al erg onhandig om het achteraf te lezen. Dus "fixed" vind ik wel erg ver gaan ;)
Als je het op één regel schrijft wel ja.

PHP:
1
2
3
4
5
6
7
8
9
printf (
    '<span class="row">%s %s %s %s %s %s</span>',
    $value1,
    $value2,
    $value3,
    $value4,
    $value5,
    $value6
);

March of the Eagles


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dan nog, het is nog altijd niet duidelijk wat nou waar komt. In deze code valt het wel mee omdat alle values redelijk identiek zijn, maar bij een string als "%s: %s (%s); %s-%s" verlies je al snel het overzicht.

Ik erger me overigens mateloos aan die schrijffout in de topictitel :P

[ Voor 18% gewijzigd door .oisyn op 25-08-2009 12:11 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
.oisyn schreef op maandag 24 augustus 2009 @ 22:47:
Ik erger me overigens mateloos aan die schrijffout in de topictitel :P
offtopic:
Sommige mensen zijn voorstander van de progressieve spelling :-)

Acties:
  • 0 Henk 'm!

  • UltimateB
  • Registratie: April 2003
  • Niet online

UltimateB

Pomdiedom

De eerste reply is denk ik de beste. Kijk eens naar bijvoorbeeld smarty. Dan heb je helemaal geen problemen meer met het indenten van je logica in je HTML.

"True skill is when luck becomes a habit"
SWIS


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 18-09 21:46

Matis

Rubber Rocket

moozzuzz schreef op vrijdag 28 augustus 2009 @ 12:05:
[...]

offtopic:
Sommige mensen zijn voorstander van de progressieve spelling :-)
Gestruktureerde opmaak van kode bedoel je?

@hierboven, Smarty is absoluut een goede tip. Echter brengt dit IMO wel wat PHP kennis met zich mee!

If money talks then I'm a mime
If time is money then I'm out of time

Pagina: 1