如何修复php 7.1.3和jpgraph 4.2.6中的“Uncaught TypeError:Argument 1传递给JpGraphException :: defaultHandler()”问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修复php 7.1.3和jpgraph 4.2.6中的“Uncaught TypeError:Argument 1传递给JpGraphException :: defaultHandler()”问相关的知识,希望对你有一定的参考价值。
我正在使用带有jpgraph的数据库的满意形式的图形,我遇到了一些处理程序错误的问题。
这是我的计划:
<?php
require_once("./src/jpgraph.php");
require_once("./src/jpgraph_pie.php");
require_once("./src/jpgraph_pie3d.php");
$db="questionnaire";
try
$bdd=new PDO('mysql:host=localhost;dbname='.$db,'root','');
catch(Exception $exception)
die('Erreur :'.$exception->getMessage());
//var
$req=$bdd->prepare('SELECT Adaptation1 FROM s3');
// on execute la requete avec le contenu saisi 'user'
$req->execute();
$valpour = 100;
$comptage=array(
"Vide"=>0,
"Satisfaisante"=>0,
"Inadaptee"=>0,
"Incomplete"=>0);
/*$vide = cal_pour($comptage["Vide"],$comptage,$valpour);
$Satisfaisante = cal_pour($comptage["Satisfaisante"],$comptage,$valpour);
$Inadaptee = cal_pour($comptage["Inadaptee"],$comptage,$valpour);
$Incomplete = cal_pour($comptage["Incomplete"],$comptage,$valpour);*/
while ($donnees=$req->fetch(PDO::FETCH_ASSOC))
foreach ($donnees as $indice=>$valeur)
echo $valeur."<br/>";
if ($valeur=="") $comptage["Vide"]++;
else $comptage[$valeur]++;
/*function cal_pour($nombre,$total,$pourcentage)
$resultat = ($nombre/$total) * $pourcentage;
return round($resultat); // Arrondi la valeur
*/
$data = array($comptage["Vide"],$comptage["Satisfaisante"],$comptage["Inadaptee"],$comptage["Incomplete"]);
//print_r($data);
$graph = new PieGraph(400,300);
$theme_class= new VividTheme;
$graph->SetTheme($theme_class);
$graph->title->Set("Résultat Question PPN");
$p1 = new PiePlot3D($data);
$graph = Add($p1);
$p1->ShowBorder();
$p1->SetColor("green");
$p1->ExplodeSlice(1);
$graph->Stroke();
?>
这是我得到的错误:
致命错误:未捕获的TypeError:传递给JpGraphException的参数1 :: defaultHandler()必须是Exception的实例,在C:\ Users \ Stric \ Documents \ projet-tut \ projet-tut \ src \ jpgraph_errhandler.inc中给出Error的实例.php:158堆栈跟踪:#0 [内部函数]:JpGraphException :: defaultHandler(Object(Error))#1 main抛出C:\ Users \ Stric \ Documents \ projet-tut \ projet-tut \ src \第158行的jpgraph_errhandler.inc.php
这是相应的第158行:
static public function defaultHandler(Exception $exception)
global $__jpg_OldHandler;
if( $exception instanceof JpGraphException )
$exception->Stroke();
else
// Restore old handler
if( $__jpg_OldHandler !== NULL )
set_exception_handler($__jpg_OldHandler);
throw $exception;
只需将$graph = Add($p1);
更改为$graph->Add($p1);
,您的图表即可生效。
$p1 = new PiePlot3D($data);
$graph->Add($p1); // this is where the change is
$p1->ShowBorder();
$p1->SetColor("green");
$p1->ExplodeSlice(1);
$graph->Stroke();
以上是关于如何修复php 7.1.3和jpgraph 4.2.6中的“Uncaught TypeError:Argument 1传递给JpGraphException :: defaultHandler()”问的主要内容,如果未能解决你的问题,请参考以下文章