J'ai fait un petit test pour identifier le problème en gardant l'architecture MVC :
En fait mon code s'exécute bien, l'erreur survient quand je rajoute
Code : Tout sélectionner
ini_set("display_errors", "1");
error_reporting(E_ALL);
mais ayant beaucoup de valeurs nulles dans mon fichier json, j'ai remarqué que ça ralentissait énormément mon traitement PHP. Les valeurs nulles sont normales, en revanche le fait de ne pas réussir à empécher les codes d'erreurs pour des valeurs nulles, là je bloque.
Voici le test
my test.json files :
Code : Tout sélectionner
{
"data1": "test1",
"data2": "test2",
"data3": "test3",
"data4": "test4",
"data5": "test5",
"data6": {
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4",
"key5": "value5",
"key6": "value6",
"key7": "value7"
},
"data7": "test7"
}
my index.php :
Code : Tout sélectionner
<?php
/* DEBUG FUNCTION */
ini_set("display_errors", "1");
error_reporting(E_ALL);
require 'test_controller.php';
$controller = new Controller();
$controller->dispatch();
my test_controller.php :
Code : Tout sélectionner
<?php
require 'test_view.php';
require 'test_model.php';
class Controller
{
protected $view;
protected $model;
public function __construct()
{
$this->view = new TestView();
$this->model = new TestModel();
}
public function dispatch()
{
$json = $this->model->getAPI();
$this->view->displayHome($json);
}
}
my test_model.php :
Code : Tout sélectionner
<?php
class TestModel
{
public function __construct()
{
}
public function getAPI()
{
$data = file_get_contents('test.json');
$json = json_decode($data);
return $json;
}
}
my test_view.php :
Code : Tout sélectionner
<?php
class TestView
{
public function __construct()
{
}
public function parseJson($datas){
$value = '∅';
$data = (isset($datas)) ? $datas : $value ;
return $data;
}
public function displayHome($datas) {
$page = $this->parseJson($datas->data1);
$page .= '<br>';
$page .= $this->parseJson($datas->nodata);
$page .= '<br>';
$page .= $this->parseJson($datas->data6->key1);
$page .= '<br>';
$page .= $this->parseJson($datas->data6->nokey);
$page .= '<br>';
echo $page;
}
}
Le résultat est le suivant :
Notice: Undefined property: stdClass::$nodata in /home/meteobel/networkbell.com/mbell/test/test_view.php on line 21
Notice: Undefined property: stdClass::$nokey in /home/meteobel/networkbell.com/mbell/test/test_view.php on line 25
test1
∅
value1
∅
J'ai donc bien le résultat attendu (les valeurs nulles sont remplacés par ∅ = '∅'), mais les codes d'erreurs révélés et la lenteur d'exécution me posent problème
Aussi je ne comprend pas pourquoi j'ai :
Notice: Undefined property: stdClass::
alors que je fait un test avec isset avec ma fonction parseJson()
Merci de m'apporter de l'aide.
Cordialement