+ All Categories
Home > Presentations & Public Speaking > MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Date post: 09-Jan-2017
Category:
Upload: pehapkari
View: 160 times
Download: 1 times
Share this document with a friend
58
5. sraz přátel Symfony - Kdo ví víc? Praha, 18. 2. 2016, Vím Víc Hub
Transcript
Page 1: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

5. sraz přátel Symfony - Kdo ví víc?Praha, 18. 2. 2016, Vím Víc Hub

Page 2: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Martin Zeman

@zemistr

K Vašim službám!

Page 3: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Dnešní téma:

MicroKernel(aneb špatný název pro Helper)

Page 4: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Co to, k*rva, je?

Page 5: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Micro + Kernel

Page 6: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Micro

Page 7: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
Page 8: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Kernel

Page 9: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
Page 10: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Anglický název kernel znamená (v překladu):● jádro pecky● zrno● ztvrdlá dužina ovoce

https://cs.wikipedia.org/wiki/Jádro_operačního_systému

Page 11: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

MicroKernel=

malé jádro pecky

Page 12: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Chápou všichni?

Page 13: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Kernel

Page 14: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Jádro operačního systému (anglicky kernel) je v informatice částoperačního systému, která je zavedena do operační paměti přistartu (bootování) počítače a je jí předáno řízení. U pokročilýchoperačních systémů jádro nikdy neztrácí kontrolu nad počítačema po celou dobu jeho běhu koordinuje činnost všech spuštěnýchprocesů. Bla bla bla ...

https://cs.wikipedia.org/wiki/Jádro_operačního_systému

Page 15: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

MicroKernel

Page 16: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Mikrojádro je v informatice typ jádra operačního systému, které jevelmi malé a obsahuje jen nejzákladnější funkce (typicky správupaměti a podporu pro plánování procesů a meziprocesovékomunikace), čímž se minimalizuje objem běžícího kódu vprivilegovaném režimu. Bla bla bla ...

https://cs.wikipedia.org/wiki/Mikrojádro

Page 17: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Kernel(Symfony kernel)

Co to vlastně je ten Symfony Kernel?

Page 18: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

MicroKernel(Symfony kernel)

Co to vlastně je ten Symfony MicroKernel?

Page 19: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

MicroKernel(Symfony kernel)

NOVINKA !!!

Page 20: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

MicroKernel(Symfony kernel)

NOVINKA !!! v 2.8 +

http://symfony.com/blog/new-in-symfony-2-8-symfony-as-a-microframeworkhttps://knpuniversity.com/screencast/new-in-symfony3/micro-kernel

Page 21: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

// vendor/symfony/framework-bundle/Kernel/MicroKernelTrait.phptrait MicroKernelTrait { abstract protected function configureRoutes(RouteCollectionBuilder $routes); abstract protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader);

public function registerContainerConfiguration(LoaderInterface $loader) { $loader->load( function (ContainerBuilder $container) use ($loader) { $container->loadFromExtension('framework', [ 'router' => [ 'resource' => 'kernel:loadRoutes', 'type' => 'service' ] ] ); $this->configureContainer($container, $loader); $container->addObjectResource($this); } ); }

public function loadRoutes(LoaderInterface $loader) { $routes = new RouteCollectionBuilder($loader); $this->configureRoutes($routes);

return $routes->build(); }}

Ano, Trait je malý, ale to je asi vše...

Page 22: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

{ "require": { "symfony/framework-bundle": "3.0.*" }}

Pro použití stačí jen stáhnout symfony/framework-bundle

Page 23: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Složka “vendor”:Složek: 486

Souborů: 2063Velikost: 5.32 MB

Po stažení

Page 24: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

// index.phpclass LittleKernel extends Kernel { use MicroKernelTrait;

public function registerBundles() { return [ new FrameworkBundle() ]; }

protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader) { $c->loadFromExtension('framework', ['secret' => 'James Bond 007']); }

protected function configureRoutes(RouteCollectionBuilder $routes) { $routes->add('/hello/{name}', 'Kernel:helloAction'); }

public function helloAction($name) { return new Response("Hello $name"); }}

$kernel = new LittleKernel('dev', true);$kernel->loadClassCache();$kernel->handle(Request::createFromGlobals())->send();

A přidat pár řádků do index.php

Page 25: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Tadá!

Page 26: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

server.local/index.php/hello/007

Page 27: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

// index.phpclass LittleKernel extends Kernel { use MicroKernelTrait;

public function registerBundles() { return [ new FrameworkBundle(), ]; }

protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader) { $c->loadFromExtension('framework', ['secret' => 'James Bond 007']); }

protected function configureRoutes(RouteCollectionBuilder $routes) { $routes->add('/hello/{name}', 'Kernel:helloAction'); }

public function helloAction($name) { return new Response("Hello $name"); }}

$kernel = new LittleKernel('dev', true);$kernel->loadClassCache();$kernel->handle(Request::createFromGlobals())->send();

"Hello $name"

A přidat pár řádků do index.php

Page 28: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

+ Twig

Page 29: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

{ "require": { "symfony/framework-bundle": "3.0.*", "symfony/twig-bundle": "3.0.*" }}

Pro použití stačí jen stáhnout symfony/twig-bundle

Page 30: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Složka “vendor”:Složek: 638 (+152)

Souborů: 2859 (+796)Velikost: 6.72 MB (+1.4)

Po stažení

Page 31: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

// index.phpclass LittleKernel extends Kernel {... public function registerBundles() { return [ new FrameworkBundle(), new TwigBundle() ]; }

protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader) { $c->loadFromExtension( 'framework', [ 'secret' => 'James Bond 007', 'templating' => ['engines' => ['twig']] ] ); }... public function helloAction($name) { $twig = $this->getContainer()->get('twig'); $template = $twig->createTemplate('Hello {{ name }}'); $html = $template->render(['name' => $name]);

return new Response($html); }}...

'Hello {{ name }}'

Page 32: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

server.local/index.php/hello/007

Page 33: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

+ Controllery+ Šablony

Page 34: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

{ "require": { "symfony/framework-bundle": "3.0.*", "symfony/twig-bundle": "3.0.*" }, "autoload": { "psr-4": { "": "src/" } }}

Page 35: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

// src/AppBundle/AppBundle.php<?phpnamespace AppBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AppBundle extends Bundle {}

Page 36: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Bond komunikuje s M

Page 37: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

// src/AppBundle/AppBundle.php<?phpnamespace AppBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AppBundle extends Bundle {}

// src/AppBundle/Controller/MController.php<?phpnamespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class MController extends Controller { public function helloAction($name) { return $this->render('AppBundle:M:hello.html.twig', ['name' => $name]); }}

// src/AppBundle/Resources/views/M/hello.html.twigHello {{ name }}

Page 38: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

// index.phpclass LittleKernel extends Kernel { use MicroKernelTrait;

public function registerBundles() { return [ new FrameworkBundle(), new TwigBundle(), new AppBundle(), ]; }

protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader) { $c->loadFromExtension( 'framework', [ 'secret' => 'James Bond 007', 'templating' => ['engines' => ['twig']] ] ); }

protected function configureRoutes(RouteCollectionBuilder $routes) { $routes->add('/hello/{name}', 'AppBundle:M:hello'); }}...

Page 39: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

server.local/index.php/hello/007

Page 40: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

+ Lepší routy+ Lepší šablony

Page 41: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

{ "require": { "symfony/framework-bundle": "3.0.*", "symfony/twig-bundle": "3.0.*", "sensio/framework-extra-bundle": "3.0.*" }, "autoload": { "psr-4": { "": "src/" } }}

Pro použití stačí jen stáhnout sensio/framework-extra-bundle

Page 42: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Složka “vendor”:Složek: 707 (+69)

Souborů: 3036 (+177)Velikost: 7.28 MB (+0.56)

Po stažení

Page 43: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

// src/AppBundle/Controller/MController.phpclass MController extends Controller { /** * @Route("/hello/{name}") * @Template() */ public function helloAction($name) { return ['name' => $name]; }}

Page 44: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

// index.php$loader = require __DIR__ . '/vendor/autoload.php';AnnotationRegistry::registerLoader([$loader, 'loadClass']);

class LittleKernel extends Kernel { use MicroKernelTrait;

public function registerBundles() { return [ new FrameworkBundle(), new TwigBundle(), new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), new AppBundle(), ]; }

...

protected function configureRoutes(RouteCollectionBuilder $routes) { $routes->import('@AppBundle/Controller', '/', 'annotation'); }}

...

Page 45: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

server.local/index.php/hello/007

Page 46: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Prosím!Rozděl ten index!

Page 47: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

// index.phpuse Doctrine\Common\Annotations\AnnotationRegistry;use Symfony\Component\HttpFoundation\Request;

$loader = require __DIR__ . '/vendor/autoload.php';AnnotationRegistry::registerLoader([$loader, 'loadClass']);

require __DIR__ . '/LittleKernel.php';

$kernel = new LittleKernel('dev', true);$request = Request::createFromGlobals();$response = $kernel->handle($request);$response->send();$kernel->terminate($request, $response);

Page 48: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

<?php// LittleKernel.php...class LittleKernel extends Kernel { use MicroKernelTrait;

public function registerBundles() { return [ new FrameworkBundle(), new TwigBundle(), new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), new AppBundle(), ]; }

protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader) { $c->loadFromExtension( 'framework', [ 'secret' => 'James Bond 007', 'templating' => ['engines' => ['twig']] ] ); }

protected function configureRoutes(RouteCollectionBuilder $routes) { $routes->import('@AppBundle/Controller', '/', 'annotation'); }}

Page 49: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Výsledek (fujky):Controllery: 0

Šablony: 0

Bundly: 1

Jiné soubory: 1 (index)

Page 50: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Výsledek (mňam):Controllery: 1

Šablony: 1

Bundly: 4

Jiné soubory: 2 (index + LittleKernel)

Page 51: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Složka “vendor”:Složek: 707

Souborů: 3036Velikost: 7.28 MB

Page 52: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Micro?

Page 53: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

MicroKernel(Symfony kernel)

Page 54: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

KernelHelper?

Page 55: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

+1

Page 56: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Hmmm, nejsem jediný, komu se ten název nelíbí.

Page 57: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Používat?x

Nepoužívat?

Page 58: MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)

Otázky?


Recommended