Hallo,

Ik vraag me iets af. Ik heb functies waarbij je 1 "foo" wilt instellen en functies waarbij je meerdere "foos" wilt instellen. Bijv.

setPath($id, $path) // om 1 path in te stellen
setPaths($paths) // om meerdere paths in te stellen ($paths is een array)

Nu vraag ik me af of dat een goede gewoonte is. Ik gebruik 2 functies met bijna dezelfde functionaliteit, alleen in de ene situatie set je dus 1 foo, en in de andere situatie meerdere foos. Ik doe het op deze manier omdat ik denk dat dat efficiënt is. Je roept immers meteen de juiste functie aan.

Ik zou er ook voor kunnen kiezen om alles in 1 method te stoppen en dan op basis van het meegegeven argument te bepalen of er 1 foo moet worden geset of meerdere foos.

Dit komt bij mij best vaak voor. Zo heb ik nu in mijn mail class bijv. deze methods:

setBcc
setBccs
setCc
setCcs
setTo
setTos

Allemaal dubbele functies dus. Is dat wel of niet wenselijk? Het voordeel vind ik dat een functie altijd het juiste argument ontvangt en er dus geen extra controle hoeft plaats te vinden (betere performance). Het nadeel is dat je dus dubbele functies krijgt.

Graag jullie advies.
@Ozzie
Mij zal je niet horen zeggen dat het verkeerd is! Dus in principe is het helemaal correct wat je zou doen. Alleen heb ik er toch mijn vragen bij, want er moet toch iets gecontroleerd worden.

Waarom geen e-mailadres object? Het zou wel gemakkelijk zijn als je dan wanneer addBcc() gebruikt wordt even snel Emailadress::isValid() aanroept. Je kunt natuurlijk gewoon filter_var() gebruiken. Maar goed, dit is al terug persoonlijke keuze natuurlijk!

Daarnaast is het misschien ook handig om te kijken of het e-mailadres als eens is toegevoegd. Als zou dit niet nodig moeten zijn.

Alsnog zou ik gebruik maken van addBcc() om toch minstens het opgegeven e-mailadres te verifiëren. Als zou je ook dit terug in de foreach loop kunnen doen. Maar dat zou ik weer niet doen.

Het is dus denk ik voornamelijk een persoonlijke keuze. Nogmaals, zelf zou ik er niets aan veranderen mocht je alleen addBccs() gebruiken.
Ik snap je punt MayDay. Echter, ik heb besloten om mijn e-mailadressen te valideren VOORDAT ik ze aan de e-mail class doorgeef. Ik zal je uitleggen waarom.

Stel ik wil dat er in een bepaalde situatie een e-mail naar mijzelf wordt verstuurd. Het e-mailadres haal ik dan op uit een configuratiebestand. Dit e-mailadres klopt, want ik heb het zelf ingevoerd. Het is dan onnodig om het in de e-mail class nogmaals te controleren.

Op het moment dat een bezoeker zijn e-mailadres moet invullen, controleer ik het direct na het versturen van het formulier. Pas als het e-mail adres correct is, sla ik het op in de database. Op het moment dat er dan iets naar dat e-mail adres moet worden verstuurd weet ik al dat het adres correct is. Het is dan niet nodig om het nogmaals te controleren. Anders gezegd. Ik zorg ervoor dat ieder e-mailadres dat naar de mail class wordt gestuurd vantevoren al is gecontroleerd.
Dat doe ik meestal ook. Alsnog zou ik nogmaals kijken. Ik weet dat snelheid heel belangrijk is voor jou, maar neem nu aan dat iemand anders ooit de Mail class zal gebruiken... en gewoon zomaar e-mailadressen toevoegt die niet eens een e-mailadres zijn.

Voor mij mag dit ook. Maar ik controleer meestal teveel.

Nogmaals, ik zou beide goedkeuren als OO PHP. Want tenslotte geeft PHP je de tools om beide te implementeren en in jouw geval zou ik dus ook gewoon alleen voor addBccs() gaan (met typecasten).
Oké, thanks MayDay! Ik zal (voorlopig en misschien wel altijd) de enige zijn die mijn code gebruikt, dus wat dat betreft kan ik er wel mee wegkomen ;-)

Bedankt voor je bijdrage!

Reageren