getKind() public method

Returns the kind of point filter
public getKind ( ) : integer
return integer
 /**
  * Control flow below constructor
  *
  * @param Pointcut $pointcut Instance of pointcut, that will be used for matching
  * @throws \InvalidArgumentException if filter doesn't support methods
  */
 public function __construct(Pointcut $pointcut)
 {
     $this->internalClassFilter = $pointcut->getClassFilter();
     $this->internalPointFilter = $pointcut;
     if (!($this->internalPointFilter->getKind() & PointFilter::KIND_METHOD)) {
         throw new \InvalidArgumentException("Only method filters are valid for control flow");
     }
 }
Beispiel #2
0
 /**
  * Or constructor
  *
  * @param PointFilter $first First part of filter
  * @param PointFilter $second Second part of filter to match
  */
 public function __construct(PointFilter $first, PointFilter $second)
 {
     $this->kind = $first->getKind() | $second->getKind();
     $this->first = $first;
     $this->second = $second;
 }
Beispiel #3
0
 /**
  * Returns list of advices from advisor and point filter
  *
  * @param ReflectionClass|ParsedReflectionClass $class Class to inject advices
  * @param Aop\PointcutAdvisor $advisor Advisor for class
  * @param string $advisorId Identifier of advisor
  * @param Aop\PointFilter $filter Filter for points
  *
  * @return array
  */
 private function getAdvicesFromAdvisor($class, Aop\PointcutAdvisor $advisor, $advisorId, Aop\PointFilter $filter)
 {
     $classAdvices = array();
     // Check methods in class only for method filters
     if ($filter->getKind() & Aop\PointFilter::KIND_METHOD) {
         $mask = ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED;
         foreach ($class->getMethods($mask) as $method) {
             /** @var $method ReflectionMethod| */
             if ($filter->matches($method)) {
                 $prefix = $method->isStatic() ? AspectContainer::STATIC_METHOD_PREFIX : AspectContainer::METHOD_PREFIX;
                 $classAdvices[$prefix][$method->name][$advisorId] = $advisor->getAdvice();
             }
         }
     }
     // Check properties in class only for property filters
     if ($filter->getKind() & Aop\PointFilter::KIND_PROPERTY) {
         $mask = ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED;
         foreach ($class->getProperties($mask) as $property) {
             /** @var $property ReflectionProperty */
             if ($filter->matches($property)) {
                 $classAdvices[AspectContainer::PROPERTY_PREFIX][$property->name][$advisorId] = $advisor->getAdvice();
             }
         }
     }
     return $classAdvices;
 }
Beispiel #4
0
 /**
  * Not constructor
  *
  * @param PointFilter $first First part of filter
  */
 public function __construct(PointFilter $first)
 {
     $this->kind = $first->getKind();
     $this->first = $first;
 }
Beispiel #5
0
 /**
  * Returns list of advices from advisor and point filter
  *
  * @param ReflectionClass $class Class to inject advices
  * @param Aop\PointcutAdvisor $advisor Advisor for class
  * @param string $advisorId Identifier of advisor
  * @param Aop\PointFilter $filter Filter for points
  *
  * @return array
  */
 private function getAdvicesFromAdvisor(ReflectionClass $class, Aop\PointcutAdvisor $advisor, $advisorId, Aop\PointFilter $filter)
 {
     $classAdvices = [];
     $filterKind = $filter->getKind();
     // Check class only for class filters
     if ($filterKind & Aop\PointFilter::KIND_CLASS) {
         if ($filter->matches($class)) {
             // Dynamic initialization
             if ($filterKind & Aop\PointFilter::KIND_INIT) {
                 $classAdvices[AspectContainer::INIT_PREFIX]['root'][$advisorId] = $advisor->getAdvice();
             }
             // Static initalization
             if ($filterKind & Aop\PointFilter::KIND_STATIC_INIT) {
                 $classAdvices[AspectContainer::STATIC_INIT_PREFIX]['root'][$advisorId] = $advisor->getAdvice();
             }
         }
     }
     // Check methods in class only for method filters
     if ($filterKind & Aop\PointFilter::KIND_METHOD) {
         $mask = ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED;
         foreach ($class->getMethods($mask) as $method) {
             /** @var $method ReflectionMethod| */
             if ($filter->matches($method)) {
                 $prefix = $method->isStatic() ? AspectContainer::STATIC_METHOD_PREFIX : AspectContainer::METHOD_PREFIX;
                 $classAdvices[$prefix][$method->name][$advisorId] = $advisor->getAdvice();
             }
         }
     }
     // Check properties in class only for property filters
     if ($filterKind & Aop\PointFilter::KIND_PROPERTY) {
         $mask = ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED;
         foreach ($class->getProperties($mask) as $property) {
             /** @var $property ReflectionProperty */
             if ($filter->matches($property) && !$property->isStatic()) {
                 $classAdvices[AspectContainer::PROPERTY_PREFIX][$property->name][$advisorId] = $advisor->getAdvice();
             }
         }
     }
     return $classAdvices;
 }