php-nacos
php-nacos copied to clipboard
Model::decode()容错处理方案
此方法会遍历$instanceJson参数并将值渲染到调用此方法的子类属性,如果$instanceJson和子类的属性不匹配,则会报找不到方法的错误
原方法如下
public static function decode($instanceJson)
{
$instance = new static();
foreach (json_decode($instanceJson) as $propertyName => $propertyValue) {
$instance->{"set" . ucfirst($propertyName)}($propertyValue);
}
return $instance;
}
方法改进
public static function decode($instanceJson)
{
$instance = new static();
foreach (json_decode($instanceJson, true) as $propertyName => $propertyValue) {
$method = "set" . ucfirst($propertyName);
// 在此处增加判断方法是否存在判断,如$instanceJson返回多余参数,则不进行渲染
if (method_exists($instance, $method)) {
$instance->{$method}($propertyValue);
}
}
return $instance;
}