- amélioration modèle objet du MVC
 - ajout des paramètres en $_GET provenant de l'url
 - ajout de deux pages pour tester tout çà
This commit is contained in:
Emmanuel ROY 2021-05-25 16:33:58 +02:00
parent 22df2ca781
commit d7ab71841e
9 changed files with 86 additions and 25 deletions

View file

@ -1,5 +1,12 @@
<?php <?php
/**
* Package MVC\Classe
* @author Emmanuel ROY
* @license MIT-licence (open source)
* @version 3.5
*/
namespace MVC\Classe; namespace MVC\Classe;
class Application class Application
@ -9,6 +16,8 @@ class Application
public $browser; public $browser;
public $route; public $route;
public $controlleur;
public function __construct() public function __construct()
{ {
@ -23,10 +32,10 @@ class Application
public function launch() public function launch()
{ {
$controlleur = new Controlleur($this); $this->controlleur = new Controlleur($this);
//si la page n'est un controlleur d'action alors on affiche l'écran //si la page n'est un controlleur d'action alors on affiche l'écran
if (!$this->url->page['control']) { if (!$this->url->page['control']) {
print($controlleur->vue->ecran); print($this->controlleur->vue->ecran);
//si on affiche l'écran alors on vide les alertes de la session //si on affiche l'écran alors on vide les alertes de la session
\MVC\Object\Alert::remove(); \MVC\Object\Alert::remove();
} }

View file

@ -1,5 +1,12 @@
<?php <?php
/**
* Package MVC\Classe
* @author Emmanuel ROY
* @license MIT-licence (open source)
* @version 3.5
*/
namespace MVC\Classe; namespace MVC\Classe;
class Controlleur class Controlleur
@ -36,6 +43,10 @@ class Controlleur
//si c'est une page de traitement PRG on appelle le fichier de controle de formulaire //si c'est une page de traitement PRG on appelle le fichier de controle de formulaire
} elseif ($application->url->page['control']) { } elseif ($application->url->page['control']) {
$url_params = $application->url->page['params']; $url_params = $application->url->page['params'];
foreach($application->url->page['params'] as $key => $value){
$_GET[$key] = $value;
$url_params[$key] = $value;
}
require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php'; require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php';
//sinon c'est une page MVC normale //sinon c'est une page MVC normale
} else { } else {
@ -46,10 +57,10 @@ class Controlleur
// ainsi on instancie la page précédente et le javascript et le css asynchrone // ainsi on instancie la page précédente et le javascript et le css asynchrone
\MVC\Object\Session::createAndTestSession(); \MVC\Object\Session::createAndTestSession();
} }
//fixme: doit on passer l'application entière dans la vue ou seulement $application->modele->page ? $this->vue = new Vue($this->modele->page);
$this->vue = new Vue($this);
} }
} }
return $this;
} }
public function callHttpResponse($application) public function callHttpResponse($application)

View file

@ -1,5 +1,12 @@
<?php <?php
/**
* Package MVC\Classe
* @author Emmanuel ROY
* @license MIT-licence (open source)
* @version 3.5
*/
namespace MVC\Classe; namespace MVC\Classe;
class Modele class Modele
@ -31,7 +38,7 @@ class Modele
} }
} }
$this->page['url_params'] = $base_param['params']; $this->page['all_params'] = $base_param['params'];
//export nom a nom les variable dans la superglobale $_GET //export nom a nom les variable dans la superglobale $_GET
foreach($base_param['params'] as $key => $value){ foreach($base_param['params'] as $key => $value){
$_GET[$key] = $value; $_GET[$key] = $value;
@ -39,11 +46,12 @@ class Modele
} else { } else {
$this->page['name'] = $base_param['name']; $this->page['name'] = $base_param['name'];
$this->page['description'] = $base_param['description']; $this->page['description'] = $base_param['description'];
$this->page['params'] = $base_param['params']; $this->page['all_params'] = $base_param['params'];
//export nom a nom les variable dans la superglobale $_GET //export nom a nom les variable dans la superglobale $_GET
foreach($base_param['params'] as $key => $value){ foreach($base_param['params'] as $key => $value){
$_GET[$key] = $value; $_GET[$key] = $value;
} }
} }
return $this;
} }
} }

View file

@ -1,5 +1,12 @@
<?php <?php
/**
* Package MVC\Classe
* @author Emmanuel ROY
* @license MIT-licence (open source)
* @version 3.5
*/
namespace MVC\Classe; namespace MVC\Classe;
class Url class Url
@ -59,7 +66,7 @@ class Url
$numParts = count($urlParts); $numParts = count($urlParts);
//s'il n'existe pas autant de clé que de valeurs, ce peut ^etre un module symfony ou tout autre module //s'il n'existe pas autant de clé que de valeurs, ce peut ^etre un module symfony ou tout autre module
if ($numParts%2 != 0) { if ($numParts%2 != 0) {
//si un module symfony n'est pas reférencé avec le nom de la page, on renvoi un erreur //si un module symfony n'est pas reférencé avec le nom de la page, on renvoi une erreur
if (!in_array($page['name'], $this->registre->getIndex())) { if (!in_array($page['name'], $this->registre->getIndex())) {
$page['name'] = 'error'; $page['name'] = 'error';
$page['params'] = array(); $page['params'] = array();
@ -67,9 +74,10 @@ class Url
return; return;
} else { } else {
foreach ($urlParts as $key => $value) { foreach ($urlParts as $key => $value) {
$values[] = $value; $values[] = $value;
$keys[] = $key; $keys[] = $value;
} }
//$page['params'] = array_combine($keys, $values);
$page['params'] = $values; $page['params'] = $values;
} }
@ -236,18 +244,13 @@ class Url
} else { } else {
$scheme = 'http'; $scheme = 'http';
} }
$base_url = $scheme . "://" . $url ; $base_url = $scheme . "://" . $url . "/";
$url = $base_url; $url = $base_url;
}else{ }else{
$url = PATH_URL; $url = PATH_URL;
} }
if(str_ends_with($url . "/" . BASE_SERVER_DIRECTORY , '/')){ return $url . BASE_SERVER_DIRECTORY;
return substr($url . "/" . BASE_SERVER_DIRECTORY,0,-1);
}else {
return $url . "/" . BASE_SERVER_DIRECTORY;
}
} }
/** /**
* Obtiens le fragment depuis une variable serveur, * Obtiens le fragment depuis une variable serveur,
* ce qui est selon moi possible avec une bonne configuration serveur * ce qui est selon moi possible avec une bonne configuration serveur

View file

@ -1,5 +1,12 @@
<?php <?php
/**
* Package MVC\Classe
* @author Emmanuel ROY
* @license MIT-licence (open source)
* @version 3.5
*/
namespace MVC\Classe; namespace MVC\Classe;
class Vue class Vue
@ -7,10 +14,20 @@ class Vue
public $ecran; public $ecran;
public $block_body; public $block_body;
public function __construct($application) public function __construct($page_params)
{ {
$templateData = array(); //$templateData = array();
extract($application->modele->page); $url_params = array();
$templateData = $page_params;
extract($page_params);
//de base on ajoute les parametres du .model et ceux provenant de l'url
foreach ($page_params['all_params'] as $key => $value) {
//$templateData[$key] = $value;
$_GET[$key] = $value;
$url_params[$key] = $value;
}
if(!isset($engine)){$engine = 'blade';} if(!isset($engine)){$engine = 'blade';}
$flag_exist = false; $flag_exist = false;
@ -50,16 +67,12 @@ class Vue
$renderer = new \Windwalker\Renderer\BladeRenderer($paths, array('cache_path' => VIEW_PATH . DIRECTORY_SEPARATOR . "cache")); $renderer = new \Windwalker\Renderer\BladeRenderer($paths, array('cache_path' => VIEW_PATH . DIRECTORY_SEPARATOR . "cache"));
} }
//de base on ajoute les parametres du .model et ceux provenant de l'url
foreach ($application->modele->page as $key => $value) {
$templateData[$key] = $value;
}
//WINWALKER TEMPLATING ENGINE RENDER //WINWALKER TEMPLATING ENGINE RENDER
echo $renderer->render($name, $templateData); echo $renderer->render($name, $templateData);
} else { } else {
include CONTROLLER_PATH . DIRECTORY_SEPARATOR . $name . '.php'; include CONTROLLER_PATH . DIRECTORY_SEPARATOR . $name . '.php';
} }
$this->ecran = ob_get_clean(); $this->ecran = ob_get_clean();
return $this;
} }
} }

View file

@ -0,0 +1,6 @@
<?php
\MVC\Classe\Dumper::dump($_GET);
\MVC\Classe\Dumper::dump($url_params);
\MVC\Classe\Dumper::dump($templateData);
\MVC\Classe\Dumper::dump($GLOBALS);

View file

@ -8,5 +8,7 @@ use MVC\Classe\Logger;
\MVC\Classe\ControlleurAction::inserer('default.makeHttp11', []); \MVC\Classe\ControlleurAction::inserer('default.makeHttp11', []);
$templateData = array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge'); $templateData["templating_a"] ='blade';
$templateData["templating_b"] ='twig';
$templateData["templating_c"] ='edge';
Logger::addLog('ok', 'Hello world'); Logger::addLog('ok', 'Hello world');

View file

@ -0,0 +1,7 @@
<?php
\MVC\Object\Session::createAndTestSession();
\MVC\Classe\Dumper::dump($_GET);
\MVC\Classe\Dumper::dump($url_params);
\MVC\Classe\Dumper::dump($GLOBALS);

2
console/output/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
*
!.gitignore