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
This commit is contained in:
2016-05-23 19:08:43 +00:00
parent 7d00d6d315
commit f7c903e0f1

42
cli.php
View File

@@ -116,26 +116,40 @@ class cli
foreach ($files as $file) foreach ($files as $file)
{ {
if (strpos ($file, "_")) if (strpos ($file, "_"))
$classes[$file] = substr (strstr ($file, "_"), 1, -4); $classes[substr (strstr ($file, "_"), 1, -4)] = $file;
else 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") if (isset ($argv[0]) && $argv[0] === "-listonly")
{ {
// Lists the classes available in controllers and models if expert mode // Lists the classes available in controllers and models if expert mode
// Don't do any presentation to be parseable (by bash completion by example) // Don't do any presentation to be parseable (by bash completion by
echo implode ("\n", $classes)."\n"; // example)
$classes = array_merge ($classes, $shortClasses);
echo implode ("\n", array_keys ($classes))."\n";
exit; exit;
} }
if (isset ($argv[0]) && $argv[0] === "-list") if (isset ($argv[0]) && $argv[0] === "-list")
{ {
// Lists the classes available in controllers and models if expert mode // Lists the classes available in controllers and models if expert mode
$classes = array_merge ($classes, $shortClasses);
foreach ($classes as $key=>$class) foreach ($classes as $key=>$class)
$classes[$key] = str_replace ("\\", "\\\\", $class); $classes[$key] = str_replace ("\\", "\\\\", $class);
echo "List of classes available :\n"; echo "List of classes available :\n";
echo " ".implode ("\n ", $classes)."\n"; echo " ".implode ("\n ", array_keys ($classes))."\n";
echo "Usage : ".$launcher; echo "Usage : ".$launcher;
if ($this->EXPERT) echo " -expert"; if ($this->EXPERT) echo " -expert";
echo " -listmethods <class>\n"; echo " -listmethods <class>\n";
@@ -150,10 +164,12 @@ class cli
if (!isset ($argv[1])) if (!isset ($argv[1]))
die ("Missing parameter 'class'\n"); die ("Missing parameter 'class'\n");
$class = $argv[1]; $class = $argv[1];
if (!in_array ($class, $classes)) if (! array_key_exists ($class, $classes) &&
! array_key_exists ($class, $shortClasses))
die ("Unknown class '$class'\n"); die ("Unknown class '$class'\n");
$classesNames = array_keys ($classes, $class); if (array_key_exists ($class, $shortClasses))
$file = reset ($classesNames); $class = $shortClasses[$class];
$file = $classes[$class];
require_once ($file); require_once ($file);
$refclass = new ReflectionClass ($class); $refclass = new ReflectionClass ($class);
// Look at constructor parameters // Look at constructor parameters
@@ -225,12 +241,14 @@ class cli
if (!isset ($argv[0])) if (!isset ($argv[0]))
die ("No class to execute provided\n"); die ("No class to execute provided\n");
$class = $argv[0]; $class = $argv[0];
if (!in_array ($class, $classes)) if (! array_key_exists ($class, $classes) &&
! array_key_exists ($class, $shortClasses))
die ("Unknown class '$class'\n"); die ("Unknown class '$class'\n");
array_shift ($argv); if (array_key_exists ($class, $shortClasses))
$classesNames = array_keys ($classes, $class); $class = $shortClasses[$class];
$file = reset ($classesNames); $file = $classes[$class];
require_once ($file); require_once ($file);
array_shift ($argv);
if (!isset ($argv[0])) if (!isset ($argv[0]))
die ("No method for class '$class' to execute\n"); die ("No method for class '$class' to execute\n");
$method = $argv[0]; $method = $argv[0];