<?php namespace App\Domain\ActionManagement; use App\Entity\EntityInterface; use App\Exception\NotSecureException; use App\Exception\NotValidByFormException; /** * @author kevinfrantz */ abstract class AbstractAction extends AbstractActionConstructor implements ActionInterface { /** * @return bool */ abstract protected function isSecure(): bool; /** * @return bool */ abstract protected function isValidByForm(): bool; /** * Process the routine. * * @return EntityInterface|EntityInterface[]|null */ abstract protected function proccess(); /** * @throws \Exception * * {@inheritdoc} * * @see \App\Domain\ActionManagement\ActionInterface::execute() */ final public function execute() { if ($this->isSecure()) { if ($this->isValidByForm()) { return $this->proccess(); } throw new NotValidByFormException('The requested Entity is not valid!'); } throw new NotSecureException("You don't have the permission to execute this action!"); } }