Toon posts:

Semantiek van PHP

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met het developpen van een website. Nu heb ik al een deel van de PHP en de (semantische) design liggen, maar ik vroeg me af hoe deze het beste gecombineerd kunnen worden in het kader van semantiek. In alle artikellen wordt gesteld dat er een strikte scheiding gemaakt moet worden tussen (X)HTML, CSS en JS. Over PHP heb ik echter nog niets gevonden.

Dus wat is een betere semantiek? Een broncode vol met included PHP scriptjes en een hele berg losse .php files op je servert, of de PHP in de broncode houden. In het kader van de pure semantiek zou de eerste optie natuurlijk het meest logisch zijn, alles gescheiden houden, dus er ook voor zorgen dat PHP niet de broncode vervuilt. Ik zou op die manier waarschijnlijk zo'n 5-8 includes per pagina krijgen, wat met een website van 10 pagina's al neerkomt op 50-80 losse php files op de server. Is dit nog wel wenselijk? Is dit nog in het kader van semantiek of niet? PHP zelf zal geen invloed uitoefenen op de layout van de website, slechts de output hiervan moet semantisch correct zijn. In dat geval zou het puur een kwestie van smaak zijn van de developper, alles erbinnen houden of niet. Het zou de snelheid zelfs danig kunnen beinvloeden met al die includes (kan ik me zo voorstellen).

Is hier net zo'n duidelijke stelregel voor als voor de scheiding tussen (X)HTML, CSS en JS of is dit een kwestie van smaak? En als hier een duidelijke regel voor is, waarom wel of waarom niet?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je praat over semantiek binnen PHP, maar dat is hier niet aan de orde. Semantiek gaat over de juiste tags gebruiken voor het juiste doel...

Jij zoekt meer naar mogelijkheden van templates binnen PHP :) De buren hebben daar meer verstand van en daar zijn ook al veel meer topics over geweest :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07 22:34
Ik gok dat je eigenlijk doelt op een CMS en/of een template engine. Vaak worden ze in combinatie gebruikt. Daarmee scheid je in principe de business logic (PHP) van de presentation logic (template engine) en uiterlijk (HTML).

Verwijderd

Ik zou zeggen, als het pagina specifieke PHP code is (die niet elders wordt gebruikt dus) kan je het prima in het betreffende document houden. Hergebruik je echter database connections, query's etc.etc. kan je beter includes gebruiken! Ik weet niet in hoeverre je gebruik maakt van classes/functies e.d. maar deze ontwikkel je meestal voor hergebruik, bij een back-end systeem voor beheer, is het bijvoorbeeld vrij onlogisch om de "check" op authenticatie op elke pagina opnieuw te schrijven (of te copy/pasten), hiervoor zou je goed een include kunnen gebruiken. (btw, wel een slecht voorbeeld aangezien dit meestal een sessie check is)

[ Voor 6% gewijzigd door Verwijderd op 19-02-2007 16:30 ]


Verwijderd

Zoals mijn voorgangers al meldden: php heeft weinig met semantiek te maken. Php is in dit geval slechts een gereedschap om dynamische output mee te genereren.

Waar je naar kunt kijken is het MVC (model, view, controller) patroon. Dit komt neer op het scheiden van je applicatielogica en je presentatie, waarbij je de presentatielogica onderverdeelt in een controller (wat moet er gebeuren?) en een model (implementatie van de daadwerklijke functionaliteit).

Zelf implementeer ik dit als volgt: mijn php spuugt XML uit. Met behulp van XSL-T zet ik deze XML om naar HTML. De php is onderverdeeld in twee delen: de controller en het model. De controller neemt een paginaverzoek aan en bepaalt aan de hand van GET- en POST-variabelen wat er moet gebeuren. Met deze informatie geeft de controller het model een schop zodat er daadwerkelijk actie in de taxi komt. Een van de voordelen is dat je sneller geneigd bent herbruikbare functies te schrijven.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* Controller */
switch ($_GET['action']) {
    case 'bekijken':
        bekijkItem($_GET['item_nummer']);
    break;
    case 'verwijderen':
        verwijderItem($_GET['item_nummer']);
    break;
}

/* Model */
function bekijkItem($item_nummer) {
    // Bla bla bla
}

function verwijderItem($item_nummer) {
    // Boe bie bah
}

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
BtM909 schreef op maandag 19 februari 2007 @ 13:34:
Je praat over semantiek binnen PHP, maar dat is hier niet aan de orde. Semantiek gaat over de juiste tags gebruiken voor het juiste doel...
Dit is natuurlijk niet helemaal waar in PHP kun je net zo goed spreken van semantiek, het word echter niet vaak gedaan. Zodra je elementen een (juiste) betekenis kunt geven ben je eigenlijk al klaar, denk bijvoorbeeld aan het ontwerp van classes. Het is wat mij betreft dan ook een fundamenteel concept binnen de informatica, het is zeker niet alleen van toepassing op HTML.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je quote precies het goede deel... maar dat is hier niet aan de orde :)

TS wilt wel scheiding tussen z'n applicatie- en presentatielaag en praat dus niet over semantiek binnen PHP :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

PrisonerOfPain schreef op maandag 19 februari 2007 @ 21:54:
Dit is natuurlijk niet helemaal waar in PHP kun je net zo goed spreken van semantiek, het word echter niet vaak gedaan.
Je kunt misschien wel over semantiek in PHP praten, maar dat is niet wat de TS hier bedoelt. Semantiek gaat over de betekenis van constructies in een taal. PHP heeft alleen semantiek t.o.v. de compiler/interpreter en een for-loop is een for-loop, of ie nou vies tussen allemaal HTML staat of netjes is geabstraheerd in een klasse.

De term semantiek wordt hier verkeerd gebruikt.
Pagina: 1