Vous êtes connecté en tant que anonymous Se Deconnecter
Browse code

mise en place des actions de vue, du loggeur du MVC test des resultat des reponse Rest avec les methode GET PUT DELETE POST avec curl

FIXME: appel curl ou fopen d'une methode http depuis une action ou un controlleur.

TODO: sécuriser les accès HTTP1.1 par un fichier config similaire a l'applet Discourse faite pour Tinternet

TODO: ajouter un plug-in symfony permettant de charger un utilisateur dans les apps a partir de l'authentification multiple

TODO: lire les documentation officielles provenant des 4 plate-formes tranquillement afin de comprendre commet doit on tester ces type d'auth quitte a créé un sous domaine particulier directement hebergé sur gittea
-->Sécuriser le serveur de dev

Emmanuel ROY authored on 04/12/2019 15:21:19
Showing 22 changed files
... ...
@@ -6,10 +6,15 @@ require APPLICATION_PATH . DIRECTORY_SEPARATOR . "parameters.php";
6 6
 
7 7
 class Application
8 8
 {
9
+    public $http;
9 10
 	public $url;
11
+    public $browser;
12
+
10 13
 	
11 14
 	public function __construct(){
12
-		$this->url = new Url();
15
+        $this->http = new HttpMethod();
16
+        $this->browser = new Browser();
17
+        $this->url = new Url($this->http->method, $this->browser->isAppRequest());
13 18
 	}
14 19
 
15 20
 	public function launch(){
16 21
new file mode 100644
... ...
@@ -0,0 +1,93 @@
1
+<?php
2
+
3
+
4
+namespace MVC\Classe;
5
+
6
+
7
+class Browser
8
+{
9
+
10
+    public $user;
11
+    public $userAgent;
12
+
13
+    public function __construct()
14
+    {
15
+
16
+        $this->userAgent = $_SERVER['HTTP_USER_AGENT'];
17
+        $this->user = $this->get_browser_name();
18
+    }
19
+
20
+    protected function get_browser_name()
21
+    {
22
+
23
+        // Make case insensitive.
24
+        $t = strtolower($this->userAgent);
25
+
26
+        // If the string *starts* with the string, strpos returns 0 (i.e., FALSE). Do a ghetto hack and start with a space.
27
+        // "[strpos()] may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE."
28
+        //     http://php.net/manual/en/function.strpos.php
29
+        $t = " " . $t;
30
+
31
+        // Humans / Regular Users
32
+        if (strpos($t, 'opera') || strpos($t, 'opr/')) return 'Opera';
33
+        elseif (strpos($t, 'edge')) return 'Edge';
34
+        elseif (strpos($t, 'chrome')) return 'Chrome';
35
+        elseif (strpos($t, 'safari')) return 'Safari';
36
+        elseif (strpos($t, 'firefox')) return 'Firefox';
37
+        elseif (strpos($t, 'msie') || strpos($t, 'trident/7')) return 'Internet Explorer';
38
+
39
+        // Application Users
40
+        elseif (strpos($t, 'curl')) return '[App] Curl';
41
+
42
+        // Search Engines
43
+        elseif (strpos($t, 'google')) return '[Bot] Googlebot';
44
+        elseif (strpos($t, 'bing')) return '[Bot] Bingbot';
45
+        elseif (strpos($t, 'slurp')) return '[Bot] Yahoo! Slurp';
46
+        elseif (strpos($t, 'duckduckgo')) return '[Bot] DuckDuckBot';
47
+        elseif (strpos($t, 'baidu')) return '[Bot] Baidu';
48
+        elseif (strpos($t, 'yandex')) return '[Bot] Yandex';
49
+        elseif (strpos($t, 'sogou')) return '[Bot] Sogou';
50
+        elseif (strpos($t, 'exabot')) return '[Bot] Exabot';
51
+        elseif (strpos($t, 'msn')) return '[Bot] MSN';
52
+
53
+        // Common Tools and Bots
54
+        elseif (strpos($t, 'mj12bot')) return '[Bot] Majestic';
55
+        elseif (strpos($t, 'ahrefs')) return '[Bot] Ahrefs';
56
+        elseif (strpos($t, 'semrush')) return '[Bot] SEMRush';
57
+        elseif (strpos($t, 'rogerbot') || strpos($t, 'dotbot')) return '[Bot] Moz or OpenSiteExplorer';
58
+        elseif (strpos($t, 'frog') || strpos($t, 'screaming')) return '[Bot] Screaming Frog';
59
+
60
+        // Miscellaneous
61
+        elseif (strpos($t, 'facebook')) return '[Bot] Facebook';
62
+        elseif (strpos($t, 'pinterest')) return '[Bot] Pinterest';
63
+
64
+        // Check for strings commonly used in bot user agents
65
+        elseif (strpos($t, 'crawler') || strpos($t, 'api') ||
66
+            strpos($t, 'spider') || strpos($t, 'http') ||
67
+            strpos($t, 'bot') || strpos($t, 'archive') ||
68
+            strpos($t, 'info') || strpos($t, 'data')) return '[Bot] Other';
69
+
70
+        return 'Other (Unknown)';
71
+    }
72
+
73
+    public function isBot()
74
+    {
75
+        if (preg_match('#Bot#', $this->user)) {
76
+            return true;
77
+        } else {
78
+            return false;
79
+        }
80
+    }
81
+
82
+    // Alternative TO https://www.php.net/manual/fr/function.get-browser.php
83
+    // Function written and tested December, 2018
84
+
85
+    public function isAppRequest()
86
+    {
87
+        if (preg_match('#App#', $this->user)) {
88
+            return true;
89
+        } else {
90
+            return false;
91
+        }
92
+    }
93
+}
0 94
\ No newline at end of file
... ...
@@ -9,40 +9,19 @@ class Controlleur{
9 9
 	
10 10
 	public function __construct($application){
11 11
 
12
-
13
-        $requete = new MVC\Classe\Request();
14
-
15
-        switch ($requete->method) {
12
+        switch ($application->http->method) {
16 13
             //cas des requètes PUT et DELETE
17 14
             case 'PUT':
18 15
             case 'DELETE':
19
-                require CONTROLLER_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . 'HttpReponse.php';
20
-                $reponseHttp = lcfirst($application->url->page['name']) . 'HttpReponse';
21
-                $response = new $reponseHttp($application->url, $requete->getData());
22
-                if ($requete->method == 'DELETE') {
23
-                    $reponseHttp->delete();
24
-                } else {
25
-                    $reponseHttp->put();
26
-                }
27
-                break;
28
-            //cas des requètes POST et GET
29 16
             case 'POST':
30 17
             case 'GET':
31
-                if (!file_exists(CONTROLLER_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '')) {
18
+                if ($application->browser->isAppRequest()) {
32 19
                     require CONTROLLER_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . 'HttpReponse.php';
33
-                    $reponseHttp = lcfirst($application->url->page['name']) . 'HttpReponse';
34
-                    $response = new $reponseHttp($application->url, $requete->getData());
35
-                    if ($requete->method == 'POST') {
36
-                        $reponseHttp->post();
37
-                    } else {
38
-                        $reponseHttp->get();
39
-                    }
20
+                    $this->callHttpResponse($application);
40 21
                     break;
41 22
                 }
42 23
 
43
-
44 24
             default:
45
-
46 25
                 if ($application->url->page['control']) {
47 26
                     $url_params = $application->url->page['params'];
48 27
                     require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php';
... ...
@@ -54,5 +33,25 @@ class Controlleur{
54 33
 
55 34
 
56 35
 	}
36
+
37
+    public function callHttpResponse($application)
38
+    {
39
+        $reponseHttp = "\\" . $application->url->page['name'] . 'HttpReponse';
40
+
41
+        //FIXME:
42
+        //Le passage par le contructeur dans le cas d'une instanciation dynamique ne fonctionne pas
43
+        //$reponse = new $reponseHttp($application->url, $application->http->getData());
44
+        //il faut passer par une fonction personnelle permettant l'instanciation des variables
45
+
46
+        $reponse = new $reponseHttp();
47
+        $reponse->instanciate($application->url, $application->http->getData());
48
+        $method = strtolower($application->http->method);
49
+
50
+        $this->vue = new VueVide();
51
+        ob_start();
52
+        $reponse->$method();
53
+        $this->vue->ecran = ob_get_clean();
54
+        return;
55
+    }
57 56
 	
58 57
 }
59 58
new file mode 100644
... ...
@@ -0,0 +1,33 @@
1
+<?php
2
+
3
+
4
+namespace MVC\Classe;
5
+
6
+
7
+class ControlleurAction
8
+{
9
+
10
+    public static function inserer($action, $data = array())
11
+    {
12
+        $action = explode('.', $action);
13
+        $class = ucfirst($action[0]) . "Action";
14
+        //echo $class;
15
+        if (is_file(ACTION_PATH . DIRECTORY_SEPARATOR . $class . ".php")) {
16
+            require_once ACTION_PATH . DIRECTORY_SEPARATOR . $class . ".php";
17
+            $slot = new $class();
18
+            if (isset($action[1])) {
19
+                $method = $action[1];
20
+                return $slot->$method($data);
21
+            } else {
22
+                return $slot->default($data);
23
+            }
24
+
25
+        } else {
26
+            /*HandleError*/
27
+        }
28
+
29
+
30
+    }
31
+
32
+
33
+}
0 34
\ No newline at end of file
... ...
@@ -7,7 +7,11 @@ class Dumper{
7 7
 
8 8
     public static function dump($var){
9 9
         echo "<pre>";
10
-        print_r($var);
10
+        if (is_bool($var)) {
11
+            echo ($var) ? "true" : "false";
12
+        } else {
13
+            print_r($var);
14
+        }
11 15
         echo "</pre>";
12 16
     }
13 17
 
14 18
similarity index 80%
15 19
rename from application/class/Request.php
16 20
rename to application/class/HttpMethod.php
... ...
@@ -4,11 +4,11 @@
4 4
 namespace MVC\Classe;
5 5
 
6 6
 
7
-class Request
7
+class HttpMethod
8 8
 {
9 9
 
10 10
     public $method;
11
-    public $data;
11
+    protected $data;
12 12
 
13 13
     public function __construct()
14 14
     {
... ...
@@ -26,11 +26,11 @@ class Request
26 26
             case 'PUT':
27 27
                 //$this->data['GET'] = ...
28 28
                 //POST DATA except enctype="multipart/form-data"
29
-                $this->data['POST'] = json_decode(file_get_contents("php://input"), true);
29
+                $this->data = json_decode(file_get_contents("php://input"), true);
30 30
             case 'DELETE':
31 31
                 //$this->data['GET'] = ...
32 32
                 //POST DATA except enctype="multipart/form-data"
33
-                $this->data['POST'] = json_decode(file_get_contents("php://input"), true);
33
+                $this->data = json_decode(file_get_contents("php://input"), true);
34 34
                 break;
35 35
             default:
36 36
                 // Requête invalide
37 37
similarity index 64%
38 38
rename from application/class/Response.php
39 39
rename to application/class/HttpMethodRequete.php
... ...
@@ -40,10 +40,13 @@ namespace MVC\Classe;
40 40
  *
41 41
  * @package MVC\Classe
42 42
  */
43
-class Response
43
+class HttpMethodRequete
44 44
 {
45 45
     protected $url;
46 46
     protected $options;
47
+    protected $method;
48
+    protected $data;
49
+    protected $content;
47 50
 
48 51
     /**
49 52
      * Response multi-constructor.
... ...
@@ -85,7 +88,7 @@ class Response
85 88
     public function __construct2($url, $method)
86 89
     {
87 90
         $this->url = $url;
88
-
91
+        $this->method = $method;
89 92
         // utilisez 'http' même si vous envoyez la requête sur https:// ...
90 93
         $this->options = array(
91 94
             'http' => array(
... ...
@@ -102,28 +105,57 @@ class Response
102 105
         return $this;
103 106
     }
104 107
 
105
-    public function setGetParamsUrl($url, $params = array())
106
-    {
107
-        $this->url = $url . (strpos($url, '?') ? '&' : '?') . http_build_query($params);
108
-        return $this;
109
-    }
110
-
111
-    public function get($params = array())
112
-    {
113
-        return $this->replaceContext('GET')->addContent($params)->send();
114
-    }
115
-
108
+    /*
109
+        public function setGetParamsUrl($url, $params = array())
110
+        {
111
+            $this->url = $url . (strpos($url, '?') ? '&' : '?') . http_build_query($params);
112
+            return $this;
113
+        }
114
+    */
116 115
     public function send()
117 116
     {
118 117
 
119
-        $context = stream_context_create($this->options);
120
-        $result = file_get_contents($this->url, false, $context);
121
-        if ($result === FALSE) {
122
-            /* Handle error */
118
+//        /** Pour utiliser ce code il faut mettre la variable allow_furl_open a ON dans php.ini */
119
+//
120
+//        ob_start();
121
+//        Dumper::dump($this->options);
122
+//        Dumper::dump($this->url);
123
+//        $text = ob_get_clean();
124
+//        Logger::addLog('fopen',$text);
125
+//
126
+//        $context = stream_context_create($this->options);
127
+//        $result = file_get_contents($this->url, false, $context);
128
+//        if ($result === FALSE) {
129
+//            /* Handle error */
130
+//            return false;
131
+//        } else {
132
+//            return true;
133
+//        }
134
+
135
+        $curl_cmd = "curl -i -X $this->method -H 'Content-Type: application/json' -d '$this->content' $this->url";
136
+
137
+        /** Pour utiliser ce code il faut utiliser la variable curl.cainfo dans php.ini */
138
+        Logger::addLog('curl', $curl_cmd);
139
+
140
+        $curl = curl_init($this->url);
141
+        //curl_setopt($curl, CURLOPT_HEADER, false);
142
+        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
143
+        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $this->method);
144
+        curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($this->data));
145
+
146
+        $response = curl_exec($curl);
147
+        curl_close($curl);
148
+
149
+        if (!$response) {
123 150
             return false;
124 151
         } else {
125 152
             return true;
126 153
         }
154
+
155
+        /** Pour utiliser ce code il faut mettre la variable safe_mode a ON dans php.ini */
156
+        //exec($curl_cmd);
157
+
158
+
127 159
     }
128 160
 
129 161
     /**
... ...
@@ -131,23 +163,21 @@ class Response
131 163
      */
132 164
     public function addContent($data)
133 165
     {
134
-        //Exemple
135
-        //$this->data = array('name' => 'PEC', 'description' => 'Pencil 2H', 'price' => '2.25', 'category' => '9');
136
-        //'content' => http_build_query($data)
137
-        if (is_array($data)) {
138
-            $pContent = http_build_query($data);
139
-        }
140
-        $this->options['http']['content'] = $data;
166
+        $this->data = $data;
167
+        $this->content = json_encode($data);
168
+        $this->options['http']['content'] = http_build_query($data);
141 169
         return $this;
142 170
     }
143 171
 
144 172
     public function replaceContext($method)
145 173
     {
174
+        $this->method = $method;
146 175
         return $this->createContext($method);
147 176
     }
148 177
 
149 178
     public function createContext($method)
150 179
     {
180
+        $this->method = $method;
151 181
         // utilisez 'http' même si vous envoyez la requête sur https:// ...
152 182
         $this->options = array(
153 183
             'http' => array(
... ...
@@ -158,6 +188,11 @@ class Response
158 188
         return $this;
159 189
     }
160 190
 
191
+    public function get($params = array())
192
+    {
193
+        return $this->replaceContext('GET')->addContent($params)->send();
194
+    }
195
+
161 196
     public function post($params = array())
162 197
     {
163 198
         return $this->replaceContext('POST')->addContent($params)->send();
164 199
new file mode 100644
... ...
@@ -0,0 +1,27 @@
1
+<?php
2
+
3
+
4
+namespace MVC\Classe\Implement;
5
+
6
+
7
+class Action
8
+{
9
+    public function render($view, $data)
10
+    {
11
+
12
+        //ob_start();
13
+
14
+        $paths = new \SplPriorityQueue;
15
+
16
+        $paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "system", 100);
17
+        $paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "layout", 200);
18
+        $paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "view", 300);
19
+
20
+        $renderer = new \Windwalker\Renderer\BladeRenderer($paths, array('cache_path' => VIEW_PATH . DIRECTORY_SEPARATOR . "cache"));
21
+
22
+        return $renderer->render($view, $data);
23
+
24
+        //return ob_get_clean();
25
+
26
+    }
27
+}
0 28
\ No newline at end of file
... ...
@@ -5,13 +5,20 @@ namespace MVC\Classe\Implement;
5 5
 
6 6
 use MVC\Classe\Implement\Contrat\HttpReponseInterface;
7 7
 
8
-class HttpReponse implements HttpReponseInterface
8
+class HttpReponse extends Action implements HttpReponseInterface
9 9
 {
10 10
 
11 11
     public $url;
12 12
     public $params;
13 13
     public $data;
14 14
 
15
+    /**
16
+     * Le passage par le contructeur dans le cas d'une instanciation dynamique ne fonctionne pas
17
+     * http://www.thedarksideofthewebblog.com/appel-dynamique-de-constructeur-en-php/
18
+     * il faut passer par une fonction personnelle permettant l'instanciation des variables
19
+     * @param $url
20
+     * @param $requestData
21
+     */
15 22
     public function __contruct($url, $requestData)
16 23
     {
17 24
         $this->url = $url;
... ...
@@ -19,6 +26,13 @@ class HttpReponse implements HttpReponseInterface
19 26
         $this->data = $requestData;
20 27
     }
21 28
 
29
+    public function instanciate($url, $requestData)
30
+    {
31
+        $this->url = $url;
32
+        $this->params = $url->page['params'];
33
+        $this->data = $requestData;
34
+    }
35
+
22 36
     public function put()
23 37
     {
24 38
 
... ...
@@ -3,19 +3,36 @@
3 3
 
4 4
 namespace MVC\Classe\Implement;
5 5
 
6
+use MVC\Classe\Dumper;
7
+use MVC\Classe\Url;
8
+use MVC\Classe\HttpMethod;
6 9
 use MVC\Classe\Implement\Contrat\RestReponseInterface;
7 10
 
8
-class HttpReponse implements RestReponseInterface
11
+class RestReponse implements RestReponseInterface
9 12
 {
10 13
 
11 14
     public $url;
12 15
     public $params;
13 16
     public $data;
14 17
 
18
+    /**
19
+     * Le passage par le contructeur dans le cas d'une instanciation dynamique ne fonctionne pas
20
+     * http://www.thedarksideofthewebblog.com/appel-dynamique-de-constructeur-en-php/
21
+     * il faut passer par une fonction personnelle permettant l'instanciation des variables
22
+     * @param $url
23
+     * @param $requestData
24
+     */
15 25
     public function __contruct($url, $requestData)
16 26
     {
17 27
         $this->url = $url;
18
-        $this->params = $url['params'];
28
+        $this->params = $url->page['params'];
29
+        $this->data = $requestData;
30
+    }
31
+
32
+    public function instanciate($url, $requestData)
33
+    {
34
+        $this->url = $url;
35
+        $this->params = $url->page['params'];
19 36
         $this->data = $requestData;
20 37
     }
21 38
 
22 39
new file mode 100644
... ...
@@ -0,0 +1,25 @@
1
+<?php
2
+
3
+
4
+namespace MVC\Classe;
5
+
6
+
7
+use Symfony\Component\Validator\Constraints\Date;
8
+
9
+class Logger
10
+{
11
+
12
+    static function addLog($type = 'default', $what = "")
13
+    {
14
+        $file = LOG_PATH . DIRECTORY_SEPARATOR . 'app.' . $type . '.log';
15
+        $browser = new Browser();
16
+        $date = date("F j, Y, g:i a");
17
+        $what = PHP_EOL . '[' . $date . ' by ' . $browser->user . ']' . PHP_EOL . $browser->userAgent . PHP_EOL . $what;
18
+        if (is_file($file)) {
19
+            file_put_contents($file, PHP_EOL . $what, FILE_APPEND | LOCK_EX);
20
+        } else {
21
+            file_put_contents($file, $what);
22
+        }
23
+    }
24
+
25
+}
0 26
\ No newline at end of file
... ...
@@ -10,7 +10,8 @@ class Url
10 10
     public $registre;
11 11
 
12 12
 
13
-    public function __construct(){
13
+    public function __construct($method, $appRequest)
14
+    {
14 15
 
15 16
         //on créé le registre des modules symfony
16 17
         $this->registre = new \MVC\Classe\ModularRegister();
... ...
@@ -77,11 +78,33 @@ class Url
77 78
         if($page['control']){
78 79
             $pageFile = TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php';
79 80
         }else {
80
-            $pageFile = CONTROLLERS_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php';
81
+            //recherche du fichier controlleur correpondant HTTP1.1 ou HTTP1.0
82
+            switch ($method) {
83
+                //cas des requètes HTTP1.1
84
+                case 'PUT':
85
+                case 'DELETE':
86
+                case 'GET':
87
+                case 'POST':
88
+                    if ($appRequest) {
89
+                        $page['name'] = ucfirst($page['name']);
90
+                        $pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'HttpReponse.php';
91
+                    } else {
92
+                        $page['name'] = lcfirst($page['name']);
93
+                        $pageFile = CONTROLLERS_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php';
94
+                        if (!file_exists($pageFile)) {
95
+                            $page['name'] = ucfirst($page['name']);
96
+                            $pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'HttpReponse.php';
97
+                        }
98
+                    }
99
+            }
81 100
         }
82 101
 
83
-        if(!file_exists($pageFile)){
84
-            $page['name'] = 'error';
102
+        if (!file_exists($pageFile)) {
103
+            if ($appRequest) {
104
+                $page['name'] = 'error';
105
+            } else {
106
+                $page['name'] = 'Error';
107
+            }
85 108
         }
86 109
         $this->page = $page;
87 110
 
... ...
@@ -115,4 +138,22 @@ class Url
115 138
         return '/' . 'control' . '/' . $page . $stringParams;
116 139
     }
117 140
 
141
+    static public function absolute_link_rewrite($isControlPatern, $page, $params = array())
142
+    {
143
+        $url = $_SERVER['HTTP_HOST'];
144
+        if ($isControlPatern) {
145
+            $uri = self::controlLink_rewrite($page, $params);
146
+        } else {
147
+            $uri = self::link_rewrite_slashParam($page, $params);
148
+        }
149
+        if (isset($_SERVER['REQUEST_SCHEME'])) {
150
+            $scheme = $_SERVER['REQUEST_SCHEME'];
151
+        } else {
152
+            $scheme = 'http';
153
+        }
154
+
155
+        return ($scheme . "://" . $url . $uri);
156
+
157
+    }
158
+
118 159
 }
119 160
new file mode 100644
... ...
@@ -0,0 +1,15 @@
1
+<?php
2
+
3
+namespace MVC\Classe;
4
+
5
+
6
+class VueVide
7
+{
8
+
9
+    public $ecran;
10
+
11
+    public function __construct()
12
+    {
13
+    }
14
+
15
+}
... ...
@@ -4,6 +4,7 @@ define("MODULES_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "modules");
4 4
 define("CONTROLLERS_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "controlleurs");
5 5
 define("CONFIG_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "config");
6 6
 define("LOG_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "logs");
7
+define("ACTION_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "actions");
7 8
 define("MODELS_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "modeles");
8 9
 define("VIEW_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "vues");
9 10
 define("CONTROLLER_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "controlleurs");
10 11
new file mode 100644
... ...
@@ -0,0 +1,67 @@
1
+<?php
2
+
3
+use MVC\Classe\HttpMethodRequete;
4
+use MVC\Classe\Implement\Action;
5
+use MVC\Classe\Url;
6
+use MVC\Classe\Response;
7
+
8
+class DefaultAction extends Action
9
+{
10
+    public function default($data)
11
+    {
12
+
13
+        /**your action algorythm**/
14
+        if (isset($data[0])) {
15
+            $var1 = $data[0];
16
+        } else {
17
+            $var1 = 1;
18
+        }
19
+        if (isset($data[1])) {
20
+            $var2 = $data[1];
21
+        } else {
22
+            $var2 = 2;
23
+        }
24
+        if (isset($data[2])) {
25
+            $var3 = $data[2];
26
+        } else {
27
+            $var3 = 3;
28
+        }
29
+
30
+        return $this->render('action', array('var1' => $var1, 'var2' => $var2, 'var3' => $var3));
31
+    }
32
+
33
+    public function variableSlug($data)
34
+    {
35
+
36
+        /**your action algorythm**/
37
+        if (isset($data[0])) {
38
+            $var1 = $data[0];
39
+        } else {
40
+            $var1 = 1;
41
+        }
42
+        if (isset($data[1])) {
43
+            $var2 = $data[1];
44
+        } else {
45
+            $var2 = 2;
46
+        }
47
+        if (isset($data[2])) {
48
+            $var3 = $data[2];
49
+        } else {
50
+            $var3 = 3;
51
+        }
52
+
53
+        return $this->render('action', array('var1' => $var1, 'var2' => $var2, 'var3' => $var3));
54
+    }
55
+
56
+    public function makeHttp11($data)
57
+    {
58
+
59
+        $data = array('myval' => 25);
60
+
61
+        $request = new HttpMethodRequete();
62
+        //$request->setUrl(Url::absolute_link_rewrite(false,'accueil',['var10'=>'val10']))->get($data);
63
+        //$request->setUrl(Url::absolute_link_rewrite(false,'accueil',['var10'=>'val10']))->post($data);
64
+        $request->setUrl(Url::absolute_link_rewrite(false, 'accueil', ['var10' => 'val10']))->put($data);
65
+        //$request->setUrl(Url::absolute_link_rewrite(false,'accueil',['var10'=>'val10']))->delete($data);
66
+    }
67
+}
0 68
deleted file mode 100644
... ...
@@ -1,16 +0,0 @@
1
-<?php
2
-
3
-use MVC\Classe\Implement\HttpReponse;
4
-
5
-class AcceuilHttpReponse extends HttpReponse
6
-{
7
-    public function put()
8
-    {
9
-        echo $this->params . "<br/>" . $this->data;
10
-    }
11
-
12
-    public function delete()
13
-    {
14
-
15
-    }
16
-}
17 0
\ No newline at end of file
18 1
new file mode 100644
... ...
@@ -0,0 +1,45 @@
1
+<?php
2
+
3
+use MVC\Classe\Dumper;
4
+use MVC\Classe\Implement\RestReponse;
5
+use MVC\Classe\Logger;
6
+
7
+class AccueilHttpReponse extends RestReponse
8
+{
9
+
10
+    public function put()
11
+    {
12
+        ob_start();
13
+        Dumper::dump($this->params);
14
+        Dumper::dump($this->data);
15
+        $text = ob_get_clean();
16
+        Logger::addLog('put', '____Hello Put____' . PHP_EOL . $text);
17
+    }
18
+    public function delete()
19
+    {
20
+        ob_start();
21
+        Dumper::dump($this->params);
22
+        Dumper::dump($this->data);
23
+        $text = ob_get_clean();
24
+        Logger::addLog('delete', '____Hello Delete:____' . PHP_EOL . $text);
25
+
26
+    }
27
+
28
+    public function get()
29
+    {
30
+        ob_start();
31
+        Dumper::dump($this->params);
32
+        Dumper::dump($this->data);
33
+        $text = ob_get_clean();
34
+        Logger::addLog('get', '____Hello GET____' . PHP_EOL . $text);
35
+    }
36
+
37
+    public function post()
38
+    {
39
+        ob_start();
40
+        Dumper::dump($this->params);
41
+        Dumper::dump($this->data);
42
+        $text = ob_get_clean();
43
+        Logger::addLog('post', '____Hello POST____' . PHP_EOL . $text);
44
+    }
45
+}
0 46
\ No newline at end of file
1 47
new file mode 100644
... ...
@@ -0,0 +1,27 @@
1
+<?php
2
+
3
+use MVC\Classe\Implement\RestReponse;
4
+use MVC\Classe\Logger;
5
+
6
+class ErrorHttpReponse extends RestReponse
7
+{
8
+    public function put()
9
+    {
10
+        Logger::addLog('put', 'Error PUT');
11
+    }
12
+
13
+    public function delete()
14
+    {
15
+        Logger::addLog('delete', 'Error DELETE');
16
+    }
17
+
18
+    public function get()
19
+    {
20
+        Logger::addLog('get', 'Error GET');
21
+    }
22
+
23
+    public function post()
24
+    {
25
+        Logger::addLog('post', 'Error POST');
26
+    }
27
+}
0 28
\ No newline at end of file
... ...
@@ -1,2 +1,7 @@
1 1
 <?php
2
-$templateData = array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge');
3 2
\ No newline at end of file
3
+
4
+
5
+use MVC\Classe\Logger;
6
+
7
+$templateData = array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge');
8
+Logger::addLog('ok', 'Hello world');
4 9
\ No newline at end of file
... ...
@@ -13,5 +13,10 @@
13 13
     <hr/>
14 14
     {{$templating_a}}::{{$templating_b}}::{{$templating_c}}
15 15
 
16
+    {{\MVC\Classe\ControlleurAction::inserer('default',[])}}
17
+    {{\MVC\Classe\ControlleurAction::inserer('default.default',[4,5,6])}}
18
+    {{\MVC\Classe\ControlleurAction::inserer('default.variableSlug',['var1','var2','var3'])}}
19
+    {{\MVC\Classe\ControlleurAction::inserer('default.makeHttp11',[])}}
20
+
16 21
 @endsection
17 22
 
18 23
new file mode 100644
... ...
@@ -0,0 +1 @@
1
+{{$var1}}::{{$var2}}::{{$var3}}
0 2
\ No newline at end of file
... ...
@@ -12,6 +12,8 @@
12 12
     "require": {
13 13
 
14 14
         "php": "^7.1.3",
15
+      "ext-json": "*",
16
+      "ext-curl": "*",
15 17
         "windwalker/renderer": "3.*",
16 18
         "illuminate/view": "4.*",
17 19
         "hybridauth/hybridauth": "~3.0"