[Workflow] Added parameter typhint where possible

This commit is contained in:
Grégoire Pineau 2019-06-27 16:12:25 +02:00
parent 8fb4741f92
commit 62e615b095
20 changed files with 42 additions and 74 deletions

View File

@ -73,11 +73,9 @@ class DefinitionBuilder
} }
/** /**
* @param string $place
*
* @return $this * @return $this
*/ */
public function addPlace($place) public function addPlace(string $place)
{ {
if (!$this->places) { if (!$this->places) {
$this->initialPlaces = $place; $this->initialPlaces = $place;

View File

@ -25,10 +25,6 @@ interface DumperInterface
/** /**
* Dumps a workflow definition. * Dumps a workflow definition.
* *
* @param Definition $definition A Definition instance
* @param Marking|null $marking A Marking instance
* @param array $options An array of options
*
* @return string The representation of the workflow * @return string The representation of the workflow
*/ */
public function dump(Definition $definition, Marking $marking = null, array $options = []); public function dump(Definition $definition, Marking $marking = null, array $options = []);

View File

@ -236,7 +236,7 @@ class GraphvizDumper implements DumperInterface
/** /**
* @internal * @internal
*/ */
protected function dotize($id) protected function dotize(string $id)
{ {
return hash('sha1', $id); return hash('sha1', $id);
} }

View File

@ -27,10 +27,7 @@ class Event extends BaseEvent
private $transition; private $transition;
private $workflow; private $workflow;
/** public function __construct(object $subject, Marking $marking, Transition $transition = null, WorkflowInterface $workflow = null)
* @param object $subject
*/
public function __construct($subject, Marking $marking, Transition $transition = null, WorkflowInterface $workflow = null)
{ {
$this->subject = $subject; $this->subject = $subject;
$this->marking = $marking; $this->marking = $marking;
@ -63,7 +60,7 @@ class Event extends BaseEvent
return $this->workflow->getName(); return $this->workflow->getName();
} }
public function getMetadata(string $key, $subject) public function getMetadata(string $key, object $subject)
{ {
return $this->workflow->getMetadataStore()->getMetadata($key, $subject); return $this->workflow->getMetadataStore()->getMetadata($key, $subject);
} }

View File

@ -15,6 +15,7 @@ use Symfony\Component\Workflow\Marking;
use Symfony\Component\Workflow\Transition; use Symfony\Component\Workflow\Transition;
use Symfony\Component\Workflow\TransitionBlocker; use Symfony\Component\Workflow\TransitionBlocker;
use Symfony\Component\Workflow\TransitionBlockerList; use Symfony\Component\Workflow\TransitionBlockerList;
use Symfony\Component\Workflow\WorkflowInterface;
/** /**
* @author Fabien Potencier <fabien@symfony.com> * @author Fabien Potencier <fabien@symfony.com>
@ -27,9 +28,9 @@ class GuardEvent extends Event
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function __construct($subject, Marking $marking, Transition $transition, $workflowName = null) public function __construct(object $subject, Marking $marking, Transition $transition, WorkflowInterface $workflow = null)
{ {
parent::__construct($subject, $marking, $transition, $workflowName); parent::__construct($subject, $marking, $transition, $workflow);
$this->transitionBlockerList = new TransitionBlockerList(); $this->transitionBlockerList = new TransitionBlockerList();
} }

View File

@ -16,13 +16,9 @@ use Symfony\Component\Workflow\Transition;
class GuardExpression class GuardExpression
{ {
private $transition; private $transition;
private $expression; private $expression;
/** public function __construct(Transition $transition, string $expression)
* @param string $expression
*/
public function __construct(Transition $transition, $expression)
{ {
$this->transition = $transition; $this->transition = $transition;
$this->expression = $expression; $this->expression = $expression;

View File

@ -44,7 +44,7 @@ class GuardListener
$this->validator = $validator; $this->validator = $validator;
} }
public function onTransition(GuardEvent $event, $eventName) public function onTransition(GuardEvent $event, string $eventName)
{ {
if (!isset($this->configuration[$eventName])) { if (!isset($this->configuration[$eventName])) {
return; return;

View File

@ -23,7 +23,7 @@ class NotEnabledTransitionException extends TransitionException
{ {
private $transitionBlockerList; private $transitionBlockerList;
public function __construct($subject, string $transitionName, WorkflowInterface $workflow, TransitionBlockerList $transitionBlockerList) public function __construct(object $subject, string $transitionName, WorkflowInterface $workflow, TransitionBlockerList $transitionBlockerList)
{ {
parent::__construct($subject, $transitionName, $workflow, sprintf('Transition "%s" is not enabled for workflow "%s".', $transitionName, $workflow->getName())); parent::__construct($subject, $transitionName, $workflow, sprintf('Transition "%s" is not enabled for workflow "%s".', $transitionName, $workflow->getName()));

View File

@ -23,7 +23,7 @@ class TransitionException extends LogicException
private $transitionName; private $transitionName;
private $workflow; private $workflow;
public function __construct($subject, string $transitionName, WorkflowInterface $workflow, string $message) public function __construct(object $subject, string $transitionName, WorkflowInterface $workflow, string $message)
{ {
parent::__construct($message); parent::__construct($message);

View File

@ -20,7 +20,7 @@ use Symfony\Component\Workflow\WorkflowInterface;
*/ */
class UndefinedTransitionException extends TransitionException class UndefinedTransitionException extends TransitionException
{ {
public function __construct($subject, string $transitionName, WorkflowInterface $workflow) public function __construct(object $subject, string $transitionName, WorkflowInterface $workflow)
{ {
parent::__construct($subject, $transitionName, $workflow, sprintf('Transition "%s" is not defined for workflow "%s".', $transitionName, $workflow->getName())); parent::__construct($subject, $transitionName, $workflow, sprintf('Transition "%s" is not defined for workflow "%s".', $transitionName, $workflow->getName()));
} }

View File

@ -30,17 +30,17 @@ class Marking
} }
} }
public function mark($place) public function mark(string $place)
{ {
$this->places[$place] = 1; $this->places[$place] = 1;
} }
public function unmark($place) public function unmark(string $place)
{ {
unset($this->places[$place]); unset($this->places[$place]);
} }
public function has($place) public function has(string $place)
{ {
return isset($this->places[$place]); return isset($this->places[$place]);
} }

View File

@ -46,7 +46,7 @@ final class MethodMarkingStore implements MarkingStoreInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function getMarking($subject): Marking public function getMarking(object $subject): Marking
{ {
$method = 'get'.ucfirst($this->property); $method = 'get'.ucfirst($this->property);
@ -70,7 +70,7 @@ final class MethodMarkingStore implements MarkingStoreInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setMarking($subject, Marking $marking, array $context = []) public function setMarking(object $subject, Marking $marking, array $context = [])
{ {
$marking = $marking->getPlaces(); $marking = $marking->getPlaces();

View File

@ -28,12 +28,9 @@ class Registry
} }
/** /**
* @param object $subject
* @param string|null $workflowName
*
* @return Workflow * @return Workflow
*/ */
public function get($subject, $workflowName = null) public function get(object $subject, string $workflowName = null)
{ {
$matched = null; $matched = null;
@ -54,11 +51,9 @@ class Registry
} }
/** /**
* @param object $subject
*
* @return Workflow[] * @return Workflow[]
*/ */
public function all($subject): array public function all(object $subject): array
{ {
$matched = []; $matched = [];
foreach ($this->workflows as list($workflow, $supportStrategy)) { foreach ($this->workflows as list($workflow, $supportStrategy)) {

View File

@ -29,7 +29,7 @@ final class InstanceOfSupportStrategy implements WorkflowSupportStrategyInterfac
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function supports(WorkflowInterface $workflow, $subject): bool public function supports(WorkflowInterface $workflow, object $subject): bool
{ {
return $subject instanceof $this->className; return $subject instanceof $this->className;
} }

View File

@ -18,5 +18,5 @@ use Symfony\Component\Workflow\WorkflowInterface;
*/ */
interface WorkflowSupportStrategyInterface interface WorkflowSupportStrategyInterface
{ {
public function supports(WorkflowInterface $workflow, $subject): bool; public function supports(WorkflowInterface $workflow, object $subject): bool;
} }

View File

@ -21,10 +21,7 @@ use Symfony\Component\Workflow\Exception\InvalidDefinitionException;
interface DefinitionValidatorInterface interface DefinitionValidatorInterface
{ {
/** /**
* @param Definition $definition
* @param string $name
*
* @throws InvalidDefinitionException on invalid definition * @throws InvalidDefinitionException on invalid definition
*/ */
public function validate(Definition $definition, $name); public function validate(Definition $definition, string $name);
} }

View File

@ -19,7 +19,7 @@ use Symfony\Component\Workflow\Exception\InvalidDefinitionException;
*/ */
class StateMachineValidator implements DefinitionValidatorInterface class StateMachineValidator implements DefinitionValidatorInterface
{ {
public function validate(Definition $definition, $name) public function validate(Definition $definition, string $name)
{ {
$transitionFromNames = []; $transitionFromNames = [];
foreach ($definition->getTransitions() as $transition) { foreach ($definition->getTransitions() as $transition) {

View File

@ -27,7 +27,7 @@ class WorkflowValidator implements DefinitionValidatorInterface
$this->singlePlace = $singlePlace; $this->singlePlace = $singlePlace;
} }
public function validate(Definition $definition, $name) public function validate(Definition $definition, string $name)
{ {
// Make sure all transitions for one place has unique name. // Make sure all transitions for one place has unique name.
$places = array_fill_keys($definition->getPlaces(), []); $places = array_fill_keys($definition->getPlaces(), []);

View File

@ -49,7 +49,7 @@ class Workflow implements WorkflowInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function getMarking($subject) public function getMarking(object $subject)
{ {
$marking = $this->markingStore->getMarking($subject); $marking = $this->markingStore->getMarking($subject);
@ -91,7 +91,7 @@ class Workflow implements WorkflowInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function can($subject, $transitionName) public function can(object $subject, string $transitionName)
{ {
$transitions = $this->definition->getTransitions(); $transitions = $this->definition->getTransitions();
$marking = $this->getMarking($subject); $marking = $this->getMarking($subject);
@ -114,7 +114,7 @@ class Workflow implements WorkflowInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function buildTransitionBlockerList($subject, string $transitionName): TransitionBlockerList public function buildTransitionBlockerList(object $subject, string $transitionName): TransitionBlockerList
{ {
$transitions = $this->definition->getTransitions(); $transitions = $this->definition->getTransitions();
$marking = $this->getMarking($subject); $marking = $this->getMarking($subject);
@ -150,7 +150,7 @@ class Workflow implements WorkflowInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function apply($subject, $transitionName, array $context = []) public function apply(object $subject, string $transitionName, array $context = [])
{ {
$marking = $this->getMarking($subject); $marking = $this->getMarking($subject);
@ -202,7 +202,7 @@ class Workflow implements WorkflowInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function getEnabledTransitions($subject) public function getEnabledTransitions(object $subject)
{ {
$enabledTransitions = []; $enabledTransitions = [];
$marking = $this->getMarking($subject); $marking = $this->getMarking($subject);
@ -249,7 +249,7 @@ class Workflow implements WorkflowInterface
return $this->definition->getMetadataStore(); return $this->definition->getMetadataStore();
} }
private function buildTransitionBlockerListForTransition($subject, Marking $marking, Transition $transition) private function buildTransitionBlockerListForTransition(object $subject, Marking $marking, Transition $transition)
{ {
foreach ($transition->getFroms() as $place) { foreach ($transition->getFroms() as $place) {
if (!$marking->has($place)) { if (!$marking->has($place)) {
@ -272,7 +272,7 @@ class Workflow implements WorkflowInterface
return new TransitionBlockerList(); return new TransitionBlockerList();
} }
private function guardTransition($subject, Marking $marking, Transition $transition): ?GuardEvent private function guardTransition(object $subject, Marking $marking, Transition $transition): ?GuardEvent
{ {
if (null === $this->dispatcher) { if (null === $this->dispatcher) {
return null; return null;
@ -287,7 +287,7 @@ class Workflow implements WorkflowInterface
return $event; return $event;
} }
private function leave($subject, Transition $transition, Marking $marking): void private function leave(object $subject, Transition $transition, Marking $marking): void
{ {
$places = $transition->getFroms(); $places = $transition->getFroms();
@ -307,7 +307,7 @@ class Workflow implements WorkflowInterface
} }
} }
private function transition($subject, Transition $transition, Marking $marking, array $context): array private function transition(object $subject, Transition $transition, Marking $marking, array $context): array
{ {
if (null === $this->dispatcher) { if (null === $this->dispatcher) {
return $context; return $context;
@ -323,7 +323,7 @@ class Workflow implements WorkflowInterface
return $event->getContext(); return $event->getContext();
} }
private function enter($subject, Transition $transition, Marking $marking): void private function enter(object $subject, Transition $transition, Marking $marking): void
{ {
$places = $transition->getTos(); $places = $transition->getTos();
@ -343,7 +343,7 @@ class Workflow implements WorkflowInterface
} }
} }
private function entered($subject, Transition $transition = null, Marking $marking): void private function entered(object $subject, ?Transition $transition, Marking $marking): void
{ {
if (null === $this->dispatcher) { if (null === $this->dispatcher) {
return; return;
@ -361,7 +361,7 @@ class Workflow implements WorkflowInterface
} }
} }
private function completed($subject, Transition $transition, Marking $marking): void private function completed(object $subject, Transition $transition, Marking $marking): void
{ {
if (null === $this->dispatcher) { if (null === $this->dispatcher) {
return; return;
@ -374,7 +374,7 @@ class Workflow implements WorkflowInterface
$this->dispatcher->dispatch($event, sprintf('workflow.%s.completed.%s', $this->name, $transition->getName())); $this->dispatcher->dispatch($event, sprintf('workflow.%s.completed.%s', $this->name, $transition->getName()));
} }
private function announce($subject, Transition $initialTransition, Marking $marking): void private function announce(object $subject, Transition $initialTransition, Marking $marking): void
{ {
if (null === $this->dispatcher) { if (null === $this->dispatcher) {
return; return;

View File

@ -23,51 +23,39 @@ interface WorkflowInterface
/** /**
* Returns the object's Marking. * Returns the object's Marking.
* *
* @param object $subject A subject
*
* @return Marking The Marking * @return Marking The Marking
* *
* @throws LogicException * @throws LogicException
*/ */
public function getMarking($subject); public function getMarking(object $subject);
/** /**
* Returns true if the transition is enabled. * Returns true if the transition is enabled.
* *
* @param object $subject A subject
* @param string $transitionName A transition
*
* @return bool true if the transition is enabled * @return bool true if the transition is enabled
*/ */
public function can($subject, $transitionName); public function can(object $subject, string $transitionName);
/** /**
* Builds a TransitionBlockerList to know why a transition is blocked. * Builds a TransitionBlockerList to know why a transition is blocked.
*
* @param object $subject A subject
*/ */
public function buildTransitionBlockerList($subject, string $transitionName): TransitionBlockerList; public function buildTransitionBlockerList(object $subject, string $transitionName): TransitionBlockerList;
/** /**
* Fire a transition. * Fire a transition.
* *
* @param object $subject A subject
* @param string $transitionName A transition
*
* @return Marking The new Marking * @return Marking The new Marking
* *
* @throws LogicException If the transition is not applicable * @throws LogicException If the transition is not applicable
*/ */
public function apply($subject, $transitionName, array $context = []); public function apply(object $subject, string $transitionName, array $context = []);
/** /**
* Returns all enabled transitions. * Returns all enabled transitions.
* *
* @param object $subject A subject
*
* @return Transition[] All enabled transitions * @return Transition[] All enabled transitions
*/ */
public function getEnabledTransitions($subject); public function getEnabledTransitions(object $subject);
/** /**
* @return string * @return string