public static function isFieldsEmpty($arrFields = array()) {
$traceList = debug_backtrace();
array_shift($traceList);
if (empty($traceList)) {
log("ERROR no caller. backtrace list:" . json_encode(debug_backtrace()));
return false;
}
$callTrace = $traceList[0];
$callRef = new ReflectionClass($callTrace['class']);
$method = $callRef->getMethod($callTrace['function']);
$objParams = $method->getParameters();
$arrInput = array();
foreach ($objParams as $i => $objParam) {
$arrInput[$objParam->name] = $callTrace['args'][$i];
}
$emptyFieldList = array();
foreach ($arrInput as $paramName => $paramValue) {
if (empty($arrFields) || in_array($paramName, $arrFields)) {
if (empty($paramValue)) {
$emptyFieldList[] = $paramName;
}
}
}
if (empty($emptyFieldList)) {
return false;
} else {
$warningStr = "class " . $callTrace['class'] . " method" . $callTrace['method'] . " param error. fields:";
$warningStr .= json_encode($emptyFieldList);
log($warningStr);
return true;
}
}
class A {
public static function getVal($a, $b, $c, $d) {
if (Kidtutor_Util_Valid::isFieldsEmpty(array('a'))) {
return false;
}
}
}
A::getVal(0, 0, 0, 1)