Beste structuur: meerdere regels echo'en
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)
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
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
Is hier een 'beste manier' van, of is dit puur wat je zelf het prettigst vind?
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 -
Zelf doe ik als volgt om nog maar een ander voorbeeld te geven
Wel heb ik een soortgelijke ervaring met queries. die schrijf ik dan meestal maar zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 ;
");
}
?>
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
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:
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)
Gewijzigd op 04/11/2013 14:32:28 door Ozzie PHP
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
@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.
(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)
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.
PSR-2 Coding Style Guide volgen:
Waar de leesbaarheid van de output mogelijk belangrijker is dan de leesbaarheid van de code, zou ik teksten per zin opbouwen, bijvoorbeeld:
Eén echo is hier voldoende, dus dit kan ook:
Ik zou hier de Waar de leesbaarheid van de output mogelijk belangrijker is dan de leesbaarheid van de code, zou ik teksten per zin opbouwen, bijvoorbeeld:
Code (php)
Eén echo is hier voldoende, dus dit kan ook:
Code (php)
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 ;-)
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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);
?>
// 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: