Skip to content

Instantly share code, notes, and snippets.

@MacDada
Created May 19, 2015 17:43
Show Gist options
  • Select an option

  • Save MacDada/b996a3374dd29768aca6 to your computer and use it in GitHub Desktop.

Select an option

Save MacDada/b996a3374dd29768aca6 to your computer and use it in GitHub Desktop.
class MyCode
{
private function option1()
{
$this->notMyCode->doSomething(function () {
// dużo logiki, 100 linii, trudne do przetestowania, etc, więc odpada
});
}
private function option2()
{
// jest spoko, logika wydzielona, testuję ją w izolacji, tutaj tylko odpalam obiekt ją realizujący
$this->notMyCode->doSomething(function () {
return $this->somethingDoer->doSomething();
});
}
private function option3()
{
// jeszcze lepiej, przekazuję tylko obiekt z __invoke – praktycznie identycznie co wyżej, tylko prościej
// zwłaszcza, jeśli somethingDoer ma być wykorzystany tylko i wyłącznie tutaj
$this->notMyCode->doSomething($this->somethingDoer);
}
}
class NotMyCode
{
public function doSomething(\Closure $callback)
{
// Nie mój kod, ale chcę z niego skorzystać, wymaga \Closure
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment