14. Jádro operačního systému (anglicky kernel) je v informatice
část
operačního systému, která je zavedena do operační paměti při
startu (bootování) počítače a je jí předáno řízení. U pokročilých
operačních systémů jádro nikdy neztrácí kontrolu nad počítačem
a po celou dobu jeho běhu koordinuje činnost všech spuštěných
procesů. Bla bla bla ...
https://cs.wikipedia.org/wiki/Jádro_operačního_systému
16. Mikrojádro je v informatice typ jádra operačního systému, které je
velmi malé a obsahuje jen nejzákladnější funkce (typicky správu
paměti a podporu pro plánování procesů a meziprocesové
komunikace), čímž se minimalizuje objem běžícího kódu v
privilegovaném režimu. Bla bla bla ...
https://cs.wikipedia.org/wiki/Mikrojádro
21. // vendor/symfony/framework-bundle/Kernel/MicroKernelTrait.php
trait 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...
24. // index.php
class 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
27. // index.php
class 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