我扩展了一个定义了一些属性的类。
我必须将继承的属性存储在我的数据库中以映射生成的实体。
这个语法怎么样?
我延长了Payum支付模型类“PaymentDetails”,它本身正在扩展下面所示的“付款”类:
/**
* Class Payment
*
* Lets you create, process and manage payments.
*
* @package PayPal\Api
*
* @property string id
* @property string intent
* @property \PayPal\Api\Payer payer
* @property \PayPal\Api\Transaction[] transactions
* @property string state
* @property string experience_profile_id
* @property string note_to_payer
* @property \PayPal\Api\Payee $payee
* @property \PayPal\Api\RedirectUrls redirect_urls
* @property string failure_reason
* @property string create_time
* @property string update_time
* @property \PayPal\Api\Links[] links
*/
class Payment extends PayPalResourceModel
{
// ...
}
“PaymentDetails”类是:
use PayPal\Api\Payment as BasePaymentDetails;
class PaymentDetails extends BasePaymentDetails
{
protected $idStorage;
}
我自己的班级看起来像这个atm:
/**
* @ORM\Table
* @ORM\Entity
*/
class PaymentPaypalPlus extends PaymentDetails
{
/**
* @ORM\Column(name="idPpp", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*
* @var integer $idPpp;
*/
protected $id;
}
我不知何故需要使“PaymentPaypalPlus”类作为Payum的有效存储类工作,这意味着我必须将属性从基类映射到DB(使用ORM)。至少那是我认为我应该做的。如果这没有意义,请告诉我: - )
答案 0 :(得分:0)
它认为您最接近的事情是php-mapping或yaml-mapping。
如果属性受到保护,你也可以在带有注释的子类中重新定义它们 - 但这会破坏继承的目的,除非有许多函数/ etc可以保持原样。
doctrine inheritance-mapping甚至PHP Traits等实际继承也有效,但您必须修改供应商类。