$excluded methods to be ignored * * @return ReflectionMethod[] */ public static function getProxiedMethods(ReflectionClass $class, ?array $excluded = null): array { return self::doFilter($class, $excluded ?? self::DEFAULT_EXCLUDED); } /** * @param ReflectionClass $class reflection class from which methods should be extracted * @param array $excluded methods to be ignored * * @return ReflectionMethod[] */ public static function getAbstractProxiedMethods(ReflectionClass $class, ?array $excluded = null): array { return self::doFilter($class, $excluded ?? self::DEFAULT_EXCLUDED, true); } /** * @param array $excluded * * @return array */ private static function doFilter(ReflectionClass $class, array $excluded, bool $requireAbstract = false): array { $ignored = array_flip(array_map('strtolower', $excluded)); return array_values(array_filter( $class->getMethods(ReflectionMethod::IS_PUBLIC), static function (ReflectionMethod $method) use ($ignored, $requireAbstract): bool { return (! $requireAbstract || $method->isAbstract()) && ! ( array_key_exists(strtolower($method->getName()), $ignored) || self::methodCannotBeProxied($method) ); } )); } /** * Checks whether the method cannot be proxied */ private static function methodCannotBeProxied(ReflectionMethod $method): bool { return $method->isConstructor() || $method->isFinal() || $method->isStatic(); } } __halt_compiler();----SIGNATURE:----hcphP9QgwryGyERlVuZKByRMoAjQowBwXGESoxpOusudTiUhbtjtC6RpqT5bMGvFQehUlvHhJUZWDmvJa26IiHGuh9aYHAmsHKqPDZ7DvBR4tBpd1d0xSYYNk6BANKC5yYGEJEzIkzSqLctCB+oLNgBvAZZVbGJnsahsWR1lYLxaZ/LQBiA9Z8M8vA3PXkfUkSYJn6GrwCMDISzLWqixKZpN3vdMev+RT5JguQ51yzLst5ZKtmAI04BnjMadmf5TGZc7M8CaSkfUIlTNCcc2b/8JRCL/21/YS2Ah3w+xzW9XfT1HGLeRtw+TK115sjxSR0Wqo03ZLcHouIMWxgZD/ns+F6ZbBZdilwlZ7RjvLiyr9fz8UvNB5Tkg/OnLhS3uUml59s2kvK9Arsf7Dl4jOX5DrZkqUPagWKFBOxj77Hx3IchM1Fa/RikRI5T8ewBpyxzDxQeW5INeOc/wgQhXGaRTsYUScq79G7H3pXDkl019dUEyl05V64aoHGkLDOaPpiyxiljf1XJohv5OT0Jae5MYPxoTCwoh8bj5dmivs9h6sKDbFndx5LO3eUOIgD4vWpzzvWAvBgdUSsvlBsg+a6r/JBg3N48CJbUkRlXtPH9gpuDd/vAob+mi585rEl9GfJhzByUgdUabJMX9eX1f5xTSUPdtrmhOBd7brbtRr/A=----ATTACHMENT:----MjIyNzAzOTM5OTM1NjgzOCAyMjU4NTQ1NzE3MDAzMjIgNjk0NTg2NDA3NjY1MDk3MQ==