From fd2e1b5e421256bca62d084b46ace2f04fab79b3 Mon Sep 17 00:00:00 2001 From: Bashar Date: Wed, 25 Feb 2015 05:41:28 +1100 Subject: [PATCH] Added Namespace support, cleant a bit code and added a sample folder for testing purpose --- README => README.md | 0 lib/appController.php | 4 +-- lib/codeCompare.php | 59 ++++++++++++++++++++++++++++---------- lib/textUI.php | 1 - sample/versionA/class1.php | 9 ++++++ sample/versionA/class2.php | 6 ++++ sample/versionB/class1.php | 9 ++++++ sample/versionB/class3.php | 3 ++ 8 files changed, 73 insertions(+), 18 deletions(-) rename README => README.md (100%) create mode 100644 sample/versionA/class1.php create mode 100644 sample/versionA/class2.php create mode 100644 sample/versionB/class1.php create mode 100644 sample/versionB/class3.php diff --git a/README b/README.md similarity index 100% rename from README rename to README.md diff --git a/lib/appController.php b/lib/appController.php index 53b3685..f2cb3a5 100755 --- a/lib/appController.php +++ b/lib/appController.php @@ -51,7 +51,7 @@ class appController */ public static function parseParameters(array $array = array()) { - $result = array(); + $results = array(); // Check what options were called $cpt = 3; @@ -126,7 +126,7 @@ public static function compareMethods($results, $path1, $path2) { $changed = array(); - echo 'Comparing methods between V1:"' . $path1 . '" and V2:"' . $path2 . '"' . PHP_EOL; + echo PHP_EOL . 'Comparing methods between V1:"' . $path1 . '" and V2:"' . $path2 . '"' . PHP_EOL; foreach($results[0] as $className => $classInfo) { $msg = true; diff --git a/lib/codeCompare.php b/lib/codeCompare.php index a007616..9ae83e1 100755 --- a/lib/codeCompare.php +++ b/lib/codeCompare.php @@ -41,8 +41,22 @@ * @since File available since Release 1.0.0 */ +define('TMP_PATH', sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'apiCompare'); -define('TMP_PATH', '/tmp/apiCompare'); +if (!defined('T_NAMESPACE')) +{ + /** + * This is just for backword compatibilty with previous versions + * Token -1 will never exists but we just want to avoid having undefined + * constant + */ + define('T_NAMESPACE', -1); + define('T_NS_SEPARATOR', -1); +} +if (!defined('T_TRAIT')) +{ + define('T_TRAIT', -1); +} /** * Code comparator class @@ -82,6 +96,7 @@ public static function parseFolder($folder) $results = array_merge($results, $classNames); } } + return $results; } @@ -96,13 +111,38 @@ private static function getClassesFromFile($file) $classes = array(); $tokens = token_get_all(file_get_contents($file)); $nbtokens = count($tokens); - - $classCpt = 0; + $currentClass = null; + $namespace = null; for($i = 0 ; $i < $nbtokens ; $i++) { switch($tokens[$i][0]) { + case T_NAMESPACE: + $i+=2; + while ($tokens[$i][0] === T_STRING || $tokens[$i][0] === T_NS_SEPARATOR) + { + $namespace .= $tokens[$i++][1]; + } + break; + + case T_INTERFACE: + case T_CLASS: + case T_TRAIT: + $i+=2; + if ($namespace) + { + $currentClass = strtolower($namespace . '\\' . $tokens[$i][1]); + } + else + { + $currentClass = strtolower($tokens[$i][1]); + } + + $classes[$currentClass]['fileName'] = $file; + $classes[$currentClass]['methods'] = array(); + break; + // Retrieve methods case T_FUNCTION: $i+=2; @@ -118,18 +158,7 @@ private static function getClassesFromFile($file) ++$i; } - break; - - // Retrieve classes and interfaces - case T_INTERFACE: - case T_CLASS: - $i+=2; - ++$classCpt; - $classes[$tokens[$i][1]]['fileName'] = $file; - $classes[$tokens[$i][1]]['methods'] = array(); - - $currentClass = $tokens[$i][1]; - break; + break; } } diff --git a/lib/textUI.php b/lib/textUI.php index 00149d2..16949a6 100755 --- a/lib/textUI.php +++ b/lib/textUI.php @@ -78,7 +78,6 @@ public static function displayHelp() public static function displayHeader() { - echo `clear`; echo PHP_EOL . self::COLOR_BOLD . 'Code Comparator ver1.0 by Bashar Al-Fallouji' . PHP_EOL . self::COLOR_NORMAL; } } diff --git a/sample/versionA/class1.php b/sample/versionA/class1.php new file mode 100644 index 0000000..4a20b3e --- /dev/null +++ b/sample/versionA/class1.php @@ -0,0 +1,9 @@ +