解决gpgraph4.02在php7.0显示空白框问题



     Gpgraph类库强大的绘制图表的功能深受广大phper的喜爱,目前官方最新的版本是
jpgraph-4.0.2 ,适用于php5.0及7.0以上的版本。当我们安装gpgraph施展拳脚的时候,发现打开gpgraph的例子
的显示出来的就只是一个白色的方块,没有显示图表也没有任何提示信息。比如这样:


       看了一下广官方网站也,也没有给出具体的方法。那我们只能自己摸索解决办法了。
其实方法很简单,几步就可以解决。

解决方案:

 
       第一步:打开php的错误日志,我用的是wamp(其他开发环境也是大同小异),直
接单击任务栏图标=>php=>错误日志。直接用记事本打开, 打开后是这样子(建议打开
后清空错误日志的记录,以便于我们更好地定位错误)。

       再次运行gpgraph的例子,然后打开错误日志,在这里我们就可以看到错误的具体
信息了。我这里提示的是   Methods with the same name as their class will not be con-
structors in a future version of PHP; LinePlot has a deprecated constructor in D:\prfec
\wamp64\www\jpgraph-4.0.2\src\jpgraph_line.php on line 24。大概意思说现阶段的php
版本不支持与类同名的构造函数,然后接着告诉我们错误发生的位置。

         第二步:根据错误日志提供的地址,打开相应的文件,找到具体的那一行。我这里
是D:\prefect\wamp64\www\jpgraph-4.0.2\src\jpgraph_line.php on line 24。
         接着定位到构造函数这一行:


       我们只需要把function LinePlot改为function __construct即可。接下来再次运行gp
grap的example,就可以正常显示了(假若还是不能,还是按照上述的方法,定位错误,
修改函数名就可以了,因为不止一个类这样命名构造函数)正常的样子应该是这样:

原因剖析:

    在php5之前的版本中为了兼容性,构造函数的命名可以是与类的名字相同,比如:
类名是“class LinePlot”,那么它的构造函数也就是“function LinePlot”,相信学
过php面对对象编程的同学会有一定的了解。到了php7.0的版本,为了让php更加的规范,
减少歧义就放弃了这种写法,统一以“function __construct”来创建构造函数。在本次的
教程中,可能是gpgraph的作者,疏忽了php7.0的新特性,继续沿用以前的方法来出创建
构造函数,才出现这样的bug。
       通过这次案例也提醒我们,IT知识更新速度十分快速,我们一定要不断为自己充电,
才能让自己的作品适应技术的发展。

解决jpgraph在php7.0版本下时,无法显示例子图表的问题的更多相关文章

  1. Redis 3.0版本启动时出现警告的解决办法

    原文:http://m.blog.csdn.net/article/details?id=50864933 Redis 3.0.7版本启动时出现警告的解决办法 发表于2016/3/12 12:52:4 ...

  2. php7.0版本不再以类名命名构造函数

    <?php class Car { var $color = "add"; function Car($color="green") { $this-&g ...

  3. 关于windows下基于php7.0.2下编写的第一个扩展

    网上的教程是比较多的,但是基于php7+windows的教程非常之少,通过几天的摸索及参考很多资料,终于发现如下可以运行. php7要求使用vc2015,同时安装sdk,我使用的是8.1的window ...

  4. 在win7中解决Visual C++ 6.0打开文件时出现停止工作问题

    在使用Visual C++ 6.0打开文件时可能会出现下面的情况 这可能是Vc6.0和win7兼容性问题. 方法: 下载filetool即可 链接:https://pan.baidu.com/s/1X ...

  5. 解决关于VC++ 6.0打开文件时,程序停止的问题

    不少boys和girls安装VC++ 6.0英文版后,开始学习C++语言,但是使用软件的过程中,点击“打开”时,就会出现程序进程错误,崩溃的事儿,很是郁闷.最后直接一个对话框如下: 并且vc6.0直接 ...

  6. phpstudy 2016 切换Nginx+php7.0版本所需运行库 vc14 + 安装redis拓展

    去微软官方下载vc14的运行库 链接:https://www.microsoft.com/en-us/download/details.aspx?id=48145 32位运行库 安装成功 切换版本成功 ...

  7. mysql8.0版本下命令行mysqld –skip-grant-tables 失效,无法登陆的问题

    1.管理员权限登陆cmd,不会使用管理员登陆的请搜索cmd,搜索结果右键. 2.命令行输入:net stop mysql;然后提示.服务停止中 --> 服务已停止,如出现其他错误请百度. 这只是 ...

  8. mysql在8.0版本下修改密码的命令

    ubuntu20.04上边部署了一个新的mysql服务,默认没密码,想要修改密码. 使用如下手段 第一种:ALTER USER 'root'@'localhost' IDENTIFIED BY '密码 ...

  9. ubantu php7.0版本降级到php5.6

    http://askubuntu.com/questions/756879/cant-install-php5-on-ubuntu-16-04

随机推荐

  1. SharePoint Framework 企业向导(四)

    博客地址:http://blog.csdn.net/FoxDave 接上一讲 嵌入JavaScript脚本 开发者常常使用的比较受欢迎的开发方式是嵌入JavaScript脚本,也叫JavaScri ...

  2. netty源码理解(三) 从channel读取数据

    下面的是ServerBootstrap 的内部类 ServerBootstrapAcceptor extends ChannelInboundHandlerAdapter 的方法 这里其实卡住了我很长 ...

  3. <HBase><读写><LSM>

    Overview HBase中的一个big table,首先会按行划分成一些region(这些region之间是有序的,由startkey保证),每个region分配到不同的节点进行存储.因此,reg ...

  4. MySQL:存储过程和函数

    存储过程和函数 一.创建存储过程和函数 1.创建存储过程 语法: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic . ...

  5. kbmMW安全第#3 - 基于硬件的随机数#2

    在之前的基于硬件的随机数博文中,我介绍了如何使用基于外部硬件的随机数生成器,来生成高质量的随机数. 但是,后来英特尔和AMD的CPU也包含随机值生成器.从2015年6月开始,来自Ivy Bridge的 ...

  6. 团队-团队编程项目爬取豆瓣电影top250-代码设计规范

    1.类名使用首字母大写(骆驼命名法) 2.函数名应该为小写 3.用下划线开头定义私有的属性或方法 4.命名要使用有意义的,英文单词或词组 5.行尾不加分号 6.4个空格缩进代码 7.操作运算符注意优先 ...

  7. wx小程序用canvas生成图片流程与注意事项

    1.需要画入canvas的 图片都需要先缓存到本地 let ps = [] ps.push(that.loadImageFun(this.statusInfo.avatar_url, "he ...

  8. Spring MVC之ResposeEntity下载文件

    Spring Mvc中用ResponseEntity方式下载文件如下: @RequestMapping("/download") public ResponseEntity< ...

  9. Python之路,第四篇:Python入门与基础4

    Python3 字符串 字符串是一个有序的字符序列 如何表示一个字符串: 在非注释中凡是用引号括起来的部分都是字符串: ‘  单引号     ”  双引号      ‘’‘  三单引号    “”“ ...

  10. RMQ_ST表

    ]; ]; ]; void init(int n) { int i, j; pwr[] = ; ; i<; ++i) pwr[i] = pwr[i-] << ; ; pwr[j]&l ...