public function testHandleRequest() { $dic = new ServiceLocator(); $dic->register('http_kernel', function () { return new DummyHttpKernel(); }); $kernel = new Kernel($dic); $response = $kernel->handle(Request::create('GET', '/')); $this->assertInstanceOf(Response::class, $response); $this->assertSame('DUMMY!', $response->getBody()); }
/** * @return Kernel */ public static function instance() { if (Kernel::$instance == null) { Kernel::$instance = new Kernel(); } return Kernel::$instance; }
public function build(Template $template, array $data = []) { $buffer = $template->getContent(); if (strpos($buffer, '@SET_LAYOUT') !== false) { $layoutTemp = explode("SET_LAYOUT '", $buffer)[1]; $layoutTemp = explode("';", $layoutTemp)[0]; $layout = new Template(); $layout->setFile(\Framework\Kernel::instance()->getApplicationRoot() . "/../App/Views/" . $layoutTemp . ".phtml"); $layoutContent = $layout->getContent(); $data = explode("\n", $buffer); $data[0] = ""; $buffer = implode("\n", $data); $buffer = str_replace("@BODY_SECTION", $buffer, $layoutContent); } $temp = $buffer; preg_match_all('/\\{{(.*?)\\}}/', $temp, $logic); foreach ($logic[1] as $key => $value) { $tmp = trim($value); $mustEcho = false; if (strpos($tmp, " ") === false && strpos($tmp, "--") === false && strpos($tmp, "++") === false && strpos($tmp, "=") === false && $tmp[0] === "\$") { $mustEcho = true; } $buffer = str_replace($logic[0][$key], ($mustEcho ? "<?=" : '<?php ') . $value . ' ?>', $buffer); } return $buffer; }
<?php require_once __DIR__ . "/../vendor/autoload.php"; use Framework\ControllerFactory; use Framework\Http\Request; use Framework\Http\StreamableInterface; use Framework\Kernel; use Framework\Routing\Loader\CompositeFileLoader; use Framework\Routing\Loader\PhpFileLoader; use Framework\Routing\Loader\XmlFileLoader; use Framework\Routing\Router; use Framework\Templating\BracketRenderer; use Framework\Templating\PhpRenderer; $loader = new Twig_Loader_Filesystem(__DIR__ . '/../app/views'); $twig = new Twig_Environment($loader, array('cache' => __DIR__ . '/../app/cache/twig', 'debug' => true)); $renderer = new PhpRenderer(__DIR__ . "/../app/views"); $renderer = new BracketRenderer(__DIR__ . '/../app/views'); $renderer = new \Framework\Templating\TwigRendererAdapter($twig); $loader = new CompositeFileLoader(); $loader->add(new PhpFileLoader()); $loader->add(new XmlFileLoader()); $router = new Router(__DIR__ . "/../app/config/routes.xml", $loader); $kernel = new Kernel($router, new ControllerFactory(), $renderer); $response = $kernel->handle(Request::createFromGlobals()); if ($response instanceof StreamableInterface) { $response->send(); }
<?php require_once __DIR__ . '/../vendor/autoload.php'; use Framework\Http\Request; use Framework\Http\StreamableInterface; use Framework\Kernel; $protocol = explode('/', $_SERVER['SERVER_PROTOCOL']); $path = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/'; $request = new Request($_SERVER['REQUEST_METHOD'], $path, $protocol[0], $protocol[1]); $kernel = new Kernel(); $response = $kernel->handle($request); if ($response instanceof StreamableInterface) { $response->send(); }
public function view($templateName) { $template = new Template(); $template->setFile(Kernel::instance()->getApplicationRoot() . "/../App/Views/" . $templateName . ".phtml"); return new ActionResult($template, $this); }
<?php session_start(); require_once '../Config/App.php'; function __autoload($namespace) { $path = '../' . str_replace("\\", DIRECTORY_SEPARATOR, $namespace) . '.php'; if (file_exists($path)) { require_once $path; } } echo \Framework\Kernel::instance()->start(dirname(__FILE__));