2016-04-02 7 views
1

複合型で循環参照を扱い、私はSOAPサーバーを作成するBeSimple SoapBundleを使用していますが、私は次のコードとのトラブルを抱えている:BeSimple SoapBundle - 注釈:

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; 

私が必要なものgetはcomplextypeアイテムのツリーですが、注釈を使用するときに循環参照エラーが発生します@Soap \ ComplexType( "AppBundle \ Entity \ Item []")

私はこの状況にどのように対処できますか?

答えて

0

最終的にこの問題の回避策が見つかりました。私はそれが必要ではないと思うが、私が見つけた最高の唯一の方法だと思う。

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; 
    } 

namespace AppBundle\Entity; 

use BeSimple\SoapBundle\ServiceDefinition\Annotation as Soap; 

class Item 
{ 

    /** 
    * @Soap\ComplexType("string") 
    */ 
    protected $name; 

コントローラの使用例:

/** 
* @Soap\Method("getItem") 
* @Soap\Result(phpType = "AppBundle\Entity\ComplexItem") 
*/ 
public function getItem() 
{ 
    $item = new ComplexItem(); 
    $complexItem = new ComplexItem(); 
    $complexItem->setItem($item); 

    return $complexItem; 
} 

は、それが誰かに役立ちます願っています。これを解決するより良い方法が分かっているなら、私に教えてください。