Esempio n. 1
0
    }
    function handleMethod(Module $module, ReflectionMethod $method, $params)
    {
        $name = $method->getName();
        // имя метода
        $args = $method->getParameters();
        // имя аргумента метода
        //проверка являеется ли метод "установщиком" (set)
        if (count($args) != 1 || substr($name, 0, 3) != "set") {
            return false;
        }
        $property = strtolower(substr($name, 3));
        // получаем имя свойства
        if (!isset($params[$property])) {
            // проверяем есть ли такое свойство в асоциативном массиве с параметрами
            return false;
        }
        $arg_class = $args[0]->getClass();
        // узнаём тип аргумента метода установщика
        if (empty($arg_class)) {
            // если у аргумента нету типа, значит это не объект
            $method->invoke($module, $params[$property]);
            // если не объект, то передаём нашему "модулю" обычный параметр
        } else {
            $method->invoke($module, $arg_class->newInstance($params[$property]));
            // если это объект, то передаём тип (класс) аргумента, и его значение, создаём объект и передаем его нашему "модулю"
        }
    }
}
$o = new ModuleRunner();
$o->init();
Esempio n. 2
0
                $this->handleMethod($moduleObj, $methodflection, $params);
            }
            array_push($this->modules, $moduleObj);
        }
    }
    function handleMethod(Module $modleObj, ReflectionMethod $methodReflection, $params)
    {
        //var_dump($methodReflection);
        $name = $methodReflection->getName();
        $args = $methodReflection->getParameters();
        if (count($args) != 1 or substr($name, 0, 3) != 'set') {
            return false;
        }
        $property = strtolower(substr($name, 3));
        if (!isset($params[$property])) {
            return false;
        }
        $args_class = $args[0]->getClass();
        if (empty($args_class)) {
            $methodReflection->invoke($modleObj, $params[$property]);
        } else {
            $methodReflection->invoke($modleObj, $args_class->newInstance($params[$property]));
        }
    }
}
$handle = new ModuleRunner();
$handle->init();
/*$ftpreflection=new ReflectionClass('FtpModule');
$rs=$ftpreflection->getMethods();
var_dump($rs);
var_dump($rs[0]->getName());*/
Esempio n. 3
0
                throw new Exception("unknown module type: {$modulename}");
            }
            $module = $module_class->newInstance();
            foreach ($module_class->getMethods() as $method) {
                $this->handleMethod($module, $method, $params);
                // we cover handleMethod() in a future listing!
            }
            array_push($this->modules, $module);
        }
    }
    function handleMethod(Module $module, ReflectionMethod $method, $params)
    {
        $name = $method->getName();
        $args = $method->getParameters();
        if (count($args) != 1 || substr($name, 0, 3) != "set") {
            return false;
        }
        $property = strtolower(substr($name, 3));
        if (!isset($params[$property])) {
            return false;
        }
        $arg_class = $args[0]->getClass();
        if (empty($arg_class)) {
            $method->invoke($module, $params[$property]);
        } else {
            $method->invoke($module, $arg_class->newInstance($params[$property]));
        }
    }
}
$test = new ModuleRunner();
$test->init();