[oop] setFoo en/of setFoos?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Back-end Developer

Functie omschrijving Als Back-end Developer heb je de eer om als eerste interne developer bij deze organisatie te beginnen. Op dit moment zijn er externe developers, maar daar wil de organisatie verandering in brengen. Op termijn moet de gehele afdeling uit intern personeel bestaan. Je kan je voorstellen dat de eerste interne developer ook de nodige kennis mee moet brengen. Dat klopt. Je gaat je namelijk aan het begin bekommeren over de externe developers en uiteindelijk over je interne collega's. Verder ga je het volgende doen: Het bedenken, beheren en onderhouden van webportalen, API-koppelingen en applicaties; Je bedenkt en werkt

Bekijk vacature »

Teamlead PHP Developer

Functieomschrijving Voor een gewaardeerde werkgever in de buurt van Middelburg zijn wij op zoek naar een gemotiveerde teamlead PHP developer met affiniteit met Symfony/Laravel. Een enthousiast persoon die het ontwikkelteam komt versterken met het aanpakken van uitdagende projecten. Ben jij op zoek naar een uitdaging waar je de tijd en ruimte krijgt jezelf te ontwikkelen en je eigen IT-team aan te sturen? Lees dan snel verder! Die ga je doen: Bijdragen aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de PHP based applicaties; Ontwikkeling en beheer van de serviceportal in Symfony en de webshops in de tweede versie van

Bekijk vacature »

SQL Developer

Functie omschrijving We are looking for a dutch native speaker Jij gaat in deze functie aan de slag met uitdagende projecten en het creëren van maatwerk software, vooral middels SQL. Iedere klant/project is weer anders, maar dat maakt dit bedrijf en de functie erg uniek & uitdagend. Verder heb je de volgende taken: Ontwikkelen en ontwerpen van SQL databases. T-SQL wordt hierbij gebruikt als programmeer laag; Optimalisatie van query's, voor een verbeterde efficiency; Begeleiden van junior developers, mits je dit leuk vindt; Heb je meer interesse in een rol als consultant, dan is dit ook mogelijk. Je heb hier meer

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar start jij in één van onze vier scrumteams. Met 30 ontwikkelaars werk jij aan de doorontwikkeling van ons core product. Ook werkt jouw team aan maatwerkoplossingen op aanvraag van de klant en op projectbasis. Wij vinden het erg belangrijk dat onze ontwikkelaars met plezier naar werk gaan. Een deel hiervan ligt uiteraard bij jezelf, als jij ontwikkelen niet leuk vindt, ben jij bij ons echt aan het verkeerde adres. Jouw team bestaat namelijk uit een groep gepassioneerde vakidioten die dit werk doen omdat dit eerst een hobby was! Daarnaast wordt er intern rekening gehouden met

Bekijk vacature »

Back-end developer (Magento2)

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

Ontwikkelaar Identity & Access Management

Dit ga je doen Als Identity & Access Management Ontwikkelaar zorg jij er voor dat studenten, medewerkers en docenten de juiste benodigdheden op het juiste moment kunnen gebruiken; Het juist opslaan van onderzoeksdata en het openbaar beschikbaar stellen van publicaties (Open Access); Studenten, collega's en wetenschappers ondersteunen; Agile en Scrum werken; Technisch Applicatiebeheer; Ontwikkelen in One Identity Manager en VB.NET. Hier ga je werken Als Ontwikkelaar kom je terecht in een hecht team die zich richt op wetenschappelijke informatie en ICT. Jij bent degene die er voor zorgt dat alle informatie, uit diverse onderzoeken, bij de juiste personen terecht komt.

Bekijk vacature »

Software Developer / .NET / Azure

Dit ga je doen Als Lead .NET Software Developer zal je je bezig houden met: Het vertalen van bedrijfswensen naar een technische roadmap; Uitwerken van nieuwe architectuur / designs; Het team aansturen en motiveren; Toezien op de kwaliteit van de code; Mee ontwikkelen van nieuwe features en applicaties. Hier ga je werken Deze organisatie is op dit momenteel marktleider in het ontwikkelen van productielijnen voor de voedselindustrie en heeft een wereldwijd klantnetwerk. Binnen deze organisatie is het team van software developers dagelijks bezig met het ontwikkelen van maatwerk oplossingen om alle productiemachines aan te sturen, maar ook bedrijf kritische applicaties

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Ridderkerk zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met

Bekijk vacature »

Back end developer Onderwijssoftware

Functie Als back end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van hoogwaardige

Bekijk vacature »

Java/Kotlin Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Software programmeur

Functieomschrijving Voor een uitdagende werkgever in regio Breda zijn wij op zoek naar een Full Stack C#.NET programmeur. Je bent verantwoordelijk voor het ontwikkelen van apps, webapplicaties en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines te scannen en vervolgens de data om te zetten in management informatie voor de klanten. Taken en verantwoordelijkheden: Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks, HTML, TypeScript, SQL & C++, CSS. Geen ervaring met één van deze technologieën is dan ook geen enkel probleem! Deze werkgever biedt

Bekijk vacature »

Frontend Developer - Leeuwarden

Als Frontend Developer bouw jij mee aan het onderwijs van de toekomst! In een scrum team werken met jonge en enthousiaste collega’s, moderne technieken, ruimte voor eigen ontwikkeling en op een proactieve wijze kunnen meewerken aan innovatie binnen het onderwijs. Magister is het state-of-the-art softwarepakket dat scholen in het voortgezet onderwijs op alle fronten ontzorgt. Van leerlingenadministratie tot het ondersteunen van individuele leerlijnen, van toegang tot digitaal lesmateriaal tot het plannen van het lesrooster. In de Magister app bedient Magister ruim 2,5 miljoen gebruikers waarvan, dagelijks meer dan 600.000 unieke. Hiermee is Magister de absolute marktleider in onderwijsland. Wat vragen

Bekijk vacature »

C++ Ontwikkelaar

Functieomschrijving Ben jij als software ontwikkelaar toe aan een nieuwe uitdaging? Dan zoeken wij jou! Voor het maken van de procesbesturingssoftware gebruiken onze projectteams een in C++ en C# geschreven tool. Dit is een gedistribueerd object framework wat alle kernfuncties biedt voor een procesautomatisering. Verder zullen jouw werkzaamheden o.a. bestaan uit: Ontwerpen, programmeren en testen van product aanpassingen; Analyseren van vragen en wensen van gebruikers en deze vertalen naar een functioneel ontwerp; Inzichtelijk maken van voortgang omtrent softwarewerkzaamheden, o.a. door middel van SCRUM; Continu toetsen van het effect van nieuwe releases op andere tools en processen; Implementeren van nieuwe product

Bekijk vacature »

PHP Developer

Dit ga je doen Ontwikkelen, implementeren en testen van PHP-oplossingen en Apps voor klanten en bedrijfsprocessen; Opstellen van requirements en uitwerken van de oplossingen; Testen van software en borgen van een soepele overdracht, inclusief documentatie; Proactief adviseren vanuit eigen expertisegebied over ontwikkelingen en verbeterpunten in technische toepassingen en processen binnen de organisatie. Hier ga je werken De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen

Bekijk vacature »

Pagina: « vorige 1 2 3 volgende »

Ozzie PHP

Ozzie PHP

06/07/2013 01:02:33
Quote Anchor link
Wouter J op 06/07/2013 00:46:43:
Begrijp de aanvallende toon in dit topic niet. Ozzie stelt een vraag, vervolgens kun je er op reageren. Hoor je dat? Je 'kun't reageren. Fijn he, zo'n forum! Niemand ziet wat je leest en niemand verplicht je om ook maar ergens op te reageren.

Wouter, dankjewel voor deze reactie. Ik begrijp ook niet waar die agressieve houding van sommigen ineens vandaan komt. Precies wat jij zegt. Je hoeft niet te reageren. Ik vind het jammer dat sommige personen zo vreemd reageren. Ook personen waarvan je dat niet verwacht. Ik vraag me af of ze in het dagelijks leven ook zo zouden reageren in een face-to-face gesprek. Normen en waarden zijn op het internet soms ver te zoeken.

Maar goed, terugkomend op de vraag. Ik ga weer een poging wagen. Als het niet duidelijk is wat ik bedoel, zeg dan ook wat er niet duidelijk is zodat ik het kan proberen uit te leggen.

Oké, stel we hebben een class waarin data is opgeslagen in een class property $data. $data is dan een array met id/value paren, bijv. ['kleur' => 'rood', 'gewicht' => '35 gram', 'hoogte' => '10 cm'].

Stel ik wil 1 id verwijderen. In mijn class zou ik dan een functie maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

public function deleteValue($id) {
  // code om id/value paar te verwijderen
}

?>

Nu zou het ook zo kunnen zijn dat ik in 1x meerdere id's tegelijk wil verwijderen. Wat ik dan zou doen is zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

public function deleteValues($ids) {
  // code om id/value paren te verwijderen
}

?>

Zoals je ziet is dit bijna dezelfde method. De interne code verschilt wel enigszins, maar het doel van de methods is vrijwel hetzelfde. De ene method heet deleteValue en de andere heet deleteValues. De 1e method verwacht een string als argument en de 2e method verwacht een array als argument.

Nu is mijn vraag of dit de juiste aanpak is. Deze 2 methods lijken heel erg veel op elkaar. Is het dan gerechtvaardigd dat dit 2 afzonderlijke methods zijn, of zou dit eigenlijk in 1 method moeten? En dat je dan kijkt of het argument een string is of een array, en al naar gelang actie onderneemt.

Als je 2 methods gebruikt ben je gerichter bezig, maar het "kost" je wel een extra method. Als je alles via 1 method doet moet je daarentegen weer een extra controle uitvoeren, namelijk of het argument een string of een array is.

Is het zo een beetje duidelijk wat ik bedoel?
Gewijzigd op 06/07/2013 01:06:32 door Ozzie PHP
 
PHP hulp

PHP hulp

26/04/2024 19:39:20
 
-Jens -

-Jens -

06/07/2013 01:39:20
Quote Anchor link
Ik meen te snappen wat je bedoelt. In Java en andere 'echte' OO talen zou je gewoon twee dezelfde methoden maken met verschillend argument (override). In PHP zou ik het zo doen: je zit met een aantal waarden die je moet setten, stel n aantal waarden. Maak dan een array met n aantal items in, aangezien n ook 1 kan zijn, is het perfect mogelijk om met een array gewoon 1 waarde te setten. Als je dan met id/value paartjes zit, kan je twee dingen doen: of elk item in de hoofdarray bevat een tweetal (array) of je maakt in je hoofdarray de id als key en de value als waarde.

Was dit wat je ongeveer bedoelde?
 
Ozzie PHP

Ozzie PHP

06/07/2013 01:57:37
Quote Anchor link
Hoi Jens,

Ja dit is wat ik bedoel.

Ik heb nu in mijn mail class 2 methods om een Bcc adres toe te voegen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
setBcc($name, $address);
// deze voegt 1 persoon toe:
// $name = 'Jens', $address = '[email protected]'


setBccs($addresses);
// deze voegt meerdere personen toe:
// $addresses = [['name' => 'jens', 'address' => '[email protected]'], ['name' => 'ozzie', 'address' => '[email protected]']]

?>

Jij zou dan alleen setBccs gebruiken, en als je 1 persoon wilt toevoegen dan gewoon 1 array paar in de hoofdarray meegeven?
 
MayDay PHP

MayDay PHP

06/07/2013 18:51:42
Quote Anchor link
Je hebt dan dubbele functies. Maar soms moet je de addBcc() bijvoorbeeld nog altijd controleren (verifiëren i.v.m e-mailadres). Dus dan krijg je zoiets zoals de ClassLoader van Symfony (addPrefixes() & addPrefix()).

Dus dan is er eigenlijk geen verschil meer en is het dus gewoon gemakkelijker voor jou omdat je dan niet meer een foreach() moet gebruiken... want dat doet de functie dan al.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

class Mail {

    private $bcc    = array();

    public function addBccs(array $bccs) {
        foreach($bccs as $bcc)
            $this->addBcc($bcc);
    }


    public function addBcc(Emailadress $bcc) {
        // Verifiëren & toevoegen;
    }

}


?>
Gewijzigd op 06/07/2013 18:56:40 door MayDay PHP
 
Ozzie PHP

Ozzie PHP

06/07/2013 20:29:03
Quote Anchor link
De code van de functie maakt me niet zoveel uit. Het gaat mij vooral om het principe. In jouw voorbeeld heb je dus 2 addBcc(s) functies. Mijn vraag is of dat gebruikelijk is. Óf dat het gebruikelijker is om slechts 1 functie te hebben. Zie de opmerking van Jens hierboven. Dat is dus de vraag. Nu gaat het toevallig om bcc mail-adressen, maar het kan om vanalles gaan. Stel je hebt een product class. Is het dan gebruikelijk om zowel een addProperty en een addProperties method te hebben?
 
Reshad F

Reshad F

06/07/2013 22:03:27
Quote Anchor link
Zoals Jens het zei.. dat doe ik ook in Java dus 2 methodes hebben.

Alhoewel het kan op beide manieren. Je moet voor jezelf uitmaken welke je liever hebt aangezien je zelf met je eigen framework gaat werken en niet iemand anders.
 
Ozzie PHP

Ozzie PHP

06/07/2013 22:14:03
Quote Anchor link
Reshad, in dat laatste heb je helemaal gelijk.

Maar Jens zegt toch dat hij juist 1 methode zou gebruiken?

Stel dat je een e-mail class hebt, zou jij dan deze methodes gebruiken:

setBcc
setBccs
setCc
setCcs
setTo
setTos

of alleen deze?

setBcc
setCc
setTo
 
Reshad F

Reshad F

06/07/2013 22:34:49
Quote Anchor link
Wat Jens volgens mij bedoelt is..

Je kan in Java bijvoorbeeld niet zeggen ik maak 1 methode die een array krijgt OF een waarde. Dit omdat Java strikt is en vooraf wil weten wat hij ontvangen gaat. bij php kan je gewoon een parameter meegeven en dan in de methode bekijken wat het is en er iets mee doen. In java zou je dan krijgen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

public void setAddres( String[] address ) {
    // hier je methode uitwerken
}

public void setAddressen( String address ) {
    // hier je methode uitwerken
}
?>


zoals je in het voorbeeldje hierboven ziet kan je bij de eerste methode een array van strings meegeven en bij de 2e alleen een enkele.
Ik denk dat ook dit de reden is dat iedereen je aanraad om een set functie te hebben en een add functie ( althans dat zou mijn advies zijn omdat ik het zo bekijk en ik neem aan dat de rest het ook zo bedoelt in deze richting )

Zoals je zelf wel weet is PHP niet zo strikt en kan je gewoon zeggen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

public function setAddress($addressen) {
    // hier bekijken of het een array is ja/nee etc..
}

?>


Dus wil je het doen zoals in echte OO talen zou ik je aanraden om het eerste te doen. Wens je gebruik te maken van de lazy php voordelen dan kies je voor de tweede. En ook hierbij is mijn advies.. programmeer je in andere talen ook wees dan consequent en gebruik gewoon de eerste manier maar ik denk dat jij niet verder zal kijken dan php en dus kan je zelf besluiten welke voor jou handig is.
 
Ozzie PHP

Ozzie PHP

06/07/2013 23:00:49
Quote Anchor link
Ah kijk dat is nog eens een goede uitleg!

"zoals je in het voorbeeldje hierboven ziet kan je bij de eerste methode een array van strings meegeven en bij de 2e alleen een enkele."

Ik denk dat je dit precies andersom bedoelt? Dus dat setAdressen de array zou moeten ontvangen?

Maar jouw uitleg is dus precies wat ik bedoel, en wat dus ook mijn vraag is. Ik wist niet hoe dat in andere talen werkte, dus bedankt voor die uitleg.

Wel ben ik bijzonder benieuwd wat in PHP meer gebruikelijk is. Ik snap overigens de vergelijking met add en set, maar mijns insziens zijn set en add 2 verschillende dingen, dus daarom wil ik dat even buiten beschouwing laten.

Ik kom weer even terug op een eerder voorbeeldje (zie eerder hierboven). Stel we hebben een data class waarin we values opslaan. Soms wil ik 1 value kunnen verwijderen en soms wil ik meerdere values kunnen verwijderen. Wat zou jij dan doen... wat is het meest gebruikelijk in PHP? Is dat 2 functies gebruiken? Een functie deleteValue en een functie deleteValues. De 1e functie ontvangt een string als argument en de 2e een array. Als ik het op deze manier zou doen, dan zou ik een hele hoop functies "dubbel" moeten uitvoeren. Denk aan:

deleteValue
deleteValues
getValue
getValues
addValue
addValues
setValue
setValues
enz.

Ik krijg dus een hoop "extra" functies dan wanneer ik overal één functie voor zou gebruiken:

deleteValues
getValues
addValues
setValues
enz.

Zoals je ziet heb ik nu een stuk minder funties, alleen zal ik wel in iedere functie moeten controleren of het argument een string is of een array.

Al die "dubbele" functies nemen meer ruimte (en dus geheugen) in beslag. De enkele functies moeten echter weer een extra controle uitvoeren. Dus wat is dan wijsheid vraag ik me af?
Gewijzigd op 06/07/2013 23:03:29 door Ozzie PHP
 
Wouter J

Wouter J

06/07/2013 23:14:01
Quote Anchor link
Praten over strict-typed talen als echte OO. Bah! strict-typed heeft niks met OO te maken. Dat de meeste OO talen strict-typed zijn is gewoon doordat de makers blijkbaar vonden dat dat het best was. Neem bijv. Ruby, de meest OO taal in de wereld, geen 1 is er zo lazy-typed als ruby. In ruby zou ik gewoon 1 definition (method) maken die zowel een array als een string (wat eigenlijk ook een array is) accepteert.

In PHP ligt het er aan wat je wilt doen. Meerdere values verwijderen zou ik 1 method hebben die gewoon vaak wordt aangeroepen, values toevoegen hetzelfde. Het instellen van values zou ik weer of een string of een array toestaan.

Overigens hoeft je nooit iets te controleren, alleen typecasten naar een array is al genoeg.
 
-Jens -

-Jens -

06/07/2013 23:31:04
Quote Anchor link
Je zou het misschien een lichte vorm van autisme kunnen noemen ;) maar ik vind in een framework belangrijk dat elke methode steeds hetzelfde type parameter heeft, in PHP is dat niet nodig, maar dat vind ik net zo heerlijk in Java, want ik zou het toejuichen moest men beslissen in PHP de mogelijkheid toe te voegen om functie te 'overriden'. ( @Wouter dat bedoel ik overigens met echte OO, misschien niet zo'n goede uitdrukking, maar ik vind dat een programmeertaal gestructuurd -lees strict- moet zijn). Maar ik denk dat iedereen zijn gewoontes heeft, als ik voor een framework programmeer, zal ik altijd de manier met de array, ookal is er maar 1item, kiezen, net omdat het voor andere programmeurs in dat project hetzelfde zou zijn. Want stel dat het systeem zelf moet bepalen hoeveel bccs er toegevoegd moeten worden, ga je dan het systeem zelf laten beslissen welke type parameter of welke methode? Dan lijkt het mij veel handiger gewoon een array op te laten vullen...

Toevoeging op 06/07/2013 23:40:42:

En @Reshad: ja in Java zou ik gewoon overriden, maar in PHP gaat dat niet, dus ik zou consquent zijn hier interpreteren als 1 methode(naam) gebruiken voor 1 of meerdere items. Dat doeje in principe in Java ook, 1methodenaam (wel twee verschillendd methodes), snap je wat ik bedoel?
 
Reshad F

Reshad F

06/07/2013 23:50:50
Quote Anchor link
@Jens ik snap het precies :) vaak gebeurt dit overigens met de constructor overigens in Java waarbij je dus een constructor krijgt zonder parameter en een met.
 
-Jens -

-Jens -

06/07/2013 23:54:21
Quote Anchor link
Ja klopt Reshad, en dat vind ik enorm handig, maar dat is puur gewoonte hoor ;)
 
Ozzie PHP

Ozzie PHP

06/07/2013 23:54:32
Quote Anchor link
Wouter J op 06/07/2013 23:14:01:
In PHP ligt het er aan wat je wilt doen. Meerdere values verwijderen zou ik 1 method hebben die gewoon vaak wordt aangeroepen, values toevoegen hetzelfde. Het instellen van values zou ik weer of een string of een array toestaan.

Hey Wouter, waarom zou je bij deleten kiezen voor 1 method die vaker wordt aangeroepen in plaats van een array meegeven? Is dat persoonlijke voorkeur of heb je er een speciale reden voor? Ik ben overigens niet van het meerdere keren dezelfde functie aanroepen. En jij kunt vast wel raden waarom ;) Inderdaad vanwege de snelheid. Ik heb dat eens gebenchmarkt en het meerdere keren aanroepen van een class method levert significant vertraging op ten opzichte van slechts 1x aanroepen (met een array) van die method.

Wouter J op 06/07/2013 23:14:01:
Overigens hoeft je nooit iets te controleren, alleen typecasten naar een array is al genoeg.

Dat hangt er een beetje vanaf hoe je het betreffende argument mee wilt geven toch? Stel je wilt meerdere values verwijderen dan wordt er een array met id's verwacht, maar als je er slechts 1 zou willen verwijderen zou je een string met de id mee kunnen geven. Bedoel je dan dat je die string typecast naar een array? Of bedoel je iets anders?

-Jens - op 06/07/2013 23:31:04:
...als ik voor een framework programmeer, zal ik altijd de manier met de array, ookal is er maar 1item, kiezen, net omdat het voor andere programmeurs in dat project hetzelfde zou zijn. Want stel dat het systeem zelf moet bepalen hoeveel bccs er toegevoegd moeten worden, ga je dan het systeem zelf laten beslissen welke type parameter of welke methode? Dan lijkt het mij veel handiger gewoon een array op te laten vullen...

Doe je dit alleen bij een method waarbij meerdere waardes kunnen worden geset, of ook bij methods waarbij slechts 1 waarde kan worden geset? Stel je hebt bijv. een setUsername method? Moet het argument bij jou dan ook een array zijn?
 
MayDay PHP

MayDay PHP

06/07/2013 23:59:18
Quote Anchor link
@Ozzie
Ik snap je vraag helemaal. Daarom toonde ik ook gewoon een voorbeeld. Zelf doe ik dus in jouw voorbeeld setBccs() en setBcc(). Want het is toch te zot om elke keer zelf een foreach te schrijven en als je later iets wilt veranderen is het ook veel gemakkelijker! Maar PHP is zo vriendelijk om meerdere methodes te geven.

@Jens
Waarom zou je dat willen doen? Als je een string wilt wil je een string en als je een array wilt een array. Als je een goede editor hebt komen de parameters zelfs tevoorschijn met de types.

-----

@Ozzie
Als je een remove() functie (of een methode die erop lijkt) dan kun je wel een functie gebruik en typecasten.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

class Test {

    private $values = array(1 => 'ABC', 2 => 'DEF', 3 => 'GHI', 4 => 'JKL', 5 => 'MNO');

    public function remove($keys) {
        foreach((array) $keys as $key)
            unset($this->values[$key]);
    }

}


$test = new Test();
$test->remove(1);
$test->remove(array(2, 3));

print_r($test);

?>
Gewijzigd op 07/07/2013 00:08:58 door MayDay PHP
 
Ozzie PHP

Ozzie PHP

07/07/2013 00:02:52
Quote Anchor link
MayDay PHP op 06/07/2013 23:59:18:
@Ozzie
Ik snap je vraag helemaal. Daarom toonde ik ook gewoon een voorbeeld. Zelf doe ik dus in jouw voorbeeld setBccs() en setBcc(). Want het is toch te zot om elke keer zelf een foreach te schrijven en als je later iets wilt veranderen is het ook veel gemakkelijker! Maar PHP is zo vriendelijk om meerdere methodes te geven.

Nee, je moet niet zelf telkens een foreach schrijven. Maar ook met slechts 1 functie kun je die foreach loops automatisch laten plaatsvinden. Daar heb je niet per se 2 functies voor nodig. Dus jouw beredenering snap ik niet helemaal... :-(
 
-Jens -

-Jens -

07/07/2013 00:05:05
Quote Anchor link
@Ozzie in dat geval niet, want dan weet je met 100% zeker dat je maar 1 username gaat setten (tenzij dat niet zo is)

@MayDay PHP dat klopt, maar nu heb je het wel over iets anders hé. Ik bedoel dat je binnen 1 klasse twee methoden met dezelfde naam hebt, maar met verschillende type parameters. Implement is iets totaal anders hé



Toevoeging op 07/07/2013 00:09:58:

Ozzie, nu snap ik waarom je vraagt of ik altijd een array zou gebruiken. Ik bedoelde dat wanneer de kans er bestaat dat je meer waardes gaat setten, ik altijd een array gebruik en wanneer je zeker weet dat je in elke mogelijke situatie maar 1 waarde gaat setten met een bepaalde methode, geen array gebruikt

Toevoeging op 07/07/2013 00:09:59:

Ozzie, nu snap ik waarom je vraagt of ik altijd een array zou gebruiken. Ik bedoelde dat wanneer de kans er bestaat dat je meer waardes gaat setten, ik altijd een array gebruik en wanneer je zeker weet dat je in elke mogelijke situatie maar 1 waarde gaat setten met een bepaalde methode, geen array gebruikt
 
MayDay PHP

MayDay PHP

07/07/2013 00:12:30
Quote Anchor link
@Jens
Ik had je zinnen verkeerd gelezen. Had het net te laat gezien.

@Ozzie
Met setBccs() wordt er automatisch door alle opgegeven e-mailadressen gelopen omdat in mijn voorbeeld hierboven een Emailaddress object gegeven moet worden aan setBcc(). Je zou dat ook met een functie kunnen doen en dan typecasten. Maar ik persoonlijk vind het gemakkelijker om te weten als ik setBccs() gebruik ik een array moet toevoegen en anders een Emailaddress object.

Zie ook de Symfony Class Loader die ik hierboven heb geplaatst (link). Het is dat wat ik wil bedoelen, hoe ik het zou doen. Typecasten is natuurlijk prima en als een class het zo doet ga ik het niet perse veranderen...
Gewijzigd op 07/07/2013 00:15:00 door MayDay PHP
 
-Jens -

-Jens -

07/07/2013 00:16:00
Quote Anchor link
@MayDay no prob ;)
 
Ozzie PHP

Ozzie PHP

07/07/2013 00:18:35
Quote Anchor link
@Jens: oké, dus concluderend: bij functies waarbij slechts 1 waarde kan worden geset gebruiken we een string, en bij een functie waarbij 1 of meer waardes kunnen worden geset (of gedelete, geadd enz.) gebruiken we een array. Correct?

@MayDay: thanks voor je typecast codevoorbeeld! Ik gebruik geen emailadres object dus bij mij zou dan alleen setBccs van toepassing zijn.
 

Pagina: « vorige 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.