} } } class SyslogLogger { // ... public function info($message) { syslog(LOG_INFO, $message); } } class FlashMessage { // ... public function success($message) { echo $message; } } /// $data = ['username' => 'adrianpietka', 'password' => 'strong#password', 'email' => '*****@*****.**']; $flash = new FlashMessage(); $logger = new SyslogLogger(); $userRepository = new DoctrineUserRepository(); $userFactory = new RegisterFormUserFactory(); $registerService = new RegisterUserService($userRepository, $userFactory); $registerService->register($data, function ($user) use($logger, $flash) { $logger->info(sprintf('Created new account with email: %s', $user->getEmail())); $flash->success('Congratulations your registration has been successful.'); }); // @via zawarstwaabstrakcji.pl