[php] bruikbaar OOP voorbeeld gevraagd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ErikNijland
  • Registratie: Oktober 2005
  • Laatst online: 20-07 13:13
Hallo ik maak websites. En Ik wil graag object georienteerd leren programmeren in PHP. Ik heb inmiddels tientallen tutorials gevolgd en ik begrijp de stof allemaal zonder enige problemen.

Twee vragen:
vraag 1: Stel je weet 100% zeker alleen maar gebruik te zullen gaan maken van MySQL. Is het dan nodig een database class te maken? (60% van de tutorials neemt dit als voorbeeld)

vraag 2: Mijn andere vraag is een stuk lastiger. Alle OOP tutorials gebruiken voorbeelden als personen, producten (in een winkelmandje), wiskundige voorbeelden etc. Ik wil geen personen of producten ik wil XHTML pagina's maken met OOP.

Stel ik wil de volgende site maken:

er is een menustructuur met 2 niveau's
elke pagina heeft een titel en meta_description
elke pagina heeft optioneel kopjes (h1 t/m h6)
elke pagina heeft optioneel paragrafen
elke pagina heeft optioneel plaatjes

De laatste 3 in willekeurige volgorde.

Kan iemand mij uitleggen hoe ik dit aanpak met OOP? Ik heb echt geen flauw idee :-/.

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
ErikNijland schreef op zaterdag 08 oktober 2005 @ 17:20:
vraag 1: Stel je weet 100% zeker alleen maar gebruik te zullen gaan maken van MySQL. Is het dan nodig een database class te maken? (60% van de tutorials neemt dit als voorbeeld)
Een database abstractie laag is in dat geval niet al te hard nodig, nee. Maargoed, een data toegangs laag is weer een heel ander verhaal.

Acties:
  • 0 Henk 'm!

  • vogeltje
  • Registratie: December 2001
  • Laatst online: 10-08 19:30
ErikNijland schreef op zaterdag 08 oktober 2005 @ 17:20:
er is een menustructuur met 2 niveau's
elke pagina heeft een titel en meta_description
elke pagina heeft optioneel kopjes (h1 t/m h6)
elke pagina heeft optioneel paragrafen
elke pagina heeft optioneel plaatjes
daar heb je al een kandidaat voor een 'object' met eigenschappen als "titel" en "meta_description".

Het is trouwens ook maar net wat jij allemaal wilt met een 'pagina', om het een 'waardevol' object te maken.

[ Voor 26% gewijzigd door vogeltje op 08-10-2005 17:35 ]

binnenkort een hele dikke casemod :P


Acties:
  • 0 Henk 'm!

  • ErikNijland
  • Registratie: Oktober 2005
  • Laatst online: 20-07 13:13
PrisonerOfPain schreef op zaterdag 08 oktober 2005 @ 17:28:
[...]

Een database abstractie laag is in dat geval niet al te hard nodig, nee. Maargoed, een data toegangs laag is weer een heel ander verhaal.
Doel je nu op een 3-tier architecture? Daar heb ik laatst ook al het een en ander over gelezen (http://www.tonymarston.net/php-mysql/infrastructure.html), in theorie klinkt het allemaal zo logisch. Ik heb dan ook geprobeerd een begin te maken. Maar kwam al snel tot de conclusie dat ik een stapje terug moest doen. Vandaar ook mijn tweede vraag

Acties:
  • 0 Henk 'm!

  • ErikNijland
  • Registratie: Oktober 2005
  • Laatst online: 20-07 13:13
vogeltje schreef op zaterdag 08 oktober 2005 @ 17:30:
[...]


daar heb je al een kandidaat voor een 'object' met eigenschappen als "titel" en "meta_description". Optionele eigenschappen zijn "kopjes", etc.

Het is trouwens ook maar net wat jij allemaal wilt met een 'pagina', om het een 'waardevol' object te maken.
Goed dat pagina een class zou worden had ik kunnen begrijpen. Maar jij ziet kopjes, paragrafen en afbeeldingen als eigenschappen van die class? Hoe zie je dit voor je? In een array?

Is een kopje dan geen class? Met bijvoorbeeld de eigenschappen id en class (class uit XHTML, niet PHP). En voor paragraaf het zelfde?

Plaatjes zijn weer uitgebreider, id, alt, src, longdesc. Is dit dan geen class?

En hoe zit het met de navigatiestructuur? Nu achterhaal ik de huidige pagina bovenaan een index.php met $_GET["hoofd_id"] en/of $_GET["sub"]. Moet er een identificatie class komen? Zodat de pagina weet welke data uit de database bij de pagina hoort?

Allemaal vragen.. ik heb echt geen idee wat de oplossing is.

[ Voor 6% gewijzigd door ErikNijland op 08-10-2005 17:40 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:45
ErikNijland schreef op zaterdag 08 oktober 2005 @ 17:20:
Hallo ik maak websites. En Ik wil graag object georienteerd leren programmeren in PHP. Ik heb inmiddels tientallen tutorials gevolgd en ik begrijp de stof allemaal zonder enige problemen.

Twee vragen:
vraag 1: Stel je weet 100% zeker alleen maar gebruik te zullen gaan maken van MySQL. Is het dan nodig een database class te maken? (60% van de tutorials neemt dit als voorbeeld)
Het is onnodig om complexiteit toe te voegen als je toch vrijwel zeker weet, dat die uitbreidbaarheid die deze biedt, toch niet zal gebruikt worden.
Wat je wel kunt doen, is een set classes maken waarmee je je DB toegang kunt verzorgen. Als je nu vooral in MySQL werkt, zorg dan dat je een aantal abstracte classes / interfaces hebt, die beschrijven wat je kunt doen (het contract), en die wat 'gemeenschappelijke' functionaliteit bieden.
Op basis daarvan kan je dan je concrete MySQL DB class set maken.
Als je later eens een site moet maken die met een SQL Server DB moet communiceren bv, dan pak je je interfaces en base classes, en maak je ook een implementatie voor SQL Server.
Het voordeel hiervan is, dat je op dit moment enkel maakt wat je nu nodig hebt, en je, indien nodig, later altijd functionaliteit kunt bijschrijven wanneer dat nodig is
Zorg er ook voor dat je in je applicatie zelf tegen deze interfaces en abstracte classes 'praat', zodanig dat je applicatie zelf niet hoeft te weten of het nu om een MySQL of SQl Server DB gaat.
vraag 2: Mijn andere vraag is een stuk lastiger. Alle OOP tutorials gebruiken voorbeelden als personen, producten (in een winkelmandje), wiskundige voorbeelden etc. Ik wil geen personen of producten ik wil XHTML pagina's maken met OOP.
Tja, je wilt Xhtml pagina's maken, maar die pagina's tonen wel iets toch ? En mbhv die pagina's kan je toch data gaan bewerken ?
Maak een OO model van je domein, that is, de data waar het 'm echt om gaat.
Stel ik wil de volgende site maken:

er is een menustructuur met 2 niveau's
elke pagina heeft een titel en meta_description
elke pagina heeft optioneel kopjes (h1 t/m h6)
elke pagina heeft optioneel paragrafen
elke pagina heeft optioneel plaatjes
Hier bestaat je domein dus uit pagina's, menu's plaatjes, teksten.
ErikNijland schreef op zaterdag 08 oktober 2005 @ 17:39:
[...]


Goed dat pagina een class zou worden had ik kunnen begrijpen. Maar jij ziet kopjes, paragrafen en afbeeldingen als eigenschappen van die class? Hoe zie je dit voor je? In een array?
Een pagina heeft bv een collectie van afbeeldingen (objecten v/d instance 'Afbeelding'), een collectie van teksten (objecten v/d instance 'Tekst').

[ Voor 9% gewijzigd door whoami op 08-10-2005 19:21 ]

https://fgheysels.github.io/

Pagina: 1