Ola,

Ik zoek een (Engelse) naam voor een functie.

De functie kijkt of een directory bestaat. Zo niet, dan maakt hij de directory aan.

Dus eigelijk geef je die functie dus een directory als argument, en na het uitvoeren weet je zeker dat die directory bestaat.

Ik dacht zelf aan de namen "confirmDirectory" of "assureDirectory", maar misschien weet iemand iets beters?
dan heeft die functie dus 2 verantwoordelijkheden... :)

directoryExists en createDirectory.

En als je het echt in 1 functie wilt: assureDirectoryExists
>> dan heeft die functie dus 2 verantwoordelijkheden... :)

Ja klopt, ik moet deze controle in een paar verschillende functies implementeren en daar gebruik ik dan weer liever 1 functie voor :)

>> En als je het echt in 1 functie wilt: assureDirectoryExists

Oké... jij zou dus voor assure kiezen. Wordt wel een lang naampje, hmmm... misschien dan zonder Exists?
assureDirectory is niks naar mijn mening. Er moet nog iets zijn waarmee we aangeven wat we verzekeren, namelijk dat hij bestaat.

En vind je assureDirectoryExists echt al te lang? Dan kun je er assureDirExists ofzo van maken. Maar echt lang is ie nog niet...
Denk maar eens aan mysql_real_escape_string, data_interval_create_from_string, array_change_key_case en vele andere core functies...
Waarom niet gewoon makeDir() ?

Als ik je omschrijving goed begrijp, is het doel van de functie om een directory te maken. Het kijken of die directory al bestaat is daarin bijzaak.

Eventueel zou je met een return value kunnen aangeven of de aan te maken directory al bestond (dus bijvoorbeeld 0 = niet gelukt, 1 = aangemaakt, 2 = bestond al)
Wat noem je lang? Ik probeer zelf m'n namen zo kort, maar wel zo duidelijk mogelijk te maken.

Ik ben er inmiddels achter dat assure eigenlijk ensure moet zijn, dus dan is het ensureDirectory. Maar waarom wil jij er exists bij?

Je garandeert een directory. Dan denk ik dat het duidelijk is dat je garandeert dat die directory bestaat. Veel meer dan dat kan een directory niet doen. Als ik tegen jou zeg "Wouter, ik garandeer jou een huis." dan gaat het om een huis dat bestaat. Ik kan ook zeggen "Wouter, ik garandeer jou een huis dat bestaat." Komt op hetzelfde neer alleen is wat langer.

[size=xsmall]Toevoeging op 01/01/2014 19:49:17:[/size]

>> Als ik je omschrijving goed begrijp, is het doel van de functie om een directory te maken. Het kijken of die directory al bestaat is daarin bijzaak.

Nee niet helemaal. Bij een makeDir functie maak je altijd een nieuwe directory. In mijn geval kan het zijn dat de directory al bestaat, dan moet er dus juist geen directory gemaakt worden.
Wouter J op 01/01/2014 18:55:43

En vind je assureDirectoryExists echt al te lang? Dan kun je er assureDirExists ofzo van maken. Maar echt lang is ie nog niet...
Denk maar eens aan mysql_real_escape_string, data_interval_create_from_string, array_change_key_case en vele andere core functies...

Dat is een beetje een omgekeerde argumentatie: omdat er al zoveel lange functienamen zijn is het dus geen probleem om een lange functienaam aan te maken?

Een van de nadelen van PHP is juist dat de gemiddelde naam van de core-functies zo lang is...
Ozzie, er is een verschil tussen het gebruik in het engels en nederlands. In het engels moet er iets achter komen dat verteld wat je garandeert.

En omdat je me anders niet geloofd :)

Ensure means "to make sure or certain" and must be followed by a direct object.
[bron]http://www.elearnenglishlanguage.com/difficulties/assureensure.html[/bron]

ensure
[with object]
make certain that (something) will occur or be the case: the client must ensure that accurate records are kept

[no object] (ensure against) make sure that (a problem) does not occur: only by researching stocks thoroughly can a client ensure against being misled
[bron]http://www.oxforddictionaries.com/definition/english/ensure[/bron]


[offtopic]Nee, willem. Ik wou alleen aangeven dat het wel mee viel met de lengte, aangezien je als PHP programmeur dat toch al gewent bent. PHP heeft immers geen functies als to_a (wat voor de meeste mensen compleet nikszeggends zal zijn).
Euh Wouter, ik snap nog niet helemaal waar je op doelt.

>> Ensure means "to make sure or certain" and must be followed by a direct object.

Een direcotry is toch een object?

In de link die jij geeft staat ook:

"His loyalty will ensure your safety."

In jouw optiek zou dit dan moeten zijn "His loyalty will ensure that your safety exists."
Ozzie PHP op 01/01/2014 19:47:31

>> Als ik je omschrijving goed begrijp, is het doel van de functie om een directory te maken. Het kijken of die directory al bestaat is daarin bijzaak.

Nee niet helemaal. Bij een makeDir functie maak je altijd een nieuwe directory.

In welke wet staat dat beschreven? ;-)

Er zijn twee manieren om naar een functie te kijken: actiegericht en resultaatgericht. Jij kijkt er actiegericht naar. Maken is maken, en checken is checken. Ik kijk resultaatgericht: aan het eind van de procedure moet er een directory zijn. Bestaat 'ie al? Mooi zo, dan hoef ik niets te doen.

Je zou zelfs helemaal over the top kunnen gaan door een parameter mee te geven waarmee je bepaalt of het al bestaan van de target directory een fout oplevert of niet.

Wanneer je je functie ensureDir of zo gaat noemen, introduceer je naar mijn mening juist onzekerheid over wat de functie doet. De term "ensure" suggereert namelijk dat de functie ervoor zorgt dat de opgegeven target altijd een directory is. Stel nu dat je de functie aanroept met de naam van een al bestaande file: ensureDir('readme.txt'); dan zou dat suggereren dat aan het eind van de functie de file readme.txt is verwijderd en er een directory readme.txt is aangemaakt. Een naam als makeDir vind ik dan juist beter beschrijven wat de functie doet.
Ik snap wel enigszins wat je bedoelt, maar PHP heeft wat rare fratsen. Stel bijv. ik wil een bestand kopiëren van map A naar map B. Dan wil ik kunnen zeggen copy('/pad/A/file.php', '/pad/B/file.php');

Nu is het vervelende dat die copy functie geen directories kan aanmaken. Oké. Dan kan ik gaan controleren of directory B bestaat, en zo niet maak dan eerst directory B aan. Dat vind ik niet handig.

Ik wil mijn copy functie dus zo maken dat ie, indien nodig, een directory kan aanmaken. Stel nu dat ik makeDir zou gebruiken, dan krijg je zoiets:

<?php

public function copy($file, $destination) {
makeDir(dirname($file));
copy($file, $destination);
}

?>
Als ik deze functie zou zien, dan zou ik dan interpreteren alsof er altijd een directory wordt aangemaakt, maar dat is niet zo, want dat is niet altijd nodig. Dit lijkt mij dan duidelijker:

<?php

public function copy($file, $destination) {
ensureDirectory(dirname($file));
copy($file, $destination);
}

?>

Reageren