PhpDeal\Aspect\InvariantCheckerAspect::invariantContract PHP Method

invariantContract() public method

Verifies invariants for contract class
public invariantContract ( Go\Aop\Intercept\MethodInvocation $invocation ) : mixed
$invocation Go\Aop\Intercept\MethodInvocation
return mixed
    public function invariantContract(MethodInvocation $invocation)
    {
        $object = $invocation->getThis();
        $args = $this->fetchMethodArguments($invocation);
        $class = $invocation->getMethod()->getDeclaringClass();
        if ($class->isCloneable()) {
            $args['__old'] = clone $object;
        }
        $result = $invocation->proceed();
        $args['__result'] = $result;
        $allContracts = $this->fetchAllContracts($class);
        $this->ensureContracts($invocation, $allContracts, $object, $class->name, $args);
        return $result;
    }