OOP-benadering voor websites: hoe?
Ik heb een website met een hoofdmenu, een zijmenu en de inhoud in het midden
Hoe moet ik hier OOP op gaan toepassen?
a) Moet ik elke pagina als 1 object benaderen?
b) Moet ik elk item van de website als 1 object benaderen? en deze objecten oproepen op de paginas?
Ik heb voorlopig voor methode B gekozen maar ik kom in situaties terecht dat methode A precies weer beter lijkt, maar als ik puur methode A gebruik, dan heb ik methode B weer nodig
Moet ik dan een mix maken? maar dan word het al een hele soep vind ik
Hopelijk kan iemand mij wat tips geven hoe ik dit nu eigenlijk moet aanpakken want ik zie door het bos de bomen niet meer, zoals ze dat zeggen
Gewijzigd op 01/01/1970 01:00:00 door UltimateWeapon
Er is geen manier van zo moet het in PHP, aangezien PHP zowel redelijk overweg kan met procedure als OO programmeren. Het is dus nu puur wat jijzelf handig vind. Dat is al helemaal het geval aangezien je niet voor anderen programmeert, maar voor jezelf. Dus doe wat jij handig vind.
Maar ik zou inderdaad voor beiden gaan. Een pagina bevat dan weer meerdere pagina-objecten. Ik weet dan weer niet precies wat je bedoelt met 'pagina' en 'pagina objecten'. Bedoel je de tekst & inhoud van de pagina, of dynamische elementen zoals polls, grafiekjes, gastenboeken, shoutboxen etc? Want die dynamische dingen lenen zich prima voor objecten. Tekst uiteraard niet, want wat zijn de voordelen die je behaalt door dat in een klasse te zetten...
Ik zou het heel simpel houden:
- In je database/tekstbestanden staan pagina's, iedere pagina een aparte regel/bestand/whatever
- Iedere pagina wordt gerepresenteerd door een object waarmee je de pagina kan weergeven/beïnvloeden.
- Je menu slikt een array van die objecten, en kan daarmee een menu genereren.
- Je pagina's bestaan uit objecten, namelijk 'elementen' om ze zo maar even te noemen. Dezen bevatten de dynamische onderdelen en de tekst-elementen die weer apart in je database staan. Zo kan je dezelfde tekst of elementen terug laten komen op meerdere pagina's, omdat ze als het ware los van de pagina staan.
- Je menu is ook zo'n element, net als je gastenboek en je bezoekersteller.
Maar nu zit in de knoop met 1 ding: Je maakt een webpagina? In de zin van een statisch ding met info erop die af en toe vernieuwd wordt? Want in dat geval ben je helaas niet handig bezig. PHP uberhaupt is eigenlijk alleen handig voor dynamische pagina's. Dingen die veranderd moeten worden zonder een ftp-programma te openen. In het geval van een standaard website is dus eigenlijk alleen het CMS geschreven in PHP. De website zelf staat gewoon in losse onderdelen in de database. Dus wat maak je nu? Een CMS of een webpagina?
eerst dus een webpagina maar zoveel mogelijk met objecten (achteraf zet ik hier nog een CMS op )
ik ben nu voorlopig als volgt bezig:
op bijvoorbeeld de pagina voertuigen.php zet ik:
$objPage = new Pagevoertuigen();
Layout::showCompletePage($objPage);
waarbij de klasse Pagevoertuigen gevuld is met:
var $objVoertuig;
var $objSubmenu;
function Pagevoertuigen;
function ToonInhoud();
function ToonVoertuig();
function ToonStart(); ( = als er geen voertuig geselecteerd is )
function ToonSubmenu();
als ik nog dieper ga namelijk bij $objVoertuig en $objSubmenu dan kom ik in serieuzere objecten terecht met hun properties, bij een voertuig is dat (merk, jaar, tankinhoud, pomp) waar ik dan later functies als edit() en add() wil gaan toevoegen vor het CMS
het is mijn allereerste website waar ik OOP bij gebruik dus het is echt zoeken maar ik hoop dat ik al dichter begin te komen bij goede code :-)
Gewijzigd op 01/01/1970 01:00:00 door UltimateWeapon
[1] er is een aparte file met printpage(); hier worden de pagina's gerpint, de mysql connectie gemaakt, en alle afhandelingen.
[2] De xxx.php waarin een array staat met de mogelijke functies voor xxx.php?action=... met een referentie naar de functies.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
$acties = array();
$acties['def'] =& start();
$acties['add'] =& add();
$acties['del'] =& del();
$acties['start'] =& start();
printpage();
function start {
$hello = "Hello world";
$returnarray = array();
$returnarray (
inhoud => $hello,
titel => "Hello word",
login => 1,
css => "test.css"
);
return $returnarra;
}
//etc.
?>
$acties = array();
$acties['def'] =& start();
$acties['add'] =& add();
$acties['del'] =& del();
$acties['start'] =& start();
printpage();
function start {
$hello = "Hello world";
$returnarray = array();
$returnarray (
inhoud => $hello,
titel => "Hello word",
login => 1,
css => "test.css"
);
return $returnarra;
}
//etc.
?>
[3] printpage roept de pagina op die van belang is aan de hand van $_GET['action'] variabele, en voert de functie uit die nodig is. De functie returned de inhoud, printpage bouwt de pagina voor de rest op (bijvoorbeeld de zijbalken, trackers, etcetera.) En houd ook dingen als sessies bij. Practisch alles wat voor elke pagina het zelfde is wordt door printpage