<?php
$key = 'german';
$language = $language->get($key);
?>
Gevoelsmatig, maar dat is dus heel persoonlijk, heb ik een lichte neiging om bij een getal (zoals bij het product) een ID logischer te vinden, terwijl ik bij een woord (zoals bij language) een lichte voorkeur heb voor een key.
Ervaren jullie dit ook zo? Of juist helemaal niet? Het gaat er bij deze vraag niet om wie er gelijk heeft. Ik ben met name beniewd of jullie een verschil ervaren tussen een ID en een key.
Waarom is 'images' het ID voor path /Users/Darsstar/images maar niet /Users/Ozzie/images ? '/Users/Darsstar/images' zou dan weer wel een goede ID zijn voor path /Users/Darsstar/images...
Het ID hoort bij/is deel van de value. Het is uniek onder alle verschillende values. Omdat het uniek is kun je het dus als een key gebruiken.
Nee, want dan heeft die ene images map dus al 2 identifiers: images (wanneer hij in zijn eentje was) of foo_images (wanneer er ook nog een bar is). Dan is het dus geen identifier meer.
Computer science
- Lookup table, a data structure, usually an array or associative array, often used to replace a runtime computation with a simpler array indexing operation
- Array index, an integer pointer (into an array data structure) that identifies an element of the array
- A key in an associative array
- Database index, a data structure that improves the speed of data retrieval operations on a database table
>> Array index, an integer pointer (into an array data structure) that identifies an element of the array
>> Key, a data element which allows one to find associated data using a database index or a hash table
Dit is toch hetzelfde?
[size=xsmall]Toevoeging op 04/05/2014 00:35:16:[/size]
Pfff... k zie het nu even niet meer. Vooral de opmerking van Wouter:
"Nee, want dan heeft die ene images map dus al 2 identifiers: images (wanneer hij in zijn eentje was) of foo_images (wanneer er ook nog een bar is). Dan is het dus geen identifier meer."
Goed, we leggen het uit met een "real world example".
Jij heet Ozzie [size=xsmall](niet waar, maar we nemen dat nu even aan :p)[/size] en ik heet Wouter. Nou, denk je dat zijn hele mooie identifiers voor ons. Als je het hier op het forum hebt over "Wouter", dan denkt iedereen waarschijnlijk wel aan mij en als we het hebben over "Ozzie" dan denkt iedereen waarschijnlijk aan jouw. Maaarrr, nu komt er een "Ozzie JS" op het forum. Als we het dan hebben over "Ozzie", dan weet niemand meer of we jouw bedoelen of Ozzie JS. "Ozzie" is dus niet meer een correct identifier voor jouw of die andere ozzie. Dat betekend dat die "Ozzie" in het begin al geen goede identifier was en die "Wouter" dus ook niet.
Wat is dan wel een goede identifier? Nou, iets wat altijd uniek blijft. Denk bijv. aan jouw userid. "24209" komt jouw natuurlijk al meteen voor als Ozzie PHP (niet waar, maar voor het PHP systeem wel). "23590" is dan ik. Als nu die nieuwe Ozzie JS het forum op komt krijgt hij "30668" als userid, dat betekend dat jouw id nog steeds alleen uniek voor jouw is. Het userid is dus iets wat altijd uniek blijft en het is dus een goede identifier.
Nu is dat hetzelfde met de voorbeelden die jij gaf. Als je /Ozzie/Cms/import/images "images" noemt en er komt nog een images folder bij, dan moet je dus beide "images" gaan hernoemen naar "ozzie_images" en "wouter_images". En stel er komt nog een nieuwe images folder bij in de Ozzie map, dan moet je "ozzie_images" hernoemen naar "ozzie_cms_images" en "ozzie_framework_images". Dit is dus geen goede identifier, het is niet altijd uniek.
Aha... nu valt het kwartje. Dat is nog eens een top-uitleg!
Oké... tot zover snap ik het. Alleen nu twijfel ik dus wel of m'n benamingen kloppen, of dat ik ze anders moet gaan noemen.
Wat ik bijv. wil doen is dat ik makkelijk (ik kom maar even terug op dit voorbeeld) een pad kan oproepen.
Stel ik wil een images pad oproepen, dan wil ik zoiets kunnen doen: echo $path->get('images'). Alle paden staan in een array, dus 'images' is altijd uniek. Maar inderdaad, komt er een 2e 'images' map bij, dan heb ik een probleem.
Nu is mijn eerste vraag, in het voorbeeld hierboven noem ik 'images' een ID. In de method gebruik ik dus ook de variabele $id. Klopt dat? Is de naam $id juist?
<?php
public function get($id) {
return $this->paths[$id];
}
?>
En dan de 2e vraag... hoe krijg ik die id/key/index 'images' dan uniek? Door ze meteen al vanaf het begin een unieke naam te geven? Dus niet 'images', maar 'ozzie_images'? Is dat de oplossing?