17 private static $excludeds=[
"__construct",
"isValid",
"initialize",
"finalize",
"onInvalidControl",
"loadView",
"forward",
"redirectToRoute",
"getView",
"message",
"loadDefaultView",
"getDefaultViewName",
"showSimpleMessage",
"showConfMessage" ];
31 $ns=$config[
"mvcNS"][
"controllers"];
32 if ($ns !==
"" && $ns !== null) {
39 $url=\substr($url, 0, strlen($url) - 1);
40 $u=\explode(
"/", $url);
42 if (\class_exists($u[0])) {
43 $controllerClass=$u[0];
46 if (\method_exists($controllerClass, $u[1])) {
47 $method=new \ReflectionMethod($u[0], $u[1]);
48 $r=self::scanMethod($controllerClass, $method);
56 public static function init() {
63 }
catch ( \Exception $e ) {
67 foreach ( $files as $file ) {
70 if (isset($restCtrls[$controllerClass]) ===
false) {
71 self::$controllers[]=$controllerClass;
72 $reflect=new \ReflectionClass($controllerClass);
73 if (!$reflect->isAbstract() && $reflect->isSubclassOf(
"Ubiquity\controllers\Controller") && ! $reflect->isSubclassOf(
"Ubiquity\controllers\seo\SeoController")) {
74 $methods=$reflect->getMethods(\ReflectionMethod::IS_PUBLIC);
75 foreach ( $methods as $method ) {
76 $r=self::scanMethod($controllerClass, $method);
87 private static function scanMethod($controllerClass, \ReflectionMethod $method) {
89 if (\array_search($method->name, self::$excludeds) ===
false && !
UString::startswith($method->name,
"_")) {
94 if ($param->isOptional() && !$param->isVariadic()) {
95 $defaults[$param->name]=$param->getDefaultValue();
149 $reflect=new \ReflectionClass($this->controller);
static initWithPath($url)
static scanMethod($controllerClass, \ReflectionMethod $method)
static getAnnotations($controllerName, $actionName)
__construct($controller="", $action="", $parameters=[], $dValues=[], $annots=[])
setController($controller)
setParameters($parameters)
static getControllersFiles(&$config, $silent=false)
static endswith($hay, $needle)
static startswith($hay, $needle)
static getClassFullNameFromFile($filePathName, $backSlash=false)
get the full name (name \ namespace) of a class from its file path result example: (string) "I\Am\The...