Beste structuur: meerdere regels echo'en

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tom aan t Goor

Tom aan t Goor

04/11/2013 13:41:35
Quote Anchor link
Hoi,

Ik vraag me af wat de beste manier is als je meerdere regels tekst wilt echo'en.

Hier 3 voorbeelden (ik gebruik zelf altijd nummer 1):

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
Voorbeeld 1.

<?php
if(isset($_POST['a'])){
 echo 'Hallo,<br>
 dit is<br>
 een test'
;
}

?>


Voorbeeld 2.
<?php
if(isset($_POST['a'])){
 echo 'Hallo,<br>';
 echo 'dit is<br>';
 echo 'een test';
}

?>


Voorbeeld 3.
<?php
if(isset($_POST['a'])){
?>

 Hallo,<br>
 dit is<br>
 een test.
<?php
}
?>


Is hier een 'beste manier' van, of is dit puur wat je zelf het prettigst vind?
 
PHP hulp

PHP hulp

23/04/2024 20:32:24
 
- Ariën  -
Beheerder

- Ariën -

04/11/2013 14:00:34
Quote Anchor link
Voorbeeld 3.
het is overzichtelijker, en PHP hoeft zich er niet meer mee bezig te houden, wat weer voor dit kleine scriptje enkele nanosecondes zal schelen.

Voorbeeld 1 kan ook, maar ikzelf doe dat alleen voor grote lappen met HTML-code. VOor enkele regels gebruik ik een print/echo.
Gewijzigd op 04/11/2013 14:01:33 door - Ariën -
 
Michael -

Michael -

04/11/2013 14:02:06
Quote Anchor link
Het is maar net wat je het prettigst vind. Wel is goed er rekening mee te houden dat het goed leesbaar en overzichtelijk blijft

Zelf doe ik als volgt om nog maar een ander voorbeeld te geven
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if( isset( $_POST['a'] ) ) {

    echo 'Hallo' .PHP_EOL
    . '<br />Dit is' .PHP_EOL
    . '<br />een test.' .PHP_EOL;

}

?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

04/11/2013 14:12:19
Quote Anchor link
Ik vind ze alle drie even storend maar als je je script netjes opbouwt dan heb je je 'code' en je 'view' en zullen die echo's in ieder geval nooit in je code komen.

Wel heb ik een soortgelijke ervaring met queries. die schrijf ik dan meestal maar zo:


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
<?php
function createTable()
{

    return $db->query("
    CREATE TABLE IF NOT EXISTS `auteurs` (
      `auteur_id` int(11) NOT NULL AUTO_INCREMENT,
      `naam` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
      `geboren` date NOT NULL,
      `nationaliteit` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
      `overleden` date DEFAULT NULL,
      PRIMARY KEY (`auteur_id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;
    "
);
}

?>
Gewijzigd op 04/11/2013 14:14:13 door Frank Nietbelangrijk
 
Ozzie PHP

Ozzie PHP

04/11/2013 14:30:32
Quote Anchor link
Nou, dan zal ik nog even een andere optie in de groep gooien...
Hou wel even de opmerking van Frank in je achterhoofd: "maar als je je script netjes opbouwt dan heb je je 'code' en je 'view' en zullen die echo's in ieder geval nooit in je code komen."

Jouw voorbeeld zou ik vertalen naar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (isset($_POST['a'])) echo 'Hallo,<br>dit is<br>een test.';
?>

Past prima op 1 regel in dit geval.

Als het meerdere regels zijn, dan zou ik kiezen voor voorbeeld 3, maar ik zou wel inspringen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if (isset($_POST['a'])) {
   ?>

   Hallo bla die bla bla bla bla bladie blablabla,<br>
   dit is bla die bla bla bla bla bladie blablabla<br>
   een bla die bla bla bla bla bladie blablabla test.
   <?php
}
?>
Gewijzigd op 04/11/2013 14:32:28 door Ozzie PHP
 
Kees van Huizen

kees van Huizen

04/11/2013 14:32:00
Quote Anchor link
Sorry even tussendoor ik ben eerste jaars leerling en ik wil informatica studeren, we hebben een opdracht gekregen en de opdracht moeten we woensdag inleveren. Wilt iemand de codes uitwerken en even kort uitleggen heel erg bedankt.
De opdracht is als volgt:

"opdracht van school"

Alvast bedankt!

Edit:
Het is niet de bedoeling om in een bestaand topic jouw vraag te stellen. Open hiervoor een nieuw topic. Let hierbij op dat het tevens niet de bedoeling is om schoolopdrachten door de community te laten uitvoeren. Vragen om op weg te komen zijn oke, maar verwacht (en vraag) niet om een kant-en-klaar script. Doe zelf moeite, ga op zoek en leer.
Gewijzigd op 04/11/2013 14:39:40 door B a s
 
Ozzie PHP

Ozzie PHP

04/11/2013 14:35:01
Quote Anchor link
Aan overige leden: graag niet reageren op de vraag van kees van Huizen.

@kees van Huizen:

Kees, het is niet de bedoeling dat je zomaar het topic van iemand anders gaat kapen!
Daarnaast:

>> Wilt iemand de codes uitwerken en even kort uitleggen heel erg bedankt.

Zo werkt het hier dus niet. Eerst zelf moeite doen. Als het niet lukt kun je een vraag stellen.
 
Kris Peeters

Kris Peeters

04/11/2013 14:59:52
Quote Anchor link
Mijn antwoord is puur persoonlijk en moet je nemen as is.

(voorbeeld 3) Ik vind het storend wanneer men de php-haakjes sluit en terug opent.
Dat maakt dat je structuur verliest; dat je moeilijker kan zien welke accolade waarbij hoort ...

Wat ook het voordeel moge zijn, het weegt niet op tegen de nadelen.

----
(voorbeeld 2) Lijkt me nergens voor nodig; lijkt me nergens goed voor.

----

Over het algemeen kies ik voorbeeld 1.

----

Maar laat me toch voorbeeld 4 geven: heredoc notatie.

Voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($_POST['a'])){
echo <<<HTML
<div>
  <span class="uitleg">De foto's zijn klaar</span>
  <span class="uitleg">Merk op dat ik nergens problemen krijg met speciale tekens zoals ' of "</span>
</div>
HTML
;
}

?>


Een aantal voordelen:
- je hebt geen probleem met ' of " tussen de HTML.
- Kijk naar de indentering. Bij jouw voorbeeld 1 start jouw eerste Hallo op 7 karakters van de rand, terwijl het tweede lijntje op 1 karakter van de rand staat.
Ik heb dit niet. De string begint pas bij het lijntje onder de <<< en eindigt de lijn boven het afsluitend teken.
 
Ward van der Put
Moderator

Ward van der Put

04/11/2013 15:11:28
Quote Anchor link
Ik zou hier de PSR-2 Coding Style Guide volgen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (isset($_POST['a'])) {
    echo 'Hallo,<br>dit is<br>een test.';
}

?>

Waar de leesbaarheid van de output mogelijk belangrijker is dan de leesbaarheid van de code, zou ik teksten per zin opbouwen, bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if (isset($_POST['a'])) {
    echo 'Hallo ', $voornaam, ',';
    echo 'Dit is een test.';
}

?>

Eén echo is hier voldoende, dus dit kan ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if (isset($_POST['a'])) {
    echo 'Hallo ', $voornaam, ',',
        'Dit is een test.';
}

?>

 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

04/11/2013 17:00:26
Quote Anchor link
Mijn mening:

Deze strookt grotendeels met die van Frank en Ozzie.
Als je goed onderscheid maakt tussen PHP code en de HTML (view), krijg je binnen de HTML beperkt een echo van een PHP variabelen.
Als je hele lapppen HTML hebt, weet je ook niet meer waar je blijft als je dat gehele block gaat echoën.
Daarnaast kan je dan ook geen gebruik meer maken van de voordelen die de meeste IDE's bieden.

Ook dit is natuurlijk een persoonlijke mening ;-)
 
- Raoul -

- Raoul -

04/11/2013 17:17:01
Quote Anchor link
Voor simpele site's voldoet voorbeeld 3. Een flexibelere oplossing (en ook hoe meeste sites het doen) is het splitsen van PHP code en HTML output.

Hier heb je enkele template engines voor. Ik raad Twig aan, maar je kunt ook bijvoorbeeld smarty gebruiken (niet aangeraden :P)

Wil je echter snel beginnen en heb je geen ervaring met 3rd part libraries te includen kan dit gewoon met PHP.

Klein voorbeeldje:

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
<?php

// functions.php of iets dergelijks

function renderTemplate($templateFile, array $variables, $templateDir = 'templates/') {
  extract($variables);
  include($templateDir . $templateFile . '.php');
}


// index.php

$templateVars = array();

if (isset($_GET['name'])) {
  $templateVars['name'] = htmlentities($_GET['name']);
}


renderTemplate('naam_tonen', $templateVars);

?>


En de template code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
// templates/naam_tonen.php

<html>
<?php if (isset($name)) {?>
   <h1>je naam is: <?= $name ?></h1>
<?php } else { ?>
   <h1>Geen naam opgegeven!</h1>
<?php }?>
</html>
 



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.