#! /usr/local/bin/php -n | +----------------------------------------------------------------------+ */ /* This script lists extension-, class- and method names that contain any underscores. It omits magic names (e.g. anything that starts with two underscores but no more). */ $cnt = 0; $err = 0; $classes = array_merge(get_declared_classes(), get_declared_interfaces()); $extensions = array(); foreach(get_loaded_extensions() as $ext) { $cnt++; if (strpos($ext, "_") !== false) { $err++; $extensions[$ext] = array(); } } $cnt += count($classes); foreach($classes as $c) { if (strpos($c, "_") !== false) { $err++; $ref = new ReflectionClass($c); if (!($ext = $ref->getExtensionName())) {; $ext = $ref->isInternal() ? "" : ""; } if (!array_key_exists($ext, $extensions)) { $extensions[$ext] = array(); } $extensions[$ext][$c] = array(); foreach(get_class_methods($c) as $method) { $cnt++; if (strpos(substr($method, substr($method, 0, 2) != "__" ? 0 : 2), "_") !== false) { $err++; $extensions[$ext][$c][] = $method; } } } else { $cnt += count(get_class_methods($c)); } } ksort($extensions); foreach($extensions as $ext => &$classes) { echo "Extension: $ext\n"; ksort($classes); foreach($classes as $classname => &$methods) { echo " Class: $classname\n"; ksort($methods); foreach($methods as $method) { echo " Method: $method\n"; } } } printf("\n"); printf("Names: %5d\n", $cnt); printf("Errors: %5d (%.1f%%)\n", $err, round($err * 100 / $cnt, 1)); printf("\n"); ?>