这是第41篇也是最后一篇 Symfony 4.1新功能 博客,此版框架将在五月末发布并在2019年1月停止维护 (参考 Symfony 4.1 路线图)。
向 ControllerTrait 添加了 getParameter() 方法
Contributed by
Robin Chalas
in #25439.
Symfony 为控制器提供了两个可选的基类: Controller
和 AbstractController
。它们很像,但推荐的是 AbstractController
因为它更有约束性: 它不允许你通过 $this->get()
或 $this->container->get()
来直接访问服务。
在 Symfony 4.1 中我们改进了 AbstractController
添加常用的 helper getParameter()
,来获取容器中任何一个 config parameter(配置参数)的值。这种改变让从 Controller
转进到 AbstractController
变得十分容易。
PHP DSL 中的匿名服务
Contributed by
Nikita Konstantinov
in #24632.
在 Symfony 3.4 中我们引入了 PHP DSL 来配置路由和服务。在 Symfony 4.1 我们改进了它,添加了对 anonymous services(匿名服务)的支持,这在你不关心服务名称的情况下十分有用 (比如在对服务进行装修时)。
1 2 3 4 5 6 7 | // app/config/services.php
return function (ContainerConfigurator $container) {
$services = $container->services();
// to create an anonymous service, pass null as its ID argument
// 创建匿名服务,向 ID 参数传入 null
$services->set(null, stdClass::class)->tag('listener');
}; |
添加了对从构造器中提取type的支持
Contributed by
Grégoire Pineau
in #25605.
在 Symfony 4.1 中,PropertyInfo组件 的 ReflectionExtractor
类添加了一个新的 $enableConstructorExtraction
参数,可以通过构造参数来内省属性信息。
思考下例:
1 2 3 4 5 6 7 8 9 10 | class SomeClass
{
public $property1;
public $property2;
public function __construct(string $property1, ?int $property2)
{
// ...
}
} |
在 Symfony 4.1 中当此选项被开启时, PropertyInfo 会告诉你 property1
是一个非空字符串的 type,以及 property2
是一个非空整型。
可配置的 PHP 错误日志之级别
Contributed by
Hamza Amrouche
in #26504.
framework.php_errors.log
选项让你使用程序级日志功能而不是 PHP 的 logger 来记录 PHP 错误。
在 Symfony 4.1 中,此一选项不再使用布尔值来开启或关闭。若你传入了整数,你便开启了这功能,并且把 PHP logger 设定在为该值所对应的级别。