function callFn($fn, $params) { $n = 0; foreach ($fn->getParameters() as $param) { if (!$param->isOptional()) { ++$n; } } $showUsage = false; if (count($params) < $n) { $showUsage = true; print "*** param error: minimal count of params is {$n}\n"; } foreach ($params as &$p) { if ($p == "null") { $p = null; } elseif ($p == "?") { $showUsage = true; break; } } if ($showUsage) { print "Usage:\n"; showMethod($fn); return; } $fn->invokeArgs(new WebAPI(true), $params); }
function showMethods($cls, $keyword = null) { if ($keyword) { $keyword = strtolower($keyword); } echo "Available method: \n"; $cls = new ReflectionClass($cls); foreach ($cls->getMethods() as $m) { $doc = $m->getDocComment(); if ($doc !== false && strstr($doc, "@api") !== false) { showMethod($m, $keyword); } } }
$h->execSql($s); } else { if (preg_match('/^(\\w+)\\s*\\((.*)\\)/', $s, $ms) || preg_match('/^(\\w+)\\s*$/', $s, $ms)) { try { $fn = $ms[1]; @($param = $ms[2] ?: ''); $refm = new ReflectionMethod('UpgHelper', $ms[1]); try { eval('$r = $h->' . "{$fn}({$param});"); if (is_scalar($r)) { echo "=== Return {$r}\n"; } } catch (Exception $ex) { print "*** error: " . $ex->getMessage() . "\n"; echo $ex->getTraceAsString(); showMethod($refm); } } catch (ReflectionException $ex) { echo "*** unknown call. try help()\n"; } } else { echo "*** bad format. try help()\n"; } } } } catch (Exception $e) { echo $e; echo "\n"; } } function upgradeAuto()