[oop] setFoo en/of setFoos?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Oracle Developer / PL SQL

Dit ga je doen Software ontwikkeling aan een internationaal gebruikt pakket; Werken met technieken als Oracle 19c, Toad, PL/SQL, Oracle Forms, Reports en Designer; Meedraaien in internationale projecten; Meedenken over technisch en functioneel ontwerp; Samenwerken met collega's als Informatie Analisten, Testers en Release Managers; Soms wensen en eisen afstemmen met de business. Hier ga je werken Onze klant, een internationaal bekend bedrijf dat essentiële producten maakt waar iedereen graag gebruik van maakt, zoekt versterking in het Software Development team. Samen met 3 developers, een release manager, een informatie analist en 3 testers werk jij aan een systeem waarmee complexe producten

Bekijk vacature »

Medior Java developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Lead Front-end developer

Functie Hun huidige applicatie worden ontwikkeld in o.a. React, Redux, TypeScript. Ze werken graag met de nieuwste technieken en tooling en zoeken ook developers die hier proactief op zoek naar gaan. Als senior/lead developer ben je een kartrekker in het team. Naast het meedenken over bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Zo kun je bijvoorbeeld 1 dag in de week met 2 collega’s bezig zijn om samen met hen te kijken naar hun ontwikkeling, doelstellingen en uiteraard de gewenste begeleiding hierin. Hiernaast sta je als

Bekijk vacature »

Software Ontwikkelaar

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 »

Medior C# Developer

You'll build modern applications for Coolblue's back office. We have a lot of friends, and they crave well-structured data and user-friendly, task-focused applications. How do I become a Medior C# Developer at Coolblue? You regularly participate in brainstorm sessions about user experience, data, and task flow with the UX Designer, Product Owner, and Data Scientists in your team. Besides that you will create disconnected, highly congruent, and testable code that can easily be maintained and is future-proof. Want to become C# Developer at Coolblue? Read below if the job suits you. You enjoy doing this Working with various types of

Bekijk vacature »

Senior Developer ERP Dynamics 365

Samengevat: Deze werkgever is een softwarebedrijf. Ben jij een enthousiaste developer? Heb je ervaring met ERP of Dynamic 365 bussines central? Vaste baan: ERP Applicatie Specialist ERP MBO €3.600 - €5.200 Wij houden ons als bedrijf bezig met het leveren en implementeren van het Microsoft Dynamics pakket binnen verschillende industriële sectoren. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Binnen ons open team is er een no-nonsense cultuur. Daarnaast is er veel onderling contact door de korte communicatielijnen. Het team werkt enthousiast samen om een

Bekijk vacature »

Full stack Developer / .NET / Angular / Azure

Dit ga je doen Jij gaat je als Full Stack .NET Developer voornamelijk bezighouden met: Het vertalen van concepten naar passende innovatieve en duurzame oplossingen; Het ontwikkelen van bedrijf kritische en gebruiksvriendelijke applicaties voor de internationale markt en intern gebruik; Bouwen aan software om het Internet of Things netwerk te ondersteunen; Het maken en onderhouden van interfaces tussen systemen aan de hand van API's; Het onderhouden en blijven verbeteren van de ontwikkelde software. Hier ga je werken Binnen deze organisatie zal jij als Full Stack .NET Developer een belangrijke rol krijgen en ga je dagelijks de uitdaging aan om maatwerk

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

Java Programmeur

Functie Heb jij altijd al samen willen werken met ervaren java ontwikkelaars dan hebben wij hier de ultieme kans voor jou! Voor een opdrachtgever in omgeving van Naaldwijk zijn wij op zoek naar uitbreiding van het vaste ontwikkel team. Je zult je hier voornamelijk bezig gaan houden met; Wijzigingsverzoeken van klanten uitvoeren, hier wordt je diep in betrokken; Samen met consultants sluit je aan bij gesprekken met klanten, voor alle projecten; Je schakelt veel met consultants, wat is de behoefte van de klant? Hoe kan je hierop integreren?; Het framework moet naar de Cloud gebracht worden, je wordt betrokken bij

Bekijk vacature »

Medior PHP developer

Functie Samen met je development team werk je Agile Scrum en met jullie gezamenlijke kennis en ervaring bepalen jullie samen de beste keuze voor techniek en architectuur. Naast het ontwikkelen van software ben je continue bezig om ook jezelf te ontwikkelen. Ze werken met o.a.: PHP, Laravel, Doctrine, PHP Unit, Behat, React, TypeScript, (My)SQL, Postgress, Redis, ElasticSearch, Docker, Nginx, GIT flow, JIRA, AWS. Eisen • HBO werk- en denkniveau • Je hebt goede kennis en ervaring met PHP • Je bent niet bang voor complexe projecten • Je werkt graag zelfstandig aan applicaties • Je bent altijd nieuwsgierig naar nieuwe

Bekijk vacature »

.NET Developer Senior

Dit ga je doen Het ontwikkelen van backend applicaties in C#; Het maken van vele koppelingen met andere ERP-applicaties zoals JD Edwards en SAP; Je bent (mede) verantwoordelijk voor het opstellen van technisch ontwerpen voor de te ontwikkelen software oplossingen; Je bent gemiddeld 90% van je tijd inhouse oplossingen aan het ontwikkelen en testen. De overige 10% van je tijd ben je bij klanten op locatie om oplossingen te implementeren, klanten te begeleiden en de software verder te innoveren; Naast het zelfstandig ontwikkelen van software oplossingen ben je ook bezig met het waarborgen van je contacten bij de klant, het

Bekijk vacature »

Back-end developer

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een gemotiveerde SQL Developer/ functioneel consultant. Jij wordt verantwoordelijk voor zowel het ontwerpen en implementeren van SQL-databases als voor het in kaart brengen van de bedrijfsprocessen van een organisatie en het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Ontwerp en implementatie van SQL-databases: Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Analyse van bedrijfsprocessen: Je analyseert de bedrijfsprocessen van de organisatie om de behoeften van de klant te begrijpen en te vertalen naar

Bekijk vacature »

Back-End Web Developer

Als Back-End Web Developer bij Coolblue zorg je ervoor dat onze webshops elke dag een beetje beter zijn. Wat doe je als Back-End Web Developer bij Coolblue? Als Back-End Web Developer werk je met andere development teams samen om onze webshop zo optimaal mogelijk te laten werken en onze klanten blij te maken. Als backend developer weet je de weg in PHP, kan je in Typescript een microservice op zetten of ben je bereid om dit te leren. Ook Web Backend Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen PHP

Bekijk vacature »

PHP ontwikkelaar

Functie Jij komt te werken in een development team van 9 man. Het grootste deel doet back end development en daarnaast is er 1 teamlead en 1 tester in het team. Dit Agile team is van groots belang voor de organisatie omdat zij voornamelijk alle eigen systemen in-house ontwikkelen. Naast het door ontwikkelen van het bestaande platform en de software die daarbij komt kijken, zul jij je ook bezighouden met het realiseren en opzetten van nieuwe projecten binnen het bedrijf. Je staat nauw met de klant in contact om zo hun wensen zo goed mogelijk te kunnen realiseren. Daarnaast ontwikkel

Bekijk vacature »

Front-end developer (HTML, CSS, SASS, JavaScript)

Functie Momenteel zijn we voor ons Digital team op zoek naar een (medior) Front-end developer. Samen met je collega’s werk je in een Agile/Scrum omgeving aan de ontwikkeling van onze webapplicaties, websites en andere oplossingen. Je draagt bij aan een sterk ontwikkelproces waarin kwaliteit voorop staat. Hiervoor ben je niet alleen bezig met eigen code maar ook code reviews van andere collega’s. Ben jij graag op de hoogte van de nieuwste ontwikkelingen in je vakgebied en wil je deze toepassen voor diverse projecten? Dan komen wij graag met je in contact! Eisen • HBO werk- en denkniveau • Minimaal 2

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

17/02/2025 09:45:16
 
-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.