function filter_classes_by_notes($classes, $notes) { if (!is_array($notes)) { $notes = array($notes); } $parser = new \Nope\Parser(); $found = array(); foreach ($classes as $c) { $classNotes = $parser->parseClass(new \ReflectionClass($c)); foreach ($notes as $k) { if (isset($classNotes->notes[$k])) { $found[] = $c; } } } return $found; }
require "/home/bl/web/bm/big/config.php"; require __DIR__ . '/../vendor/autoload.php'; $iter = 10; $p = new Nope\FastParser(); $t = microtime(true); $cnt = 0; for ($i = 0; $i < $iter; $i++) { $cnt += $p->parseClass(\Big\CRM\Data\IOVersion::class) == true; } var_dump((microtime(true) - $t) / $iter * 1000); exit; $p = new Nope\Parser(); $t = microtime(true); $cnt = 0; for ($i = 0; $i < $iter; $i++) { $cnt += $p->parseClass(\Big\CRM\Data\IOVersion::class) == true; } var_dump((microtime(true) - $t) / $iter * 1000); exit; } namespace Nope { classdefs: class FastParser { const S_NONE = 0; const S_NAME = 1; const S_JSON = 2; public function parseClass($class) { if (!$class instanceof \ReflectionClass) { $class = new \ReflectionClass($class);