Hulp bij structureren project: validatie en normalisatie
Ik heb dus een abstracte Persoon class gemaakt en die ge-extend naar een concrete Vrijwilliger en Muzikant class. Ik heb een Singleton voor de database connectie en een class met database queries om de verschillende objecten in de database op te kunnen slaan. Tot zo ver geen probleem.
Verder wil ik het Front Controller pattern gebruiken, dus door middel van een htaccess file alle URLs redirecten naar 1 php file en die file dan laten bepalen welke actie er uitgevoerd moet worden.
Waar ik niet uitkom is het volgende:
In de actie waarbij er een formulier verzonden is om een nieuwe Vrijwilliger/Muzikant toe te voegen, waar laat ik de validatie en normalisatie van de ingevulde gegevens uit het formulier?
Moet ik een apart object maken dat ik de $_POST en $_FILES arrays doorgeef en dat dan een Vrijwilliger/Muzikant object teruggeeft?
Of geef ik de $_POST en $_FILES arrays door aan de constructor van een Vrijwilliger/Muzikant object en laat ik dat dan de validatie en normalisatie doen? De foto in de $_FILES array moet echter gevalideerd worden en daarna opgeslagen op een andere locatie en het lijkt me gewoon niet logisch dat dat allemaal in een Vrijwilliger/Muzikant object gebeurt?
Wat is de beste aanpak hiervoor?
Het komt nu een beetje over dat je een klus hebt, en je hebt je voorgenomen dit met specifiek gereedschap en met een bepaalde werkwijze op te lossen. Nu loop je vast in je aanpak / met je gereedschap.
Mijn eerste ingeving zou dan zijn om het gereedschap te veranderen en/of te vereenvoudigen.
Dat gezegd hebbende: zijn formulieren en formulier-elementen ook klassen/objecten? Het lijkt mij pas zinnig om informatie over de schutting te gooien (naar wat voor afgeleide van de Persoon-klasse dan ook) nadat je hebt vastgesteld dat je invoer volledig en kloppend is.
creational patterns. Misschien is een factory of builder de eerste bouwsteen die je mist.
Daarnaast lijk je nog andere abstracties te missen, zoals Thomas ook al aankaart, want je zou $_GET en $_POST eigenlijk nooit rechtstreeks moeten gebruiken. Daarvoor bouw je bijvoorbeeld een eenvoudig Request-object of een uitgebreider stelsel van klassen voor HTTP-messaging.
Voor object creation gebruik je in objectgeoriënteerd programmeren Daarnaast lijk je nog andere abstracties te missen, zoals Thomas ook al aankaart, want je zou $_GET en $_POST eigenlijk nooit rechtstreeks moeten gebruiken. Daarvoor bouw je bijvoorbeeld een eenvoudig Request-object of een uitgebreider stelsel van klassen voor HTTP-messaging.
Thomas van den Heuvel op 17/03/2017 01:37:02:
Is het voorgeschreven hoe dit opgelost zou moeten worden? Is het belangrijk hoe het opgelost wordt of dat het opgelost wordt?
Het komt nu een beetje over dat je een klus hebt, en je hebt je voorgenomen dit met specifiek gereedschap en met een bepaalde werkwijze op te lossen. Nu loop je vast in je aanpak / met je gereedschap.
Mijn eerste ingeving zou dan zijn om het gereedschap te veranderen en/of te vereenvoudigen.
Dat gezegd hebbende: zijn formulieren en formulier-elementen ook klassen/objecten? Het lijkt mij pas zinnig om informatie over de schutting te gooien (naar wat voor afgeleide van de Persoon-klasse dan ook) nadat je hebt vastgesteld dat je invoer volledig en kloppend is.
Het komt nu een beetje over dat je een klus hebt, en je hebt je voorgenomen dit met specifiek gereedschap en met een bepaalde werkwijze op te lossen. Nu loop je vast in je aanpak / met je gereedschap.
Mijn eerste ingeving zou dan zijn om het gereedschap te veranderen en/of te vereenvoudigen.
Dat gezegd hebbende: zijn formulieren en formulier-elementen ook klassen/objecten? Het lijkt mij pas zinnig om informatie over de schutting te gooien (naar wat voor afgeleide van de Persoon-klasse dan ook) nadat je hebt vastgesteld dat je invoer volledig en kloppend is.
Er is niet voorgeschreven hoe ik dit moet oplossen, dat mag ik zelf uitzoeken. Ik dacht dat ik op de juiste weg zat met de objecten die ik tot nu toe bedacht had, maar misschien ook niet.
Hoe zou jij dit project aanpakken? Welke objecten zou jij gebruiken en hoe werken die met elkaar samen?
De invulling van de objecten lukt me zelf wel, maar ik mis het grote plaatje: hoe structureer ik dit project?
Topicstarter op 16/03/2017 14:58:23:
Ik heb dus een abstracte Persoon class gemaakt en die ge-extend naar een concrete Vrijwilliger en Muzikant class. Ik heb een Singleton voor de database connectie en een class met database queries om de verschillende objecten in de database op te kunnen slaan. Tot zo ver geen probleem.
- abstract class AbstractPersoon
- class Vrijwilliger extends AbstractPersoon
- class Muzikant extends AbstractPersoon
- interface SingletonInterface
- class Database extends PDO implements SingletonInterface
Dat is alvast een goed begin, maar waarom één klasse met alle queries? Je mist daar een data mapper of data access object (DAO).
Als je één index.php als de front controller wilt gebruiken, heb je nog klassen nodig voor de routing naar andere controllers. De front controller moet daarmee taken aan specifieke controllers delegeren.
Gewijzigd op 13/09/2017 10:08:55 door - Ariën -
Ik denk dat ik dan een Form object maak dat die functie heeft, want dat vind ik duidelijker qua naam. Dus 1 abstracte Form class en 2 extends voor de 2 formulieren die ik heb (VrijwilligerForm en MuzikantForm). Die objecten kunnen dan controleren of de $_POST array voor hun formulier klopt en de foto uit de $_FILES array valideren en verplaatsen.
En dan doe ik de overige validatie en normalisatie in de Persoon/Muzikant/Vrijwilliger klassen want dat lijkt me daarvoor de meeste logische plaats.
Is dat een goede opzet?
Een 'fysiek' <form> is natuurlijk iets anders dan de formulierdata die je daarmee vervolgens verwerkt. Als je een Request-object daarvoor te algemeen vindt, zou je bijvoorbeeld een Form-object naast een FormProcessor-object kunnen gebruiken. Dan is ook meteen duidelijk waar die validaties in horen.
0de nv: kaartnum, datum reg, fam naam, voornaam, nationaliteit, ID/pp num, adres, geslacht, beroep, geb.dat, bloedgroep, allergie, chronische Ziekten, medicijnen, verzekerd, verz.maatschapij, verz.num, verval.datum, RG(datum, klacht, behandeling)
door te verwerken tot de 3e NV maar ik begrijp het helemaal niet...kan iemand mij aub helpen.
alvast bedankt.
Dan raad ik aan een nieuwe topic te starten, en geen oud topic omhoog te halen. Dit leidt tot verwarring bij mensen die hier reageren. Dit topic zal ik nu sluiten.