php - 如何解决 php 7.1.3 和 jpgraph 4.2.6 中的“Uncaught TypeError: Argument 1 passed to JpGraphException::defaultHandler()”问题?
问题描述
我正在使用带有 jpgraph 的数据库的 Satisfaction 表单来处理图表,并且遇到了一些处理程序错误的问题。
这是我的程序:
<?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::defaultHandler() 的参数 1 必须是 Exception 的实例,C:\Users\Stric\Documents\projet-tut\projet-tut\src\jpgraph_errhandler.inc 中给出的错误实例.php:158 堆栈跟踪:#0 [内部函数]:JpGraphException::defaultHandler(Object(Error)) #1 {main} 在 C:\Users\Stric\Documents\projet-tut\projet-tut\src\ 中抛出jpgraph_errhandler.inc.php 在第 158 行
这是各自的第 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 - “试图获取非对象的属性 'id'”
- javascript - Angular 7 - 网络 url 正则表达式检查在每次调用时给出不同的结果
- javascript - 如何更改某些元素的位置异步使用jquery
- django - 如何在 django 的模型窗体小部件中添加自定义错误消息
- sql - SQL DATEDIFF 结果在几小时内与 Excel 不同
- php - 如何在 whatsapp 和其他社交媒体上分享我的网站链接?
- asp.net-mvc - 如何在 MVC Core 和用户界面中测试特定控制器?
- java - JFrame 的默认图标在动态更新期间在 Win 任务栏中间歇性显示
- javascript - 在 ReactJS 中获取数据
- php - 如何在 PHP 中创建函数