如何检查对象方法是否存在? [重复]

问题描述 投票:0回答:1

我想只在方法getProductgroup存在时使用一些代码。我的第一个方法:

if(isset($item->getProductgroup())){
 $productgroupValidation = 0;
 $productgroupId = $item->getProductgroup()->getUuid();
 foreach($dataField->getProductgroup() as $productgroup){
   $fieldProductgroup = $productgroup->getUuid();
   if($productgroupId==$fieldProductgroup){
       $productgroupValidation = 1;
  }
}

我收到了错误消息:

编译错误:不能对表达式的结果使用isset()(可以使用“null!== expression”代替)

if(($item->getProductgroup())!==NULL){
     $productgroupValidation = 0;
     $productgroupId = $item->getProductgroup()->getUuid();
     foreach($dataField->getProductgroup() as $productgroup){
       $fieldProductgroup = $productgroup->getUuid();
       if($productgroupId==$fieldProductgroup){
           $productgroupValidation = 1;
      }
    }

但是像这样我也收到一条错误信息:

尝试调用类“App \ Entity \ Documents”的名为“getProductgroup”的未定义方法。

php oop object methods isset
1个回答
2
投票

您可以使用函数method_exists来检查方法是否存在于类中。例如

if(method_exists('CLASS_NAME', 'METHOD_NAME') ) 
   echo "it does exist!"; 
else 
   echo "nope, it is not there...";

在你的代码中尝试

if(method_exists($item, 'getProductgroup')){
$productgroupValidation = 0;
if(method_exists($item->getProductgroup(), 'getUuid'))
{
   $productgroupId = $item->getProductgroup()->getUuid();
   foreach($dataField->getProductgroup() as $productgroup)
   {
        $fieldProductgroup = $productgroup->getUuid();
        if($productgroupId==$fieldProductgroup){
            $productgroupValidation = 1;
        }
    }
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.