PHPのDI、attributesとこれから / PHP DI with attributes
by
YAMAOKA Hiroyuki
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
PHP DI attributes 2021 3 28 / PHPerKaigi 2 0 2 1 Day 2
Slide 2
Slide 2 text
- / @hiro_y - PHP Node.js Web - - CTO
Slide 3
Slide 3 text
- - - - iruca mimemo 👨💻👨💻
Slide 4
Slide 4 text
- PHPerKaigi 2 0 20 Day 0 - 2020 2 9 - PHP https://speakerdeck.com/hiro_y/about-php-annotations https://www.youtube.com/watch?v=TdHDqOeCUW 4
Slide 5
Slide 5 text
🎉 PHP 8 . 0 🎉 2020 11
Slide 6
Slide 6 text
https://www.php.net/releases/ 8 . 0 /ja.php
Slide 7
Slide 7 text
DI
Slide 8
Slide 8 text
DI - Dependency: - Injection: class Client { public function __construct(private Service $service) {} }
Slide 9
Slide 9 text
PHP DI
Slide 10
Slide 10 text
DI - Maple https://ja.osdn.net/projects/maple/ - S 2 Container.PHP 5 http://s 2 container.php 5 .seasar.org/ 2 . 0 /ja/index.html - PHP 5
Slide 11
Slide 11 text
- Java DI - Struts 1 Spring Seasar 2 - PHP 5 - DI
Slide 12
Slide 12 text
PHP DI - PHP DI - - Web : - TDD CI :
Slide 13
Slide 13 text
PHP 8
Slide 14
Slide 14 text
PHP - - interface - autoload require - TDD CI
Slide 15
Slide 15 text
DI - execute($request) : - show(Request $request) : routing - show(ServerRequestInterface $request) interface :
Slide 16
Slide 16 text
- IDE PhpStorm VSCode - interface - APC OPcache -
Slide 17
Slide 17 text
- Symfony Laravel CakePHP - DI - 🕵
Slide 18
Slide 18 text
- URL - - -
Slide 19
Slide 19 text
Symfony - Service Container https://symfony.com/doc/ 5 . 2 /components/dependency_injection.html - Dependencyinjection component - PSR- 1 1 - 2
Slide 20
Slide 20 text
Laravel - Service Container https://laravel.com/docs/ 8 .x/container - Illuminate\Container\Container - PSR- 1 1 - Facades
Slide 21
Slide 21 text
: PSR- 1 1 - PSR- 1 1 : Container Interface https://www.php- fi g.org/psr/psr- 1 1 / - - :
Slide 22
Slide 22 text
PHP-DI - DI https://php-di.org/ - PSR- 1 1 - Slim middleware
Slide 23
Slide 23 text
PHP-DI 7 - 2021 3 10 : beta 3 - beta - Attributes - PHP 8 PHP-DI 6
Slide 24
Slide 24 text
PHP-DI 7 - @Inject disabled #[Inject] - - - PhpDocReader
Slide 25
Slide 25 text
Attributes /** * @Inject({"db.host", "db.name"}) */ public function __construct($param1, $param2) use DI\Attribute\Inject; #[Inject('db.host', 'db.name')] public function __construct($param1, $param2) ⬇
Slide 26
Slide 26 text
@Inject - doctrine/annotations - Re fl ection DocComment - DocLexer -
Slide 27
Slide 27 text
#[Inject] - PHP 8 Attributes namespace DI\Attribute; use Attribute; #[Attribute(Attribute::TARGET_PROPERTY | Attribute::TARGET_METHOD | Attribute::TARGET_PARAMETER)] final class Inject {...
Slide 28
Slide 28 text
DI
Slide 29
Slide 29 text
Inject - - Inject - Autowire -
Slide 30
Slide 30 text
Autowire - Inject - - Zero Con fi guration - PHP-DI DI
Slide 31
Slide 31 text
Autowire - - class_exists / interface_exists - - interface
Slide 32
Slide 32 text
autowire DI
Slide 33
Slide 33 text
No content
Slide 34
Slide 34 text
DI - - - Service -
Slide 35
Slide 35 text
- - - -
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
DI - - PSR - attributes
Slide 38
Slide 38 text
No content