Go\Aop\Framework\AbstractJoinpoint::sortAdvices PHP Метод

sortAdvices() публичный статический Метод

Sorts advices by priority
public static sortAdvices ( array $advices ) : array | Go\Aop\Advice[]
$advices array
Результат array | Go\Aop\Advice[] Sorted list of advices
    public static function sortAdvices(array $advices)
    {
        $sortedAdvices = $advices;
        uasort($sortedAdvices, function (Advice $first, Advice $second) {
            switch (true) {
                case $first instanceof AdviceBefore && !$second instanceof AdviceBefore:
                    return -1;
                case $first instanceof AdviceAround && !$second instanceof AdviceAround:
                    return 1;
                case $first instanceof AdviceAfter && !$second instanceof AdviceAfter:
                    return $second instanceof AdviceBefore ? 1 : -1;
                case $first instanceof OrderedAdvice && $second instanceof OrderedAdvice:
                    return $first->getAdviceOrder() - $second->getAdviceOrder();
                default:
                    return 0;
            }
        });
        return $sortedAdvices;
    }

Usage Example

Пример #1
0
 /**
  * @dataProvider sortingTestSource
  */
 public function testSortingLogic($advices, array $order = [])
 {
     $advices = AbstractJoinpoint::sortAdvices($advices);
     foreach ($advices as $advice) {
         $expected = array_shift($order);
         $this->assertInstanceOf($expected, $advice);
     }
 }
All Usage Examples Of Go\Aop\Framework\AbstractJoinpoint::sortAdvices