2012-01-10 26 views
0

我對Symfony2和Doctrine知之甚少。這是我想要做的:我有兩個不同的文件包含同一類的類定義。我想把這兩個合併成一個新的類文件。用symfony2生成合並的實體類文件

我有一個現有實體類文件Foo.php

/** 
* @ORM\Entity 
* @ORM\Table(name="foo") 
*/ 
class Foo 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue 
    * 
    * @var int 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string") 
    * 
    * @var string 
    */ 
    protected $name; 

    /** 
    * @param string $name 
    * @return void 
    */ 
    public function setName($name) 
    { 
     $this->name = (string) $name; 
    } 

    /** 
    * @return string name 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 

    protected function someMagic($in) { 
     die('no magic happens.'); 
    } 
} 

,並使用相同的名稱Foo.php第二實體類文件:

/** 
* @ORM\Entity 
* @ORM\Table(name="foo") 
*/ 
class Foo 
{ 
    /** 
    * @ORM\Column(type="string") 
    * 
    * @var string 
    */ 
    protected $color; 

    /** 
    * @param string $name 
    * @return void 
    */ 
    public function setColor($color) 
    { 
     $this->color = $this->someColorMagic($color); 
    } 

    /** 
    * @return string name 
    */ 
    public function getColor() 
    { 
     return $this->color; 
    } 

    protected function someMagic($in) { 
     return 'magic: ' . $out; 
    } 
} 

我怎麼能合併這兩個在一起(不在運行時,只需在安裝symfony應用程序時 - 可以使用symfony控制檯命令(如foobar:install)來完成),因此我將合併類Foo寫入文件FooExtended.php,該文件包含屬性和這兩個類的方法和教義註釋保留了嗎?

Symfony(或內部的DoctrineBundle)是否支持這種開箱即用的東西?或者有人能指出我如何實現這一目標的正確方向?

+0

複製/意大利麪有什麼問題?很難回答這個問題,如果不知道你想做什麼。第二類不能延伸第一類嗎? – calumbrodie 2012-01-11 00:35:33

+0

它應該在安裝過程中以編程方式生成。由於幾個原因,擴展不是一個選項(簡單來說很難解釋)。 – acme 2012-01-11 08:50:37

+0

PHP本身不支持多個類繼承,所以它可能不是。難道你不需要他們成爲運行時的一類嗎? – solarc 2012-01-11 11:57:58

回答

0

它現在變成了一些設計上的改變,我可以通過簡單的類繼承來解決我的問題。所以在設計時不需要合併課程。