Guest User

Untitled

a guest
Jan 29th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. // Command
  2.  
  3. // PHP объекты, шаблоны и методики программирования p245
  4. // Позволяет отделить уровень контроллера от уровня бизнес-логики.
  5. // Команды выполняют мало логических операций, они проверяют входные данные, обрабатывают ошибки, сохраняют данные
  6. // и вызывают другие методы для выполнения операций.
  7.  
  8. abstract class Command
  9. {
  10. abstract public function execute(CommandContext $context);
  11. }
  12.  
  13. class LoginCommand extends Command
  14. {
  15. public function execute(CommandContext $context)
  16. {
  17. $manager = Registry::getAccessManager();
  18. $username = $context->get('username');
  19. $password = $context->get('password');
  20. $user = $manager->login($username, $password);
  21. if (!$user) {
  22. $context->setError($manager->getError());
  23. return false;
  24. }
  25. $context->addParam('user', $user);
  26. return true;
  27. }
  28. }
  29.  
  30. // Класс CommandContext - оболочка над ассоциативным массивом с определенным интерфейсом.
  31.  
  32. // Объект класса Command создается, к примеру фабрикой, на основе запрошенного url.
  33. // пример вызывающего кода:
  34.  
  35. $cmd = CommandFactory::getCommand($request->action);
  36. $cmd->execute($this->context);
Add Comment
Please, Sign In to add comment