een zelfstandig naamwoord, dan een werkwoord (wat je met dat zelfstandig naamwoord doet).
Dat is een goede, Kris, want dezelfde noun/verb selection wordt gebruikt in de GUI-richtlijnen voor Windows én Mac OS: Bestand > Openen, File > Print, enzovoort.
Ik zou verder ook eens ruimer kijken naar de gehele signature:
<?php
public function copy($file, $destination) {
ensureDirectory(dirname($file));
copy($file, $destination);
}
?>
Je gebruikt hier namelijk een custom functie copy() die gedeeltelijk de PHP-functie copy() implementeert: dat is dubbelzinnig, want ze doen niet hetzelfde. Daarnaast gebruik je een parameter $file waar $filename meer op zijn plaats is.
Sterker nog, de huidige implementatie is een recursieve functie zonder doel en zonder eindpunt. Dat gaat resulteren in "Memory overflow", "Execution time exceeded" en "maximum function nesting level" errors.
>> Je gebruikt hier namelijk een custom functie copy() die gedeeltelijk de PHP-functie copy() implementeert: dat is dubbelzinnig,
Dat doe ik bewust. Ik voeg namelijk exceptions toe en maak het mogelijk dat mijn functie ook nieuwe directories kan aanmaken. Bovendien bouw ik een beveiliging in dat een bestaand bestand (by default) niet kan worden overschreven. Mijn versie is dus een verbeterde versie van de php functie.
@Wouter:
Da's een interessante. Ik heb (omdat een ander stukje van mijn code even uit elkaar ligt) het nog niet kunnen testen. Die copy binnen de functie zelf dat moet de native functie van php zijn. Maar hij verwijst daar nu toch ook naar? Anders had er toch $this->copy() moeten staan? Of zie ik dat verkeerd? Graag je reactie!
[size=xsmall]Toevoeging op 02/01/2014 14:36:05:[/size]
@Kris:
De functie staat in een class... dus lijkt het me niet nodig om de naam van de module/class er nog eens voor te zetten... In de praktijk zou je dus zoiets krijgen $this->filesystem->ensureDirectory($dir). Als ik dat zou doen volgens jouw voorbeeld zou je zoiets krijgen $this->filesystem->filesystem_directory_ensure($dir). Dan vind ik m'n eigen oplossing toch wat prettiger...
Ja, drupal is heel erg procedureel.
Binnen een class zit de noun meestal al in de claasnaam.
[offtopic]
De manier waarop je in drupal communiceert is met hook functies.
die functies zijn callbacks. Ze worden dus opgeroepen, door drupal core, op basis van events.
Een beetje zoals we gewoon zijn in javascript.
[/offtopic]
... Wat niet wegneemt dat het misschien, af en toe, toch nog handig kan zijn.
Uiteraard niet de classname herhalen in functienamen.
Dat zijn gewoon event listeners. Je registreert dat bepaalde functies worden aangeroepen wanneer een bepaald event gebeurd. Stel je registreert dat JouwModule::onFooter wordt aangeroepen tijdens de footer hook (event). Dan zal die worden aangeroepen wanneer je drupal_footer() aanroept.
PS: Merk op dat Drupal8 heel erg van dat procedurele gaat afstappen.