解决jpgraph在php7.0版本下时,无法显示例子图表的问题
解决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版本下时,无法显示例子图表的问题的更多相关文章
- Redis 3.0版本启动时出现警告的解决办法
原文:http://m.blog.csdn.net/article/details?id=50864933 Redis 3.0.7版本启动时出现警告的解决办法 发表于2016/3/12 12:52:4 ...
- php7.0版本不再以类名命名构造函数
<?php class Car { var $color = "add"; function Car($color="green") { $this-&g ...
- 关于windows下基于php7.0.2下编写的第一个扩展
网上的教程是比较多的,但是基于php7+windows的教程非常之少,通过几天的摸索及参考很多资料,终于发现如下可以运行. php7要求使用vc2015,同时安装sdk,我使用的是8.1的window ...
- 在win7中解决Visual C++ 6.0打开文件时出现停止工作问题
在使用Visual C++ 6.0打开文件时可能会出现下面的情况 这可能是Vc6.0和win7兼容性问题. 方法: 下载filetool即可 链接:https://pan.baidu.com/s/1X ...
- 解决关于VC++ 6.0打开文件时,程序停止的问题
不少boys和girls安装VC++ 6.0英文版后,开始学习C++语言,但是使用软件的过程中,点击“打开”时,就会出现程序进程错误,崩溃的事儿,很是郁闷.最后直接一个对话框如下: 并且vc6.0直接 ...
- phpstudy 2016 切换Nginx+php7.0版本所需运行库 vc14 + 安装redis拓展
去微软官方下载vc14的运行库 链接:https://www.microsoft.com/en-us/download/details.aspx?id=48145 32位运行库 安装成功 切换版本成功 ...
- mysql8.0版本下命令行mysqld –skip-grant-tables 失效,无法登陆的问题
1.管理员权限登陆cmd,不会使用管理员登陆的请搜索cmd,搜索结果右键. 2.命令行输入:net stop mysql;然后提示.服务停止中 --> 服务已停止,如出现其他错误请百度. 这只是 ...
- mysql在8.0版本下修改密码的命令
ubuntu20.04上边部署了一个新的mysql服务,默认没密码,想要修改密码. 使用如下手段 第一种:ALTER USER 'root'@'localhost' IDENTIFIED BY '密码 ...
- ubantu php7.0版本降级到php5.6
http://askubuntu.com/questions/756879/cant-install-php5-on-ubuntu-16-04
随机推荐
- 7.4 C++标准模板库(STL)的概念
参考:http://www.weixueyuan.net/view/6401.html 总结: 标准模板库为C++提供了完善的数据结构及算法. 标准模板库包括三部分:容器.算法和迭代器. 容器是对象 ...
- String类的常用方法总结
一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建 ...
- LeetCode 151 翻转字符串里的单词
题目: 给定一个字符串,逐个翻转字符串中的每个单词. 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 ...
- CodeForces - 779D
Little Nastya has a hobby, she likes to remove some letters from word, to obtain another word. But i ...
- <Maven><Dependency><Conflict><Could not resolve>
maven conflict solution: scenerio: Runtime Error: ``` java.lang.SecurityException: class "javax ...
- ios UITableView背景图片设置
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPa ...
- Day18作业及默写
人狗大战 #!/usr/bin/env python # encoding: utf-8 # Author: MeiMeiLong <2559184081@qq.com> # Create ...
- YUM仓库配置
YUM的前身是YUP(Yellow dog Updater,Yellow dog Linux的软件更新器),最初由TSS公司(Terra Soft Solutions,INC.)使用Python语言开 ...
- Java学习笔记22(List接口)
List接口继承自Collection接口,自身具有三大特点: 1.有序集合:存入和取出的顺序一致: 2.此接口的用户可以对每个元素插入位置进行精确控制:可以通过索引操作元素 3.可以存储重复元素 L ...
- Puppet的一些奇技淫巧
puppet这个工具真的很神奇,先不说商业版有哪些黑科技,单是开源版本就有很多可能让你摸不着头脑的地方,下面来列举一下puppet是怎么查找puppet server的 其实很简单,puppet ag ...