如何在 Symfony 中使用 `IntlDateFormatter`?
How to use `IntlDateFormatter` in Symfony?
如何在 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
。我知道抽象 class 不能被实例化。但是不知道怎么实现。
Composer automatically exposes these classes in the global namespace
如果我们查看源代码,这个更容易理解。在 DateFormatter/IntlDateFormatter.php
定义的 class 被标记为抽象的,但是在 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
{
}
简而言之,class 是 drop-in 对 root 命名空间中的 builin IntlDateFormatter 的替代 :
$fmt = new \IntlDateFormatter(...);
^
如果您没有安装扩展,auto-loading 将自动加载 Symfony 的实现。
如何在 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
。我知道抽象 class 不能被实例化。但是不知道怎么实现。
Composer automatically exposes these classes in the global namespace
如果我们查看源代码,这个更容易理解。在 DateFormatter/IntlDateFormatter.php
定义的 class 被标记为抽象的,但是在 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
{
}
简而言之,class 是 drop-in 对 root 命名空间中的 builin IntlDateFormatter 的替代 :
$fmt = new \IntlDateFormatter(...);
^
如果您没有安装扩展,auto-loading 将自动加载 Symfony 的实现。