在学说/php 中具有当前日期的最佳实践



我必须根据当前日期检索具有原则的数据,我想知道关于它的最佳实践是什么。我应该 :

  • 传递一个表示当前时间的 DateTime 对象作为我的函数的参数,这样我就可以轻松测试我的函数
  • 在我的 QueryBuilder 的 setParameter() 中实例化一个 DateTime 对象
  • 或者只是在我的查询构建器中使用 mysql 的 CURRENT_TIMESTAMP()

我对这些选择有点迷茫,为什么我应该或不选择一个选项。

如果您使用的是 Doctrine,那么根据定义,不应

使用最后一个选项,因为 Doctrine 具有创建查询的功能。因此,要么将 DateTime 对象作为参数传递,例如传递给存储库函数,和/或在使用 QueryBuilder 时使用实例化新的 DateTime 对象。

作为函数的参数,例如在存储库中:

function getStuff(DateTime $from)
{ 
    $criteria = new Criteria();
    $criteria->andWhere(
        $criteria::expr()->eq('from', $from)
    );
    return $this->matching($criteria);
}

或者,如果您总是想使用"现在":

function getStuff()
{ 
    $criteria = new Criteria();
    $criteria->andWhere(
        $criteria::expr()->eq('from', new DateTime('now'))
    );
    return $this->matching($criteria);
}

为什么作为参数

您可能希望允许用户设置日期(和/或时间),因此允许它从控制器和/或服务传递

为什么是"现在"

您可能希望始终从现在/到现在返回一些东西。


请注意,您可以使用另一种相对格式来设置 DateTime 默认值,而不是'now'例如:

$dateTime = new DateTime('last day of'); // Sets date to last day of the current month

有关使用原则标准的更多信息

和完整的课程文档

相关内容

  • 没有找到相关文章

最新更新