Contributed by
Kévin Dunglas
in #21031.
Autowiring(自动关联)是一组功能,它针对Symfony程序开启了RAD("Rapid Application Development" 快速开发)。某些项目和程序员,需要此种方式的开发,因此我们持续向它添加新功能。
在Symfony 3.3中,我们决定为使用了PHP7.0和以上版本的程序,添加对 getter autowiring 的支持。 思考下面这个简单的类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // src/AppBundle/Manager/Publisher.php
namespace AppBundle\Manager;
use AppBundle\Parser\Markdown;
class Publisher
{
protected function getMarkdownParser(): Markdown { }
// ... 译注:从 PHP 7.1 起,大量类型强化手段都与 TypeScript 或 Dart 脚本看齐
// ... 建议所有 Symfony 用户掌握 PHP 7.1 中的RFC,以更好的使用企业级 PHP 框架
}
// src/AppBundle/Parser/Markdown.php
namespace AppBundle\Parser\Markdown;
class Markdown
{
// ...
} |
现在,添加以下服务配置:
1 2 3 4 | # app/config/services.yml
services:
AppBundle\Manager\Publisher:
autowire: ['get*'] |
Getter autowiring 自动地把 Markdown
类注册成服务,并在 getMarkdownParser()
方法在 Publisher
类中被调用时(并且仅在此时,才对其进行lazy loading[懒加载]) 返回一个实例。
这个功能是我们 experimental features program(功能体验计划)中的一部分,因此,它的落实可能会在Symfony 3.4中发生改变,我们也可能完全删除之。我们需要你在自己的真实程序中进行测试,并和我们分享你的看法。
此功能的文档尚未准备好,但你可以在推上关注 @symfonydocs 来在我们发布此文档时得到通知。