如何在 Symfony 中使用“IntlDateFormatter”?

Posted

技术标签:

【中文标题】如何在 Symfony 中使用“IntlDateFormatter”?【英文标题】:How to use `IntlDateFormatter` in Symfony? 【发布时间】:2021-01-20 09:33:14 【问题描述】:

如何在 Symfony 4.4 中实现IntlDateFormatter

参考https://symfony.com/doc/current/components/intl.html我已经安装了symfony/intl

现在当我在我的代码中使用它时:

use Symfony\Component\Intl\DateFormatter\IntlDateFormatter;

    $formatter = new IntlDateFormatter(
        "de-DE",
        IntlDateFormatter::FULL,
        IntlDateFormatter::NONE,
        "Europe/Berlin",
        IntlDateFormatter::GREGORIAN,
        "MMMM YYYY"
    );

我收到Cannot instantiate abstract class Symfony\Component\Intl\DateFormatter\IntlDateFormatter。我知道抽象类不能被实例化。但我不确定如何实现。

【问题讨论】:

【参考方案1】:

来自documentation:

Composer 自动在全局命名空间中公开这些类

如果我们检查源代码,这更容易理解。 DateFormatter/IntlDateFormatter.php 定义的类被标记为抽象类,但 Resources/stubs/IntlDateFormatter.php 有一个实现如下所示:

use Symfony\Component\Intl\DateFormatter\IntlDateFormatter as BaseIntlDateFormatter;

/**
 * Stub implementation for the IntlDateFormatter class of the intl extension.
 *
 * @author Bernhard Schussek <bschussek@gmail.com>
 *
 * @see BaseIntlDateFormatter
 */
class IntlDateFormatter extends BaseIntlDateFormatter


简而言之,该类是 根命名空间中 builin IntlDateFormatter 的直接替代品:

$fmt = new \IntlDateFormatter(...);
           ^

如果你没有安装扩展,自动加载会自动加载 Symfony 的实现。

【讨论】:

以上是关于如何在 Symfony 中使用“IntlDateFormatter”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 symfony 中使用 Memcache

如何在 Symfony 路由中使用锚点?

Symfony:我如何在 Messenger 中使用远程过程调用(RPC)?

我如何在没有 symfony 的项目中重用我的 symfony 实体

Symfony 2:如何检查用户是不是未在模板中登录?

如何在 Symfony2 中使用 php 控制台