php – Doctrine2自动生成的类中的自定义函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Doctrine2自动生成的类中的自定义函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2203字,纯文字阅读大概需要4分钟。
内容图文
![php – Doctrine2自动生成的类中的自定义函数](/upload/InfoBanner/zyjiaocheng/804/e210b08182324362b5a2bc683546afdc.jpg)
有没有办法扩展Doctrine2从数据库自动生成的类?
示例:我有这个由Doctrine生成的User类.
<?php
namespace Entities;
/**
* User
*/
class User
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $firstName;
/**
* @var string
*/
private $lastName;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set firstName
*
* @param string $firstName
*
* @return User
*/
public function setFirstName($firstName)
{
$this->firstName = $firstName;
return $this;
}
/**
* Get firstName
*
* @return string
*/
public function getFirstName()
{
return $this->firstName;
}
/**
* Set lastName
*
* @param string $lastName
*
* @return User
*/
public function setLastName($lastName)
{
$this->lastName = $lastName;
return $this;
}
/**
* Get lastName
*
* @return string
*/
public function getLastName()
{
return $this->lastName;
}
我想添加这个功能:
public function getFullName()
{
return $this->getFirstName().' '.$this->getLastname();
}
有没有比直接添加到这个类更简洁的方法?
我试图在库中创建另一个类(Test)并对其进行扩展,然后将其添加到autoload(这是有效的),但是当我尝试保存对象时出现错误:
class Test extends Entities\User {
public function getFullName() {
return $this->getFirstName().' '.$this->getLastname();
}
}
Message: No mapping file found named ‘Test.dcm.yml’ for class ‘Test’.
我在CodeIgniter3中使用Doctrine2.
谢谢.
解决方法:
如Doctrine 2 FAQ中所述:
The EntityGenerator is not a full fledged code-generator that solves all tasks. […] The EntityGenerator is supposed to kick-start you, but not towards 100%.
简单来说,这意味着您要求Doctrine仅生成一次实体文件.在那之后,你可以自己做任何你喜欢(或需要)的改变.
因为实体不仅仅是某些属性的容器,而是整个操作发生的地方,这就是流程的发生方式,Doctrine无法为您编写更多代码.
向Doctrine生成的存根实体添加功能的唯一方法是通过根据域模型中的角色编写实现每个实体功能的代码来完成生成的类.
关于另一个问题,在Test类上,错误消息是不言自明的:传递给EntityManager进行处理的任何类都需要映射.
请查看有关Inheritance Mapping的帮助页面.您可以将类User映射为Mapped Superclass(它类似于派生类的模板,其实例不会保留在数据库中),或者您可以使用Single Table Inheritance来存储所有实例在单个表中从User派生的类(当它们具有相同的属性但行为不同时很有用).
或者,如果您因为害怕修改Doctrine生成的代码而创建了类Test,请在类User中放置您需要的行为并删除类Test.
内容总结
以上是互联网集市为您收集整理的php – Doctrine2自动生成的类中的自定义函数全部内容,希望文章能够帮你解决php – Doctrine2自动生成的类中的自定义函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。