Php besimplesoapbundle-annotation:处理复杂类型中的循环引用
我正在使用BeSimple SoapBundle创建一个SOAP服务器,但以下代码有问题:Php besimplesoapbundle-annotation:处理复杂类型中的循环引用,php,symfony,soap,doctrine,Php,Symfony,Soap,Doctrine,我正在使用BeSimple SoapBundle创建一个SOAP服务器,但以下代码有问题: namespace AppBundle\Entity; use BeSimple\SoapBundle\ServiceDefinition\Annotation as Soap; /** * @Soap\Alias("Item") */ class Item { /** * @Soap\ComplexType("AppBundle\Entity\Item[]") */
namespace AppBundle\Entity;
use BeSimple\SoapBundle\ServiceDefinition\Annotation as Soap;
/**
* @Soap\Alias("Item")
*/
class Item
{
/**
* @Soap\ComplexType("AppBundle\Entity\Item[]")
*/
protected $items;
/**
* @Soap\ComplexType("string")
*/
protected $name;
我需要得到的是complextype项的树,但是在使用注释@Soap\complextype(“AppBundle\Entity\Item[])时,我得到了一个循环引用错误
你知道我该怎么处理这种情况吗 我终于找到了解决这个问题的方法。我认为这是不必要的,但这是我找到的最好也是唯一的方法
namespace AppBundle\Entity;
use BeSimple\SoapBundle\ServiceDefinition\Annotation as Soap;
/**
* @Soap\Alias("ComplexItem")
*/
class ComplexItem extends Item
{
/**
* @Soap\ComplexType("AppBundle\Entity\Item")
*/
protected $item;
public function setItem($item)
{
$this->item = $item;
}
控制器使用示例:
/**
* @Soap\Method("getItem")
* @Soap\Result(phpType = "AppBundle\Entity\ComplexItem")
*/
public function getItem()
{
$item = new ComplexItem();
$complexItem = new ComplexItem();
$complexItem->setItem($item);
return $complexItem;
}
希望它能帮助别人。如果您知道更好的解决方法,请告诉我。我终于找到了解决此问题的方法。我认为这是不必要的,但这是我找到的最好也是唯一的方法
namespace AppBundle\Entity;
use BeSimple\SoapBundle\ServiceDefinition\Annotation as Soap;
/**
* @Soap\Alias("ComplexItem")
*/
class ComplexItem extends Item
{
/**
* @Soap\ComplexType("AppBundle\Entity\Item")
*/
protected $item;
public function setItem($item)
{
$this->item = $item;
}
控制器使用示例:
/**
* @Soap\Method("getItem")
* @Soap\Result(phpType = "AppBundle\Entity\ComplexItem")
*/
public function getItem()
{
$item = new ComplexItem();
$complexItem = new ComplexItem();
$complexItem->setItem($item);
return $complexItem;
}
希望它能帮助别人。如果你知道更好的解决方法,请告诉我