首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >原理2不调用具有抽象基类的LifecycleCallbacks

原理2不调用具有抽象基类的LifecycleCallbacks
EN

Stack Overflow用户
提问于 2011-09-06 21:09:56
回答 6查看 5.8K关注 0票数 16

我有这样的情况:

抽象类:

代码语言:javascript
运行
复制
abstract class AbstractBase
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     * @var integer
     */
    protected $id;

    /**
     * @ORM\Column(type="datetime", name="updated_at")
     * @var \DateTime $updatedAt
     */
    protected $updatedAt;

    /**
     * @ORM\PreUpdate
     */
    public function setUpdatedAt()
    {
        die('THIS POINT IS NEVER REACHED');
        $this->updatedAt = new \DateTime();
    }
}

具体类:

代码语言:javascript
运行
复制
/**
 * @ORM\Entity(repositoryClass="Entity\Repository\UserRepository")
 * @ORM\Table(name="users")
 * @ORM\HasLifecycleCallbacks
 */
class User extends AbstractBase
{
    // some fields, relations and setters/getters defined here, these all work as expected.
}

然后在我的控制器中调用它,如下所示:

代码语言:javascript
运行
复制
$user = $this->em->find('Entity\User', 1);
// i call some setters here like $user->setName('asd');
$this->em->flush();
die('end');

一切都按预期工作,所以抽象类中的id字段是为用户实体创建的,我可以访问它,等等。问题是,"die('THIS POINT is NEVER‘)“这一行从来没有达到过。(注意@ORM)这意味着不会在继承的对象上调用lifecycleCallbacks。这是一个bug,还是有原因的?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7320425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档