コード例 #1
0
ファイル: ControllerTest.php プロジェクト: quenti77/phq
 /**
  * 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);
 }
コード例 #2
0
ファイル: Controller.php プロジェクト: quenti77/phq
 /**
  * @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');
     }
 }
コード例 #3
0
ファイル: ViewMessage.php プロジェクト: quenti77/phq
 /**
  * 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);
 }
コード例 #4
0
ファイル: ConfigTest.php プロジェクト: quenti77/phq
 /**
  * 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);
 }
コード例 #5
0
ファイル: ListCommand.php プロジェクト: quenti77/phq
 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}";
         }
     }
 }
コード例 #6
0
ファイル: MessageTest.php プロジェクト: quenti77/phq
 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);
 }
コード例 #7
0
ファイル: TableTest.php プロジェクト: quenti77/phq
 /**
  * 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);
     }
 }
コード例 #8
0
ファイル: Application.php プロジェクト: quenti77/phq
 /**
  * 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();
     }
 }
コード例 #9
0
ファイル: index.php プロジェクト: quenti77/phq
}
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());
}
コード例 #10
0
ファイル: Table.php プロジェクト: quenti77/phq
 /**
  * @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);
 }