public static function getMethodBeforeHandlers(ReflectionMethod $reflMethod) { $ret = array(); foreach ($reflMethod->getAnnotations() as $annotation) { $clazz = null; $aclass = get_class($annotation); if (array_key_exists($aclass, self::$beforeHandlers)) { $clazz = self::$beforeHandlers[$aclass]; } if (!$clazz) { $bclass = \explode(self::NAMESPACE_SEPARATOR, $aclass); $bclass = end($bclass); //die(); foreach (self::$annotationHandlerNamespaces as $ns) { $class = trim($ns, self::NAMESPACE_SEPARATOR) . self::NAMESPACE_SEPARATOR . $bclass . 'Handler'; try { if (class_exists($class)) { $clazz = $class; self::$beforeHandlers[$aclass] = $class; break; } } catch (Exception $e) { //do nothing } } } if ($clazz) { $ret[] = ClassInvoker::getNewInstance($clazz, array('annotation' => $annotation)); } } return $ret; }
private function handleAnnotation(ReflectionMethod $reflMethod, $instance) { $annotation = $reflMethod->getAnnotation(AccessControl::class); $role = self::getRole(); if (!$this->acl->isAllowed($role, $annotation->value)) { throw new UnAuthorizedException(); } }
public function __construct($class, $name) { if (self::$adapterClass !== null) { $this->adapter = new self::$adapterClass($class, $name); } else { parent::__construct($class, $name); } }
private function bindingResultBuild() { $bind = new BindingResult(); $builder = new ValidatorBuilder(); $builder->enableAnnotationMapping(); foreach ($this->modelAttributes as $param) { if (in_array($param, $this->invokeParams)) { foreach ($builder->getValidator()->validate($param) as $offset => $violation) { $bind->offsetSet($offset, $violation); } } } $bindRef = new \ReflectionObject($bind); $propRef = $bindRef->getProperty('map'); $propRef->setAccessible(true); $map = array(); foreach ($this->reflMethod->getParameters() as $param) { if (!$param instanceof BindingResult && $param->getClass()) { $map[$param->getClass()->getName()] = $param->getName(); } } $propRef->setValue($bind, $map); return $bind; }
/** * @covers PhSpring\Reflection\ReflectionMethod::getDeclaringClass */ public function testGetDeclaringClass() { $class = $this->object->getDeclaringClass(); $this->assertInstanceOf(ReflectionClass::class, $class); }