Skip to content

Instantly share code, notes, and snippets.

@jroenf
Last active December 27, 2017 12:11
Show Gist options
  • Save jroenf/f18819860c978772b64171fd59699388 to your computer and use it in GitHub Desktop.
Save jroenf/f18819860c978772b64171fd59699388 to your computer and use it in GitHub Desktop.
Kleine opdracht met vragen
<?php
namespace Di;
class TranslateRobot
{
public $message;
public function __construct($robotMessage = 'The translation of the word is: ')
{
$this->message = $robotMessage;
}
protected $dictionaryNl = [
'yes' => 'ja',
'no' => 'nee',
];
protected $dictionaryRu = [
'yes' => 'da',
'no' => 'njet',
];
public function translate($text, $language)
{
switch ($language) {
case 'du':
$translation = $this->dictionaryNl[$text];
break;
case 'ru':
$translation = $this->translateRussian($text);
break;
case 'ge':
$translation = $this->translateGerman($text);
break;
}
return $this->message . $translation;
}
protected function translateRussian($text)
{
return $this->dictionaryRu[$text];
}
protected function translateGerman($text)
{
return $this->searchOnlineTranslationGerman($text);
}
protected function searchOnlineTranslationGerman($text)
{
return 'ja oder nein';
}
}
Het is een translate Robot. Een robot die niet alleen de vertaling maar een vriendelijke volzin terug geeft.
Uiteraard zit er 'in' de robot een pure vertaler van woord -> woord.
- Wat kan je zeggen over deze class, wat zie je?
- Wat is het gevaar van de public property?
- Wat is het verschil tussen protected / private
- Vertel iets over de verantwoordelijkheden van deze class.
- Hoe zou je die verantwoordelijkheden (puur vertalen vs. vertaling met leuke boodschap erbij) kunnen opsplitsen? Ga aan de knoppen zitten en schrijf die classes.
- Krijg je altijd een translation? Kan je een default intsellen? Is dat verstandig?
- Implementeer de 3 cases in 3 extensions van deze class, verwijder het $language argument.
- Zou je een method abstract kunnen maken?
- Een andere wijze is om de 3 robots te maken, en elke robot de juiste translator te geven: kan je iets vertellen voer DI, inversion of control?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment