Premiär! Fyndchans i SweClockers Månadens Drop
Permalänk
Medlem

Hur BÖR jag skriva PHP + HTML?

Tjena!

Nån erfaren kanske vet:

Jag har ett dilemma där jag känner att jag måste bestämma mig.

Vad jag förstår finns det två sätt att kombinera HTML och PHP. (Inte inräknat include osv).

Första sättet är att echo:a ut alla html element inuti php'n.
Andra sättet är att öppna och stänga php-taggarna mellan html-elementen. (Samma med loopar, foreach/endforeach).

För mig personligen är det lättare att se vad som händer i alternativ #1, det beror kanske främst på att jag började skriva på detta sätt.

Det verkar inte finnas något rätt eller fel.

Hur gör ni? Vilka fördelar/nackdelar finns med respektive sätt?

Permalänk
Medlem

Nu programmerar jag inte PHP till vardags, men jag skulle säga att det beror lite på. I de allra flesta fall skulle jag säga #2 för att det ger en bättre överblick över HTML-koden. Skulle endast använda mig av #1 om det är mycket logik och lite HTML, dvs fokus ligger på PHP-koden snarare än HTML-koden.

Visa signatur

AMD Ryzen 7 5800X | 32 GB Corsair Vengeance 3200 MHz | ASUS TUF Geforce RTX 3080

Permalänk
Medlem

Om det är mycket HTML-kod och mindre data som ska infogas är andra sättet logiskt smidigt, är det liten mängd konstant html-kod och mycket dynamisk data kan blir ju metod 1 snyggare kodmässigt.

Man väljer väl själv det som är mest fördelaktigt.

Permalänk
Medlem
Skrivet av Rekl3M:

Tjena!

Nån erfaren kanske vet:

Jag har ett dilemma där jag känner att jag måste bestämma mig.

Vad jag förstår finns det två sätt att kombinera HTML och PHP. (Inte inräknat include osv).

Första sättet är att echo:a ut alla html element inuti php'n.
Andra sättet är att öppna och stänga php-taggarna mellan html-elementen. (Samma med loopar, foreach/endforeach).

För mig personligen är det lättare att se vad som händer i alternativ #1, det beror kanske främst på att jag började skriva på detta sätt.

Det verkar inte finnas något rätt eller fel.

Hur gör ni? Vilka fördelar/nackdelar finns med respektive sätt?

Programmerar php dagligen, Jag brukar vid större html kod använda templates, dvs

<code>
<?php
require_once 'header.html';
// Beskrivning 1
require_once 'footer.html';
</code>

Beskrivning 1:
Body kod här, oftast mer logiska lösningar här. Båda lösningarna du nämner fungerar, prestandan är likvärdig med de serverresurser som finns numera.
Jag brukar själv använda mig av andra sättet, alternativt sätt 1 ifall det är små saker som tex ändra i en tabell osv.

Om du bryr dig om läsbar kodning, använd dig av vscode samt phpsc, phpsc är i princip en linter som nämner hur man bör strukturera kod samt eventuella möjliga fel.

Visa signatur

Stationär: RTX 4090 OC ASUS | Ryzen 9 5950X | G.Skill Trident Z NEO 3600mhz 32GB | Arctic Liquid Freezer III 360 | Corsair HX1000i | Asus Rog Strix X570-F Gaming | Samsung 990 PRO 2TB | Samsung 980 PRO 2TB | Fractal Design North XL

Jobbdator: MacBook Pro 16" i7 6C, 16GB ram DDR4, AMD Radeon Pro 5300M 4GB

Permalänk
Medlem
Skrivet av L'ombra:

Nu programmerar jag inte PHP till vardags, men jag skulle säga att det beror lite på. I de allra flesta fall skulle jag säga #2 för att det ger en bättre överblick över HTML-koden. Skulle endast använda mig av #1 om det är mycket logik och lite HTML, dvs fokus ligger på PHP-koden snarare än HTML-koden.

Okok. Tack!

Skrivet av dannesthlm:

Om det är mycket HTML-kod och mindre data som ska infogas är andra sättet logiskt smidigt, är det liten mängd konstant html-kod och mycket dynamisk data kan blir ju metod 1 snyggare kodmässigt.

Man väljer väl själv det som är mest fördelaktigt.

Okej, men en sak jag inte fattar är att vid sätt #2 så behöver man inte använda sig av curlybrackets {} till sina loopar/statements? Man använder sig av endforeach och endif?

Skrivet av klotim:

Programmerar php dagligen, Jag brukar vid större html kod använda templates, dvs

<code>
<?php
require_once 'header.html';
// Beskrivning 1
require_once 'footer.html';
</code>

Beskrivning 1:
Body kod här, oftast mer logiska lösningar här. Båda lösningarna du nämner fungerar, prestandan är likvärdig med de serverresurser som finns numera.
Jag brukar själv använda mig av andra sättet, alternativt sätt 1 ifall det är små saker som tex ändra i en tabell osv.

Om du bryr dig om läsbar kodning, använd dig av vscode samt phpsc, phpsc är i princip en linter som nämner hur man bör strukturera kod samt eventuella möjliga fel.

Hmm okej! Tack för ditt svar!

Permalänk
Medlem
Skrivet av Rekl3M:

Okej, men en sak jag inte fattar är att vid sätt #2 så behöver man inte använda sig av curlybrackets {} till sina loopar/statements? Man använder sig av endforeach och endif?

endforeach och endif är ett alternativ för utan brackets, du kan fortfarande använda dig av brackets utan att förstöra koden, det är helt enkelt bara upp till dig hur du skriver.

Visa signatur

Stationär: RTX 4090 OC ASUS | Ryzen 9 5950X | G.Skill Trident Z NEO 3600mhz 32GB | Arctic Liquid Freezer III 360 | Corsair HX1000i | Asus Rog Strix X570-F Gaming | Samsung 990 PRO 2TB | Samsung 980 PRO 2TB | Fractal Design North XL

Jobbdator: MacBook Pro 16" i7 6C, 16GB ram DDR4, AMD Radeon Pro 5300M 4GB

Permalänk
Medlem
Skrivet av klotim:

endforeach och endif är ett alternativ för utan brackets, du kan fortfarande använda dig av brackets utan att förstöra koden, det är helt enkelt bara upp till dig hur du skriver.

Tusen tack! det visste jag inte ens även om jag misstänkte det.

Permalänk
Medlem

Andra alternativet är det enda som gäller när du börjar förstå hur det fungerar, hämtning av information från databaser mm. Blir rörigt att ha all HTML i PHP taggar när du börjar sätta upp stora mallar i HTML/CSS.

Sen så är det svårt att koda html inuti PHP, din editor ser det inte riktigt som html och kommer inte hjälpa dig på traven så mycket.

Visa signatur

Canon 70D | 2x Dell Ultrasharp 24" | Ryzen 3700X | 32B | GTX 1080Ti

Permalänk
Medlem

Aldrig arbetat med en större hemsida, men jag använder mig personligen utav båda två. Mestadels sätt 2 där jag använder en större PHP fil med all kod och använder enbart funktioner i html filen. Tycker det underlättar otroligt mycket när html koden inte har tusentals rader med PHP utan enbart ett par funktioner istället.

Permalänk
Medlem
Skrivet av Tekoppar:

Aldrig arbetat med en större hemsida, men jag använder mig personligen utav båda två. Mestadels sätt 2 där jag använder en större PHP fil med all kod och använder enbart funktioner i html filen. Tycker det underlättar otroligt mycket när html koden inte har tusentals rader med PHP utan enbart ett par funktioner istället.

Att importera funktioner där de behövs är definitivt smidigare.

Bygga delar och importera vid behov, t.ex.
<?PHP include 'footer.php' ?>

Så här såg faktiskt min flera år gamla portfolio ut... inget mästerverk, men väldigt städat. Alla delar låg separat.

<!DOCTYPE html> <head> <?PHP include 'portfolio/head.php'; ?> </head> <body> <div class="page-border"></div> <?PHP include 'portfolio/intro.php' ?> <!-- START KATEGORIERNA --> <div id="content"></div> <!-- scroll target --> <?PHP include 'portfolio/webb.php' ?> <?PHP include 'portfolio/bilder.php' ?> <?PHP include 'portfolio/foton.php' ?> <!-- SLUT KATEGORIERNA --> <?PHP include 'portfolio/highlight.php' ?> <?PHP include 'portfolio/om.php' ?> <?PHP include 'portfolio/kontakt.php' ?> <?PHP include 'portfolio/footer.php' ?> <?PHP include 'portfolio/script.php' ?> </body> </html>

Visa signatur

Canon 70D | 2x Dell Ultrasharp 24" | Ryzen 3700X | 32B | GTX 1080Ti

Permalänk
Hedersmedlem

Ska jag vara lite kategorisk så skulle jag säga att ifall man känner sig behöva skriva echo-statements som innehåller HTML-uppmärkning så är det som regel tecken på bristande uppdelning mellan databearbetning och templatelogik. Jag skulle mycket hellre förespråka att hoppa ur PHP-kontext (?>) när man ska skriva HTML, där data matas in med <?=-syntaxen, och sedan återvända till PHP-kontext (<?php) temporärt när så krävs.

Typiskt skulle jag säga att utseendet av underhållbara PHP-templates är en header där egentligen all databearbetning görs/förbereds (databasanrop sätts upp, booleaner med läsbara namn för olika villkor skapas, etc.), följt av att gå över i HTML-kontext och sedan enbart använda enklare template-konstruktioner med mer eller mindre triviala variabler och jämförelser i resten av filen: <?=, if, else, while, foreach. Detta kringgår de vanligaste fallgroparna när det gäller att undvika att PHP-koden blir ohanterbar spagetti över tid. En grund till PHP:s dåliga rykte är i mina ögon att det inbjuder till att blanda ihop dessa delar hejvilt.

Lägg därtill att vid all utmatning se till att behandla data med korrekt kodning (i praktiken typiskt använda
htmlspecialchars
överallt i HTML-kontext) och att använda prepared statements för databasfrågor så har man även navigerat runt de vanligaste problemen med säkerhet och robusthet.

Har man en sådan uppdelning som grund så är det sedan rätt lätt att bryta ut logik från sina template-headers in i ett klassystem för att än mer separera templaterendering från "affärslogiken". Tricket är i mina ögon att försöka vara strikt med att se PHP som ett templatespråk, med tydlig avgränsning mellan databearbetnings- och template-delarna, så kan det trots allt bli en rätt trevlig upplevelse att jobba med.

Jag minns en gammal Stack Overflow-post på temat som tyvärr tagits bort, men archive.org har den kvar:
PHP tutorial that is security-, accuracy- and maintainability-conscious? [Stack Overflow]
. Punkt 5+6 och 1+2+3 i den frågan har berörts ovan.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem

Nu är jag ingen webutvecklare, men många av punkterna på https://phptherightway.com/ ser kloka ut att följa. Är nog värt att kika på det som sägs där.
Specifikt för frågan om hur att kombinera PHP och HTML går dom genom under kapitlet Templating.

Permalänk
Medlem

Skulle rekommendera twig som är ett mycket modernare template språk för php
https://twig.symfony.com/

Permalänk
Skrivet av Rekl3M:

Det verkar inte finnas något rätt eller fel.

Jo, det finns definitivt fel sätt

Får jag fråga om detta är för en kurs/skoluppgift? Jag jobbar dagligen med PHP och hör talas om skolor och kurser där man fortfarande använder PHP på det här sättet (d.v.s blandar PHP och HTML i samma filer). Det är väldigt tråkigt eftersom det ger en dålig, och väldigt omodern, bild av PHP som har kommit mycket längre än så.

Vad jag tycker du bör göra är att kolla på en template engine, t.ex. Twig som @Meto nämner ovan. Du separerar då HTML-koden helt och hållet från din PHP-kod, som det borde vara.