我有这段代码:
$i = 0;
foreach ($entities as $entity)
{
$person = $entity->getPerson();
echo "Iteration: " . $i . " Person Type: " . get_class($person);
if ($person instanceof NaturalPerson)
{
$id = $person->getIdentificationType() . $person->getCI();
}
else
{
$id = $person->getIdentificationType() . $person->getRIF();
}
$i++;
$order['id'] = $id;
$orders[] = $order;
}
但是每当我运行该函数时,我都会收到此错误:
尝试在课堂上调用方法“getRIF” “Tanane \ FrontendBundle \ Entity \ NaturalPerson”中 /var/www/html/tanane/src/Tanane/BackendBundle/Controller/OrderController.php 114.你的意思是打电话:“getCI”,“getId”?
我不知道为什么,因为第一行的echo
返回了这个:
Iteration: 0 Person Type: Tanane\FrontendBundle\Entity\LegalPerson
Iteration: 1 Person Type: Tanane\FrontendBundle\Entity\NaturalPerson
为什么?错误在哪里?
答案 0 :(得分:3)
您需要检查完全限定类名称(FQCN):
if ($person instanceof \Tanane\FrontendBundle\Entity\NaturalPerson)
或者您需要在文件顶部(命名空间下方)放置一个USE语句:
use Tanane\FrontendBundle\Entity\NaturalPerson;
所有Symfony类都是命名空间,因此PHP无法找到一个类" NaturalPerson"如果它不在与调用它的文件相同的命名空间中。