/** * Test du chargement des tables */ public function testLoadTable() { require_once __DIR__ . '/../Test/Table/NewsTable.php'; Config::add(__DIR__ . '/../Test/test.php', 'app'); Connections::add('dev', new Connection('sqlite::memory:')); $controller = new Controller(); $this->assertCount(0, $controller->tables); $this->assertInstanceOf(NewsTable::class, $controller->news); $this->assertCount(1, $controller->tables); }
/** * @param string $name * @return mixed|void */ public function __get($name) { try { return parent::__get($name); } catch (MissingPropertyException $e) { $namespaceTable = 'App\\Tables'; $app = Config::get('app'); if ($app && $app->namespace && isset($app->namespace['table'])) { $namespaceTable = $app->namespace['table']; } return $this->loadTable($namespaceTable . '\\' . ucfirst($name) . 'Table'); } }
/** * Permet de faire le rendu de ce que l'on a donné * * @return string Le rendu à envoyer */ public function render() { $this->file = str_replace('.', '/', $this->file); $app = Config::get('app'); $views = __DIR__ . '/../../../public/views'; $cacheViews = __DIR__ . '/../../../bin/cache/views'; if ($app && $app->folders) { if (isset($app->folders['views'])) { $views = $app->folders['views']; } if (isset($app->folders['cache']) && isset($app->folders['cache']['views'])) { $cacheViews = $app->folders['cache']['views']; } } $blade = new BladeInstance($views, $cacheViews); return $blade->render($this->file, $this->fields); }
/** * Test de la facade */ public function testFacadeConfig() { $configManager = ConfigManager::getInstance(); $this->assertCount(0, $configManager->configs); Config::add(__DIR__ . '/../Test/test.php'); $this->assertCount(1, $configManager->configs); Config::add(__DIR__ . '/../Test/test2.php'); $this->assertCount(2, $configManager->configs); Config::add(__DIR__ . '/../Test/test.php'); $this->assertCount(2, $configManager->configs); Config::add(__DIR__ . '/../Test/test2.php'); $this->assertCount(2, $configManager->configs); $this->assertTrue(Config::exist('test')); $this->assertTrue(Config::exist('test2')); $this->assertFalse(Config::exist('test3')); $this->assertEquals('Test\\Table', Config::get('test')->namespace['table']); $this->assertNull(Config::get('test3')); $this->assertNull(Config::get('test')->unknown); }
private function loadRoutes() { $path = realpath(__DIR__ . '/../../bin/routes'); $configFolder = Config::get('folder'); if ($configFolder) { $routePath = $configFolder->routes; if ($routePath && file_exists($routePath)) { $path = $routePath; } } $rdi = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS); $rit = new RecursiveIteratorIterator($rdi); foreach ($rit as $file) { if ($file->getExtension() === 'php') { $pathFile = $file->getRealPath(); require "{$pathFile}"; } } }
public function testRender() { Config::add(__DIR__ . '/../Test/test.php', 'app'); $string = Response::string('view'); $this->assertEquals('view', $string->view->render()); $json = Response::json(['id' => 1]); $this->assertEquals('{"id":1}', $json->view->render()); $text = Response::html('test', 'a', ['id' => 1], ['b.js']); $this->assertEquals('<h1>a</h1><p>1</p><script src="b.js"></script>', $text->view->render()); $html = Response::text('salut'); $catched = false; try { $html->view->render(); } catch (InvalidArgumentException $e) { $this->assertEquals('View [salut] not found.', $e->getMessage()); $catched = true; } $this->assertTrue($catched); }
/** * Test de récupération des données */ public function testFirstAndAll() { Config::add(__DIR__ . '/../Test/namespace.php'); $connection = new Connection('sqlite::memory:'); $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $connection->query('CREATE TABLE IF NOT EXISTS news ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `title` VARCHAR(50) NOT NULL, `content` LONGTEXT NOT NULL, `created_at` DATETIME NOT NULL )'); $allNews = [[':title' => 'Titre 1', ':content' => 'Contenu 1', ':createdAt' => '2016-07-18 09:20:35'], [':title' => 'Titre 2', ':content' => 'Contenu 2', ':createdAt' => '2016-07-18 10:20:35'], [':title' => 'Titre 3', ':content' => 'Contenu 3', ':createdAt' => '2016-07-18 11:20:35'], [':title' => 'Titre 4', ':content' => 'Contenu 4', ':createdAt' => '2016-07-18 12:20:35']]; require_once __DIR__ . '/../Test/Table/NewsTable.php'; require_once __DIR__ . '/../Test/Entities/Database/News.php'; $newsTable = new NewsTable($connection, '', News::class); foreach ($allNews as $news) { $newsTable->add($news); } $this->assertEquals(0, $newsTable->badCount()); $this->assertEquals(count($allNews), $newsTable->count()); $first = $newsTable->getById(1); $this->assertEquals($allNews[0][':content'], $first->content); $impossible = $newsTable->getById(5); $this->assertFalse($impossible); $all = $newsTable->getAll(); $this->assertEquals(count($allNews), $newsTable->count()); foreach ($all as $index => $value) { $this->assertInstanceOf(News::class, $value); $this->assertSame($allNews[$index][':content'], $value->content); } }
/** * Lance le router et appel les middlewares et le controller */ public function run() { $path = realpath(__DIR__ . '/../../bin/routes'); $configFolder = Config::get('folder'); if ($configFolder) { $routePath = $configFolder->routes; if ($routePath && file_exists($routePath)) { $path = $routePath; } } $rdi = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS); $rit = new RecursiveIteratorIterator($rdi); foreach ($rit as $file) { if ($file->getExtension() === 'php') { $pathFile = $file->getRealPath(); require "{$pathFile}"; } } $method = Request::method(); $routeReturn = !Request::isCLI(); $route = Router::parse(RequestManager::getInstance()->url, $method, $routeReturn); if ($route instanceof Route) { echo $route->run(); } }
} function post($base = []) { $post = Session::get('post'); Session::unset('post'); $post = empty($post) ? [] : $post; $post = array_merge($base, $post); return $post; } try { $app = new Application(); $app->initConfig(); $app->initDatabase(); $app->initCookies(); $app->initHttp(); $app->initLang(); if (Config::get('app')->debug) { $files = glob(Config::get('folder')->cache['views'] . '/*'); // get all file names foreach ($files as $file) { // iterate files if (is_file($file)) { unlink($file); // delete file } } } $app->run(); } catch (Exception $e) { exit($e->getMessage()); }
/** * @param string $entityClassName * @return string Le namespace complet de l'entité */ private function getEntityNamespace($entityClassName) { if (empty($entityClassName)) { $entityClassName = $this->entityName; } $entityNamespace = 'App\\Entitites'; $nsp = Config::get('namespace'); if ($nsp) { $valueEntityNamespace = $nsp->entities; if ($valueEntityNamespace) { $entityNamespace = $valueEntityNamespace; } } return $entityNamespace . '\\' . str_replace($entityNamespace . '\\', '', $entityClassName); }