getMethods(ReflectionMethod::IS_PUBLIC) as $method) { $methodName = strtolower($method->name); /* This method is not extend from parent */ if($method->getFileName() != $controlPath) continue; if($methodName == '__construct') continue; $params = $method->getParameters(); foreach($params as $param) { $paramName = $param->getName(); if($param->isDefaultValueAvailable()) $defaultValue .= "\$paramDefaultValue['$className']['$methodName']['$paramName'] = '" . $param->getDefaultValue() . "';\n"; } } } /* Set ext control default value.*/ $extControlPath = $module . '/ext/control/'; if(is_dir($extControlPath)) { echo "Seting value for extension of $className\n"; chdir($extControlPath); $extControls = glob($extControlPath . '*'); if(empty($extControls)) continue; foreach($extControls as $extControl) { $methodName = strtolower(substr(basename($extControl), 0, strrpos(basename($extControl), '.'))); $extFile = file_get_contents($extControl); $extLines = explode("\n", $extFile); foreach($extLines as $line) { $line = trim($line); if(preg_match("/^class +($className) +extends +/i", $line, $class) == 1) $extClassName = strtolower($class[1]); if(preg_match("/^class +(my$className) +extends +/i", $line, $class) == 1) $extClassName = strtolower($class[1]); if(preg_match("/^public +function +$methodName/i", $line) == 1) { $params = strstr($line, '('); if(preg_match('/^(.+)$/', $params) == 0) continue; $params = trim(str_replace(array('(', ')'), '', $params)); $params = preg_replace('/, *\$/', ',\$', $params); $params = explode(',$', trim($params, '$')); foreach($params as $param) { if(strpos($param, '=') === false) continue; $pair = explode('=', $param); $paramName = trim($pair[0]); $paramValue = trim(end($pair)); $defaultValue .= "\$paramDefaultValue['$extClassName']['$methodName']['$paramName'] = $paramValue;\n"; } } } } } } if($defaultValue) { echo "Writing default value to file\n"; $valueFile = "$line) { if(strpos(trim($line), '