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)是否支持這種開箱即用的東西?或者有人能指出我如何實現這一目標的正確方向?
複製/意大利麪有什麼問題?很難回答這個問題,如果不知道你想做什麼。第二類不能延伸第一類嗎? – calumbrodie 2012-01-11 00:35:33
它應該在安裝過程中以編程方式生成。由於幾個原因,擴展不是一個選項(簡單來說很難解釋)。 – acme 2012-01-11 08:50:37
PHP本身不支持多個類繼承,所以它可能不是。難道你不需要他們成爲運行時的一類嗎? – solarc 2012-01-11 11:57:58