2021年3月28日、PHPerKaigi 2021・Day 2での発表資料です。 https://phperkaigi.jp/2021/
PHP DIattributes2021 3 28 / PHPerKaigi2 021Day2
View Slide
- / @hiro_y- PHP Node.js Web-- CTO
---- iruca mimemo👨💻👨💻
- PHPerKaigi20 20Day0- 2020 2 9- PHP https://speakerdeck.com/hiro_y/about-php-annotations https://www.youtube.com/watch?v=TdHDqOeCUW4
🎉 PHP8.0🎉2020 11
https://www.php.net/releases/8.0/ja.php
DI
DI- Dependency:- Injection:class Client { public function __construct(private Service $service) {} }
PHP DI
DI- Maple https://ja.osdn.net/projects/maple/- S2Container.PHP5 http://s2container.php5.seasar.org/2.0/ja/index.html- PHP5
- Java DI- Struts1Spring Seasar2- PHP5 - DI
PHP DI- PHP DI-- Web :- TDD CI :
PHP8
PHP-- interface- autoload require- TDD CI
DI- execute($request) :- show(Request $request) : routing- show(ServerRequestInterface $request) interface :
- IDE PhpStorm VSCode- interface- APC OPcache-
- Symfony Laravel CakePHP- DI-🕵
- URL---
Symfony- Service Container https://symfony.com/doc/5.2/components/dependency_injection.html- Dependencyinjection component- PSR-11 - 2
Laravel- Service Container https://laravel.com/docs/8.x/container- Illuminate\Container\Container- PSR-11 - Facades
: PSR-11- PSR-11: Container Interface https://www.php-fig.org/psr/psr-1 1/-- :
PHP-DI- DI https://php-di.org/- PSR-11 - Slim middleware
PHP-DI7- 2021 3 10 : beta3- beta- Attributes- PHP8PHP-DI6
PHP-DI7- @Inject disabled #[Inject]--- PhpDocReader
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)⬇
@Inject- doctrine/annotations- Reflection DocComment- DocLexer-
#[Inject]- PHP8Attributesnamespace DI\Attribute;use Attribute;#[Attribute(Attribute::TARGET_PROPERTY |Attribute::TARGET_METHOD | Attribute::TARGET_PARAMETER)]final class Inject{...
Inject-- Inject- Autowire-
Autowire- Inject-- Zero Configuration- PHP-DI DI
Autowire-- class_exists / interface_exists-- interface
autowire DI
DI--- Service-
----
DI-- PSR- attributes