update:
- 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:
parent
22df2ca781
commit
d7ab71841e
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
6
application/include/controlleurs/get-params.php
Normal file
6
application/include/controlleurs/get-params.php
Normal 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);
|
|
@ -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');
|
||||||
|
|
7
application/traitements/traitement-get.php
Normal file
7
application/traitements/traitement-get.php
Normal 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
2
console/output/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
*
|
||||||
|
!.gitignore
|
Loading…
Reference in a new issue