Slide 1

Slide 1 text

Denis Brumann ⠇Symfony User Group Hamburg ⠇2021-04-06 Symfony Runtime A First Look

Slide 2

Slide 2 text

2 Denis Brumann [email protected] @dbrumann

Slide 3

Slide 3 text

3 What is a runtime?

Slide 4

Slide 4 text

Symfony Runtime - A First Look ⠇@dbrumann 4 What is a runtime?

Slide 5

Slide 5 text

Symfony Runtime - A First Look ⠇@dbrumann 5 What is a runtime?

Slide 6

Slide 6 text

Symfony Runtime - A First Look ⠇@dbrumann 6 What is a runtime?

Slide 7

Slide 7 text

Symfony Runtime - A First Look ⠇@dbrumann 7 What is a runtime?

Slide 8

Slide 8 text

Symfony Runtime - A First Look ⠇@dbrumann 7 What is a runtime?

Slide 9

Slide 9 text

Symfony Runtime - A First Look ⠇@dbrumann 8 What is a runtime?

Slide 10

Slide 10 text

Symfony Runtime - A First Look ⠇@dbrumann 8 What is a runtime? When using Apache, you can con gure PHP as an Apache module or FastCGI using PHP FPM. FastCGI also is the preferred way to use PHP with Nginx.

Slide 11

Slide 11 text

Symfony Runtime - A First Look ⠇@dbrumann 9 What is a runtime?

Slide 12

Slide 12 text

Symfony Runtime - A First Look ⠇@dbrumann 9 What is a runtime?

Slide 13

Slide 13 text

Symfony Runtime - A First Look ⠇@dbrumann 10 What is a runtime?

Slide 14

Slide 14 text

Symfony Runtime - A First Look ⠇@dbrumann 10 What is a runtime?

Slide 15

Slide 15 text

Symfony Runtime - A First Look ⠇@dbrumann 11 What is a runtime?

Slide 16

Slide 16 text

Symfony Runtime - A First Look ⠇@dbrumann 11 What is a runtime?

Slide 17

Slide 17 text

Symfony Runtime - A First Look ⠇@dbrumann 12 What is a runtime?

Slide 18

Slide 18 text

Symfony Runtime - A First Look ⠇@dbrumann 12 What is a runtime?

Slide 19

Slide 19 text

13 Bootstrapping Symfony

Slide 20

Slide 20 text

Symfony Runtime - A First Look ⠇@dbrumann 15 Bootstrapping Symfony

Slide 21

Slide 21 text

Symfony Runtime - A First Look ⠇@dbrumann 16 Bootstrapping Symfony

Slide 22

Slide 22 text

Symfony Runtime - A First Look ⠇@dbrumann 17 Bootstrapping Symfony

Slide 23

Slide 23 text

Symfony Runtime - A First Look ⠇@dbrumann 18 Bootstrapping Symfony

Slide 24

Slide 24 text

Symfony Runtime - A First Look ⠇@dbrumann 19 Bootstrapping Symfony

Slide 25

Slide 25 text

20 Sidenote: Experimental Features

Slide 26

Slide 26 text

Symfony Runtime - A First Look ⠇@dbrumann 21 Sidenote: Experimental Features

Slide 27

Slide 27 text

22 The Runtime Component

Slide 28

Slide 28 text

Symfony Runtime - A First Look ⠇@dbrumann 23 The Runtime Component The Runtime Component decouples the bootstrapping logic from any global state to make sure the application can run with runtimes like PHP-FPM. ReactPHP, Swoole, etc. without any changes.

Slide 29

Slide 29 text

Symfony Runtime - A First Look ⠇@dbrumann 24 The Runtime Component

Slide 30

Slide 30 text

Symfony Runtime - A First Look ⠇@dbrumann 24 The Runtime Component

Slide 31

Slide 31 text

Symfony Runtime - A First Look ⠇@dbrumann 25 The Runtime Component

Slide 32

Slide 32 text

Symfony Runtime - A First Look ⠇@dbrumann 25 The Runtime Component

Slide 33

Slide 33 text

Symfony Runtime - A First Look ⠇@dbrumann 25 The Runtime Component

Slide 34

Slide 34 text

Symfony Runtime - A First Look ⠇@dbrumann 26 The Runtime Component interface RuntimeInterface { /** * Returns a resolver that should compute the arguments of a callable. * * The callable itself should return an object that represents the application to pass to the getRunner() method. */ public function getResolver(callable $callable, \ReflectionFunction $reflector = null): ResolverInterface; /** * Returns a callable that knows how to run the passed object and that returns its exit status as int. * * The passed object is typically created by calling ResolverInterface::resolve(). */ public function getRunner(?object $application): RunnerInterface; }

Slide 35

Slide 35 text

Symfony Runtime - A First Look ⠇@dbrumann 27 The Runtime Component [$app, $args] = $runtime ->getResolver($app) ->resolve(); $app = $app(...$args); exit( $runtime ->getRunner($app) ->run() );

Slide 36

Slide 36 text

Symfony Runtime - A First Look ⠇@dbrumann 27 The Runtime Component [$app, $args] = $runtime ->getResolver($app) ->resolve(); $app = $app(...$args); exit( $runtime ->getRunner($app) ->run() ); return function (array $context) { return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); }

Slide 37

Slide 37 text

Symfony Runtime - A First Look ⠇@dbrumann 28 The Runtime Component

Slide 38

Slide 38 text

29 Custom Runtimes

Slide 39

Slide 39 text

Symfony Runtime - A First Look ⠇@dbrumann 30 Custom Runtimes

Slide 40

Slide 40 text

Symfony Runtime - A First Look ⠇@dbrumann 31 Custom Runtimes

Slide 41

Slide 41 text

Symfony Runtime - A First Look ⠇@dbrumann 32 Custom Runtimes

Slide 42

Slide 42 text

Symfony Runtime - A First Look ⠇@dbrumann 33 Custom Runtimes

Slide 43

Slide 43 text

34 Questions