Beste structuur: meerdere regels echo'en
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):
Is hier een 'beste manier' van, of is dit puur wat je zelf het prettigst vind?
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?
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.
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 -
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
Zelf doe ik als volgt om nog maar een ander voorbeeld te geven
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:
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
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:
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:
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
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!
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
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.
@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.
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:
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.
(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.
Ik zou hier de 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:
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)
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 ;-)
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 ;-)
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:
En de template code:
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:




