Vraag & Antwoord

Webprogrammeren & scripting

[OO PHP] Meerdere variabelen naar een method

6 antwoorden
  • Sinds ik mezelf onlangs op het OO-Php heb gestort ben ik er achter gekomen dat je meerdere opties hebt wanneer je meerdere variabelen aan een method door wilt geven. Gewoon door alle variabelen stuk voor stuk mee te geven bij het aanroepen van de method, of met het gebruik van een associatieve array. Een voorbeeldje: [code:1:4acc407d31] protected function print_NAW($naam, $adres, $woonplaats) { echo "Naam: $naam"; echo "Adres: $adres"; echo "Woonplaats: $woonplaats"; } [/code:1:4acc407d31] Of ik kan het m.b.v. een associatieve array oplossen: [code:1:4acc407d31] protected function print_NAW($naw) { echo "Naam: $NAW[naam]"; echo "Adres: $NAW[adres]"; echo "Woonplaats: $NAW[woonplaats]"; } [/code:1:4acc407d31] Nu heeft de tweede optie mijn voorkeur omdat dat het gebruik van de method transparanter maakt. Ik bedoel, als je de method later in een object gebruikt en aanroept moet je daadwerkelijk de variabele $NAW[woonplaats] vullen en weet je wat er gevraagd wordt. Bij de eerste optie moet je maar "toevallig" de juiste gegevens in de juist volgorde meegeven. Maar wat ik me afvraag is of er nu ernstige voor- of nadelen aan beide opties hangen. In de zin van CPU load of geheugengebruik, en wellicht gewoon een heel ander voor- of nadeel dat ik nu over het hoofd zie.
  • ik weet niet hoe het met geheugengebruik zit, daar kun je een benchmark voor uitvoeren. Wat ik wel weet is dat ik zeker niet een voorkeur heb voor de tweede manier, en wel hierom: In beide gevallen moet je toch echt in de documentatie (kan ook de code zelf zijn) van de klasse waar deze methode in staat, kijken wat je allemaal moet meegeven en hoe. Jouw reden om voor de tweede werkwijze te kiezen vind ik dan ook niet goed. Of je nou kijkt in welke volgorde je variabelen meegeeft, of dat je de juiste variabelen (op de juiste manier ook nog) in een array stopt om die vervolgens mee te geven, maakt volgens mij niet uit. Daar komt bij dat met de eerste manier, je volgens mij juist makkelijker kunt zien wat je in welke volgorde mee moet geven. In de tweede manier, moet je in de functie zelf gaan zoeken wat er allemaal in de array moet zitten (tenzij heel goed gedocumenteerd, wat geen makkelijke klus is). PHP ondersteunt ook al steeds meer typering voor parameters, daar kun je ook goed mee aangeven wat er binnen moet komen - werkt helaas niet voor primitieve types, maar misschien komt het wel in de toekomst. Maar goed, dit is dus mijn visie.
  • Daar heb je wel gelijk in. Ik zie in dat ik teveel vanuit de "Class-bouwer" denk en te weinig vanuit de "class-gebruiker". M.a.w. nu ik het net gemaakt heb snap ik het helemaal, en vind ik het hartstikke duidelijk en overzichtelijk. Maar wat als ik er een half jaar niet naar om kijk en het dan ineens ga gebruiken. Ik houd gaandeweg overigens wel beknopte documentatie bij over elke classe en method die ik maak. Heel kort de naam, in een regel wat het doet, welke variabelen gevraagd worden, welke variabele (eventueel) terugkomt en (indien van toepassing) welke CSS class of ID naam er wordt gebruikt.
  • [quote:be80405022="Gooly"]M.a.w. nu ik het net gemaakt heb snap ik het helemaal, en vind ik het hartstikke duidelijk en overzichtelijk. Maar wat als ik er een half jaar niet naar om kijk en het dan ineens ga gebruiken.[/quote:be80405022]Het is altijd zaak je code goed te documenteren. Zorg in ieder geval voor veel (relevant en niet-triviaal) commentaar in je code. Mooier nog zou zijn als je één van de vele documentatie-generators gebruikt die van bepaald commentaar kant-en-klare documentatie maken. Een programma kan ik nog niet noemen, ben zelf ook nog op zoek naar een geschikte kandidaat voor php. Wellicht heeft iemand anders wel een suggestie? - Bas
  • Zorg ervoor dat je er een gewoonte van maakt om elke method en field in je class te commentariëren. Een goede en nette method die in de wereld van OO PHP veel gebruikt wordt is phpDoc. Deze wordt door de meeste documentatie generators ook ondersteund. Een voorbeeldje: [code:1:bcdcd28095] /** * Method beschrijving in enkele lijnen * * @access public * @param string $name * @param int $age * @return bool */ public function AddUser($name, $age){ // Method code } [/code:1:bcdcd28095] Lees ook dit artikelje eens. Hier vindt je wat meer informatie over hoe ik commentaar zet bij mijn code. [url=http://www.computerfaq.be/php/overzichtelijk-leren-programmeren-in-php/]Overzichtelijk leren programmeren[/url]
  • Ik zet ook wel commentaar bij mijn code, maar de meeste classes die ik schrijf gaan niet in source het net op. Meestal gebruik ik ze zelf en zijn ze voor anderen niet vrij te gebruiken. Als je zelf die class alleen gebruikt kun je natuurlijk ook vertrouwen op je eigen kennis van PHP. Maar dat is mijn idee.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.