[PHP] Advies over class nodig

Pagina: 1
Acties:

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Beste mensen, ik ben voor mijn stage bezig met het ontwikkelen van een informatiesysteem die het productieproces gaat ondersteunen, maar nu zegt mijn gevoel dat ik dat niet op de juiste manier doe.

Ik heb de volgende class:
Afbeeldingslocatie: http://www.rajh.nl/got/class.UserController.gif
class.UserController.phps

Daar heb ik de volgende vragen over:
Hebben jullie nog opmerkingen of tips over hoe ik bepaalde dingen afhandel?
Is het normaal gesproken de bedoeling dat ik alle data in- en uitvoer via set en get functies afhandel?
Kan ik de class beter opsplitsen in losse login/logout/adduser classes?

Alvast bedankt :)

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Als ik de manier vat waarop je een controller wilt gebruiken, namelijk dat hij als doorgeef luik dient voor de userinterface naar je business/domain layer, dan vraag ik me toch af waar je domain objecten dan zijn? Ik zou username, password etc. eerder in een class User verwachten. Verder zou je voor het bijhouden van de huidige user een class UserSession kunnen maken, welke dan een referentie heeft naar de huidige user en eventueel mogelijkheden biedt om in te loggen. Verder kun je methodes voor het beheren van users het beste overlaten aan een class welke controle heeft over (welke een collectie bevat van alle) users.

Noushka's Magnificent Dream | Unity


  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Michali schreef op donderdag 23 maart 2006 @ 11:14:
Als ik de manier vat waarop je een controller wilt gebruiken, namelijk dat hij als doorgeef luik dient voor de userinterface naar je business/domain layer, dan vraag ik me toch af waar je domain objecten dan zijn? Ik zou username, password etc. eerder in een class User verwachten. Verder zou je voor het bijhouden van de huidige user een class UserSession kunnen maken, welke dan een referentie heeft naar de huidige user en eventueel mogelijkheden biedt om in te loggen. Verder kun je methodes voor het beheren van users het beste overlaten aan een class welke controle heeft over (welke een collectie bevat van alle) users.
Ik ben nog niet al te lang bezig met PHP (ook heb ik niet echt een goede kennis van OOP). Ik maak op dit moment (nog) geen gebruik van MCV, dus de naam controller is een beetje verkeerd gekozen denk ik. Wat bedoel je precies met business/domain layer? Bedoel je daar alle dingen uit het domein mee, zoals gebruikers, producten, enz?

Als ik het goed begrijp is het volgens jou dus beter om de class op te splitsen in classes met bepaalde functionaliteit zoals beheer van users, inloggen, uitloggen?

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Klopt ja. Je moet een class echt 1 duidelijke taak geven. Dat wil overigens niet zeggen dat een class maar 1 method heeft, maar alle methods moeten wel gerelateerd zijn in enig opzicht. Je kunt een class dus het beheer over de gebruikers (add, edit, remove etc.) als taak geven, maar hij kan dan zelf geen gebruiker zijn, dat is weer iets anders. De sessie van de huidige gebruiker (en het beheer daarover) is in mijn ogen ook een aparte taak, dus ook een aparte class.

De domain (domein dus) is idd alle objecten in het domein. Dus de weerspiegeling van concepten in het domein waar je in werkt.

Noushka's Magnificent Dream | Unity


  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Bedankt voor je uitleg. Ik ga de class maar weer eens herschrijven dan :Y)

  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Michali schreef op donderdag 23 maart 2006 @ 13:07:
De domain (domein dus) is idd alle objecten in het domein. Dus de weerspiegeling van concepten in het domein waar je in werkt.
Daar even kort op voortbordurend, het wil dus zeggen dat in je domeinklassen geen logica mag staan uit lagen die er boven liggen. Dat is dus de weblaag en soms nog één of meerdere lagen.
Inloggen valt naar mijn idee onder code die niet in je domeinklassen thuishoort, maar eigenlijk in de servicelaag, die een beetje tussen weblaag en domeinlaag valt. Maar goed, dan heb je al vier lagen en misschien is dat voor je project te veel van het goede. :)

Om een makkelijkere tussenoplossing te noemen; maak een aparte klasse waarin de huidige sessie en daarbij horende inlogzaken worden bijgehouden/afgehandeld. Die stopt gegevens in een domeinklasse en haalt gegevens uit je controllerklasse. Dan heb je de verantwoordelijkheden toch redelijk netjes gescheiden, zonder complexe lagenmodellen.

Fat Pizza's pizza, they are big and they are cheezy


  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Ik heb op dit moment een UserSession en een UserLogger class. De UserSession class zorgt voor de login/logout functies en maakt gebruik van de log functie uit de UserLogger class. Ik ben op dit moment thuis en heb de nieuwe class diagrams niet bij de hand, anders had ik het visueel kunnen laten zien. :)

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Klinkt goed. Als het voor jou gevoel ook logisch klopt zo dan hoef je niet verder op te delen. Lijkt mij ook niet echt nodig.

Noushka's Magnificent Dream | Unity

Pagina: 1