Ola,

Laatst wees iemand me hier op het forum erop dat wanneer je iets opslaat (bijv. als je gegevens cachet) je dan beter de method-naam "save" kunt gebruiken dan "set" omdat "save" duidelijker aangeeft dat je echt iets opslaat.

Nu heeft mijn cacher class dus keurig een "save" method, maar ik vraag me af wat de tegenhanger van "save" is. Is dat "get", of zou je dan beter "load" kunnen gebruiken? Dus is het get/save of load/save? Wat vinden jullie beter?
Dit hangt af van jouw persoonlijke voorkeur zou ik zeggen. Zelf zou ik voor get gaan in dit geval.

<?php

class Cache {

public function get($key) {

}

}

?>
Ik heb nu inderdaad get. Bij get hoort een set. Maar bij save... hoort daar ook een get bij? Of blijkt uit load dan duidelijker dat er iets wordt ingeladen?
Waarschijnlijk heb je ook verschillende drivers. Dus een database cache driver, een file cache driver en misschien nog enkele andere. Dan is get denk ik meer wenselijk.

Load voor mij persoonlijk moet er iets geladen worden, dit gebeurt ook... dus is er eigenlijk ook niets mis mee. Maar alsnog zou ik voor get gaan.

Misschien heeft iemand anders suggesties?

Even nog een voorbeeld.

<?php

class UserMapper {

public function getByUserId(User $user) {

}

}

?>
Hier gebruik ik ook altijd get i.p.v. loadByUserId(). Verschillende frameworks gebruiken ook get i.p.v load.
Andere suggesties zijn welkom.

Mja, ik vind het lastig... ik zou ook kunnen gaan voor gewoon get en set (ipv save). Hetgeen wat ik mooi vind aan save is dat daaruit blijkt dat je iets echt opslaat.

Het verschil tussen get en load is niet heel groot, alleen geef je bij load aan dat er iets wordt ingeladen (een bestand, of iets uit een database). Dit in tegenstelling tot get, waarbij je direct iets uit een object terugkrijgt. Als je het zo beredeneert past load eigenlijk toch wel goed.

[size=xsmall]Toevoeging op 05/05/2013 00:32:53:[/size]

Voor jouw voorbeeld is ook wel weer iets te zeggen, dan krijg je dus eigenlijk dezelfde vraag...

Als je een user opslaat, gebruik je saveUser(). Zou je dan ook niet loadUser() moeten gebruiken ipv getUser. Hmmm...
Even geken op Stack Overflow en daar heb ik deze post gevonden: Naming Conventions. Hier zouden ze dus voor load gaan. Maar je doet ook getByUserId en niet loadByUserId alhoewel het niet verkeerd zou zijn uiteraard.

Als ik aan een project begin houd ik me er het hele project aan en dat is het beste denk ik. Anders heb je de ene keer load en de andere keer get.
Ah thanks...

Omdat de user uit de database komt zou je wel dit kunnen doen:

loadUserById();

Of misschien wel zonder ById en dan $id als parameter:
loadUser($id);

Het is dan wel duidelijk dat het uit een db komt. Nadat de user is ingeladen kun je vervolgens wel eigenschappen "getten".

<?php
$user = loadUser(12);
$age = $user->getAge();
$name = $user->getName();
// enz.
?>
Ik denk dat dat wel een mooie en duidelijke manier is.
Ik return in m'n mapper altijd alles in objecten omdat deze gemakkelijker en veiliger zijn om mee om te gaan. Maar ook kwa flexibiliteit.
<?php

$userMapper = new UserMapper();

# Hier heb je dus weeral de keuze:
$user = $userMapper->getById(new User(12));
$user = $userMapper->loadById(new User(12));

echo $user->getAge();
echo $user->getName();

?>
Beide klinken goed. Zelf zou ik nooit gaan voor bijvoorbeeld byId omdat je even goed setById zou kunnen bedoelen om maar wat te bedenken.
Het enige nadeel wat dan wel weer optreedt, is dat je voor 2 vergelijkbare dingen ("get" en "load") 2 namen gebruikt. Dat kan tijdens het programmeren wel weer voor verwarring zorgen: moet ik een user nou "getten" of "loaden"?

Vanuit die gedachte zou je kunnen zeggen: dan gebruik ik overal "get". Dan weet je altijd dat je goed zit.

Maar vanuit die gedachte... kan ik dan van "save" ook niet beter "set" maken (in plaats van "save")?
ik gebruik load en save bij het laden en schrijven naar bestanden of database. get en set zijn voor mij van toe passing bij OOP getters en setters.

<?php

class user {
private: $id;
private: $name;

private function loadUser() {
// query met SELECT * FROM users WHERE id=...
{

public function getUser() {
return $this->name;
{

}
?>
Ik zou altijd gewoon get en set gebruiken

Reageren