microkernel - aneb špatný název pro helper (5. sraz přátel symfony v praze)
TRANSCRIPT
![Page 1: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/1.jpg)
5. sraz přátel Symfony - Kdo ví víc?Praha, 18. 2. 2016, Vím Víc Hub
![Page 2: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/2.jpg)
Martin Zeman
@zemistr
K Vašim službám!
![Page 3: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/3.jpg)
Dnešní téma:
MicroKernel(aneb špatný název pro Helper)
![Page 4: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/4.jpg)
Co to, k*rva, je?
![Page 5: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/5.jpg)
Micro + Kernel
![Page 6: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/6.jpg)
Micro
![Page 7: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/7.jpg)
![Page 8: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/8.jpg)
Kernel
![Page 9: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/9.jpg)
![Page 10: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/10.jpg)
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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/11.jpg)
MicroKernel=
malé jádro pecky
![Page 12: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/12.jpg)
Chápou všichni?
![Page 13: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/13.jpg)
Kernel
![Page 14: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/14.jpg)
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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/15.jpg)
MicroKernel
![Page 16: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/16.jpg)
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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/17.jpg)
Kernel(Symfony kernel)
Co to vlastně je ten Symfony Kernel?
![Page 18: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/18.jpg)
MicroKernel(Symfony kernel)
Co to vlastně je ten Symfony MicroKernel?
![Page 19: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/19.jpg)
MicroKernel(Symfony kernel)
NOVINKA !!!
![Page 20: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/20.jpg)
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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/21.jpg)
// 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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/22.jpg)
{ "require": { "symfony/framework-bundle": "3.0.*" }}
Pro použití stačí jen stáhnout symfony/framework-bundle
![Page 23: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/23.jpg)
Složka “vendor”:Složek: 486
Souborů: 2063Velikost: 5.32 MB
Po stažení
![Page 24: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/24.jpg)
// 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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/25.jpg)
Tadá!
![Page 26: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/26.jpg)
server.local/index.php/hello/007
![Page 27: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/27.jpg)
// 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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/28.jpg)
+ Twig
![Page 29: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/29.jpg)
{ "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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/30.jpg)
Složka “vendor”:Složek: 638 (+152)
Souborů: 2859 (+796)Velikost: 6.72 MB (+1.4)
Po stažení
![Page 31: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/31.jpg)
// 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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/32.jpg)
server.local/index.php/hello/007
![Page 33: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/33.jpg)
+ Controllery+ Šablony
![Page 34: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/34.jpg)
{ "require": { "symfony/framework-bundle": "3.0.*", "symfony/twig-bundle": "3.0.*" }, "autoload": { "psr-4": { "": "src/" } }}
![Page 35: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/35.jpg)
// src/AppBundle/AppBundle.php<?phpnamespace AppBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AppBundle extends Bundle {}
![Page 36: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/36.jpg)
Bond komunikuje s M
![Page 37: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/37.jpg)
// 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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/38.jpg)
// 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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/39.jpg)
server.local/index.php/hello/007
![Page 40: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/40.jpg)
+ Lepší routy+ Lepší šablony
![Page 41: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/41.jpg)
{ "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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/42.jpg)
Složka “vendor”:Složek: 707 (+69)
Souborů: 3036 (+177)Velikost: 7.28 MB (+0.56)
Po stažení
![Page 43: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/43.jpg)
// src/AppBundle/Controller/MController.phpclass MController extends Controller { /** * @Route("/hello/{name}") * @Template() */ public function helloAction($name) { return ['name' => $name]; }}
![Page 44: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/44.jpg)
// 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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/45.jpg)
server.local/index.php/hello/007
![Page 46: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/46.jpg)
Prosím!Rozděl ten index!
![Page 47: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/47.jpg)
// 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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/48.jpg)
<?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 špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/49.jpg)
Výsledek (fujky):Controllery: 0
Šablony: 0
Bundly: 1
Jiné soubory: 1 (index)
![Page 50: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/50.jpg)
Výsledek (mňam):Controllery: 1
Šablony: 1
Bundly: 4
Jiné soubory: 2 (index + LittleKernel)
![Page 51: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/51.jpg)
Složka “vendor”:Složek: 707
Souborů: 3036Velikost: 7.28 MB
![Page 52: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/52.jpg)
Micro?
![Page 53: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/53.jpg)
MicroKernel(Symfony kernel)
![Page 54: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/54.jpg)
KernelHelper?
![Page 55: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/55.jpg)
+1
![Page 56: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/56.jpg)
Hmmm, nejsem jediný, komu se ten název nelíbí.
![Page 57: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/57.jpg)
Používat?x
Nepoužívat?
![Page 58: MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)](https://reader036.vdocuments.mx/reader036/viewer/2022081514/587ac7151a28ab760f8b496f/html5/thumbnails/58.jpg)
Otázky?