Door
Xaboteur X
op 16-10-2012 17:04
gewijzigd op 16-10-2012 18:42
4.641 views
Hallo,
Ik heb een tijdje terug een beheersysteem gemaakt in procedural PHP code.
Nu zou ik dit graag willen omzetten in OO code, aangezien ik het systeem voor meerdere gebruikers wil opzetten, en dus ook toekomstgericht een ordelijk systeem wil hebben.
Ik ben nog niet zo lang bezig met het leren van OOP, maar ik ken wel de basisprincipes.
Wat ik nu wel al zeker weet, is dat het niet makkelijk is om een bepaalde blueprint te schetsen van de nodige classes en methods.
Ik heb veel moeite met het afwegen of ik van iets een class moet maken, of een method in een meer algemene class.
Een voorbeeld hiervan: inloggen.
Kan ik hier best een Login {} class (en file) van maken?
Of zou ik beter een User {} class maken, met een method login() {} ?
In mijn systeem werk ik voornamelijk met tabellen die gegevens bevatten.
Dit vind ik makkelijker om te plaatsen, namelijk een aparte class Table {}, met bijhorende methods.
Het is voor mijn systeem dan ook belangrijk dat ik voor elke User verschillende resultaten kan genereren, maar dat spreekt voor zich.
Kan ik hieruit afleiden dat class User {} één van mijn voornaamste classes gaat zijn?
Eerst een topic waarin Write Down een paar maanden geleden aan hetzelfde grote project begon als hij, daarin heb ik al enorm veel uitgelegd en geef ik ook een best wel uitgebreid voorbeeld die je kan downloaden. Zie dat topic hier: http://www.phphulp.nl/php/forum/topic/ontwerpen-usermanagement/85413/ (zie ook de andere OO topics van Write Down)
Ik gebruik veel datamappers om de User te koppelen aan een Database en andersom. Deze datamapper geef ik dan ook een functie login en logout mee, onder de noemer KISS (Keep It Simple Stupid). Dit is ong. gelijk aan de User_Store klasse van Jelmer.
@- Aar -: Bedankt voor de zeer duidelijke tutorial, heb em helemaal gelezen.
Ik ga zelf nog wat experimenteren..
@Wouter: In dat topic heb je inderdaad zeer veel uitgelegd (wat ik zeker kan gebruiken!), maar voor nu was mijn probleem eigenlijk alleen "het geheel in classes zien".
Voor het gebruik bijvoorbeeld:
<?php
require_once('classes/database.class.php');
$db = new Database('host', 'dbname', 'username', 'password');
require_once('classes/login.class.php');
$login = new Login('?');
$login->checkRights(1);
require_once('classes/user.class.php');
$user = new User('?');
$username = $user->getName();
?>
Maar zoals ik al zei, ik ga eerst nog wat verder experimenteren.
Om hier nog even op terug te komen.. Ik heb mijn overzicht geschetst (zie afbeelding), maar ik moet dus telkens op iedere pagina, voor iedere user, een controle doen op mijn mysql server. En de opgeslagen inhoud op iedere pagina, van iedere user, ophalen op ieder hun server.
Ik zit dus op iedere pagina met twee database connecties (lees server connecties).
Aangezien ik alle users op één plek wil kunnen beheren, lijkt het me niet mogelijk om dit anders te doen, toch?