From f7c903e0f10c085b3780a341fbb007858a422b30 Mon Sep 17 00:00:00 2001 From: Dominique Fournier Date: Mon, 23 May 2016 19:08:43 +0000 Subject: [PATCH] cli : allow the controllers\\ to be optional cli : allow the models\\ or controllers\\ to be optional if the name of the class is unique git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@2728 bf3deb0d-5f1a-0410-827f-c0cc1f45334c --- cli.php | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/cli.php b/cli.php index 610b064..a08946c 100644 --- a/cli.php +++ b/cli.php @@ -116,26 +116,40 @@ class cli foreach ($files as $file) { if (strpos ($file, "_")) - $classes[$file] = substr (strstr ($file, "_"), 1, -4); + $classes[substr (strstr ($file, "_"), 1, -4)] = $file; else - $classes[$file] = str_replace ("/", "\\", substr ($file, 0, -4)); + $classes[str_replace ("/", "\\", substr ($file, 0, -4))] = $file; + } + + // Check if there is some classes which can be shorted (classes only in + // controllers or only in models + $shortClasses = array (); + foreach ($classes as $class=>$file) + { + if (array_key_exists (substr (strstr ($class, "\\"), 1), $shortClasses)) + unset ($shortClasses[substr (strstr ($class, "\\"), 1)]); + else + $shortClasses[substr (strstr ($class, "\\"), 1)] = $class; } if (isset ($argv[0]) && $argv[0] === "-listonly") { // Lists the classes available in controllers and models if expert mode - // Don't do any presentation to be parseable (by bash completion by example) - echo implode ("\n", $classes)."\n"; + // Don't do any presentation to be parseable (by bash completion by + // example) + $classes = array_merge ($classes, $shortClasses); + echo implode ("\n", array_keys ($classes))."\n"; exit; } if (isset ($argv[0]) && $argv[0] === "-list") { // Lists the classes available in controllers and models if expert mode + $classes = array_merge ($classes, $shortClasses); foreach ($classes as $key=>$class) $classes[$key] = str_replace ("\\", "\\\\", $class); echo "List of classes available :\n"; - echo " ".implode ("\n ", $classes)."\n"; + echo " ".implode ("\n ", array_keys ($classes))."\n"; echo "Usage : ".$launcher; if ($this->EXPERT) echo " -expert"; echo " -listmethods \n"; @@ -150,10 +164,12 @@ class cli if (!isset ($argv[1])) die ("Missing parameter 'class'\n"); $class = $argv[1]; - if (!in_array ($class, $classes)) + if (! array_key_exists ($class, $classes) && + ! array_key_exists ($class, $shortClasses)) die ("Unknown class '$class'\n"); - $classesNames = array_keys ($classes, $class); - $file = reset ($classesNames); + if (array_key_exists ($class, $shortClasses)) + $class = $shortClasses[$class]; + $file = $classes[$class]; require_once ($file); $refclass = new ReflectionClass ($class); // Look at constructor parameters @@ -225,12 +241,14 @@ class cli if (!isset ($argv[0])) die ("No class to execute provided\n"); $class = $argv[0]; - if (!in_array ($class, $classes)) + if (! array_key_exists ($class, $classes) && + ! array_key_exists ($class, $shortClasses)) die ("Unknown class '$class'\n"); - array_shift ($argv); - $classesNames = array_keys ($classes, $class); - $file = reset ($classesNames); + if (array_key_exists ($class, $shortClasses)) + $class = $shortClasses[$class]; + $file = $classes[$class]; require_once ($file); + array_shift ($argv); if (!isset ($argv[0])) die ("No method for class '$class' to execute\n"); $method = $argv[0];