因为一个codeigniter开发的项目上要用到图表。FusionChart是flash技术,在某些情况下可能造成无法使用(如ipad)。因此不禁想起了之前用Pchart做的图表项目。
但是毕竟是在CI里,有时候为了吻合框架的特性,不得不去迁就而修改自己的代码。
最初我的想法是把Pchart的类文件放在libraries文件里,然后在controllers控制器里调用,可以总是出现各种错误。尝试了很多次都是失败,难道在CI里用Pchart这么难?!!!
于是去百度+谷歌上去找相关的资料。找到了N多篇相同的标题为“在CI中使用pChart库”这类的文章,并且内容都95%惊人的相似。看来世界的确是大同了,思想都一样了(不太喜欢贴别人文章不表明转载的,人家博主写篇文章多费劲啊,你这得了便宜还卖乖,粘贴下成自己的了。).
好吧,看下思路,大致是在libraries里多创建一个类,来调用Pchart的类,进而达到使用目的。不知道大伙有没有测试,不过我这边测试的时候总有问题,于是心里很着急,又尝试了很多次,还是失败。于是就想自己写算了。不过还是运用了网络上文章的思路。即把Pchart类包放置于libraries下。但是调用类中的方法确实自己运用之前非CI框架下的方法。
目录架构类似于这样:
--demoweb
--application
--....
--libraries
--pChart
--pChart的众类文件
--Mychart.php
--...
--system
个人是把字体都和Pchart的类文件都放在pChart这个目录里的。等下看代码的时候大家就会注意到了。
下面贴出来Mychart.php(即调用的pchart的类文件),以及控制器里方法的测试示例代码:
Mychart.php示例代码:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* FOR:调用pchart类绘制图表
* @author cheng.yafei
* @version 1.0
**/
class Mychart {
/**
* FOR:画图,立体饼图
* @param $dataArray 详细票数数组
* @param $reportArr 详细票数对应选项数组
**/
function draw3DPieImage($dataArray, $lableArray)
{
include(dirname(__FILE__)."/pChart/pData.class");
include(dirname(__FILE__)."/pChart/pChart.class");
$datanum = $dataArray;
$dataname = $lableArray;
// Dataset definition
$DataSet = new pData;
$DataSet->A