如何在 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:我如何在 Messenger 中使用远程过程调用(RPC)?