scorpionslh / highcharts-php
Highcharts 和 highstock JavaScript 库的 PHP 封装器
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-30 00:32:59 UTC
README
HighchartsPHP 是一个 PHP 库,作为 Highchart js 库的封装器(http://www.highcharts.com),它考虑了灵活性和可维护性。这不是简单地将 JavaScript 库移植到 PHP,而是设计成模仿 JavaScript 对应 API 的方式,以便开发者只需要学习一个 API。
配套网页可在以下链接找到:http://www.goncaloqueiros.net/highcharts.php
安装
推荐通过 Composer
安装 HighchartsPHP。只需创建一个 composer.json
文件并运行 php composer.phar install
命令即可安装。
{ "require": { "ghunti/highcharts-php": "~3.0" } }
使用方法
简单
您可以使用三种可用的 js 引擎之一(jQuery、mootools 和 prototype)通过 Highchart 构造函数创建一个 highchart 或 highstock 图表。
//This will create a highchart chart with the jquery js engine $chart = new Highchart();
//To create a highstock chart with the jquery js engine $stockChart = new Highchart(Highchart::HIGHSTOCK);
//Create a highchart chart with the mootools js engine $chartWithMootools = new Highchart(null, Highchart::ENGINE_MOOTOOLS);
现在有了有效的 $chart
对象,开发者只需要向其中添加元素,就像在 JavaScript 中编写它们一样。
$chart->title = array('text' => 'Monthly Average Temperature', 'x' => -20); or $chart->title->text = 'Monthly Average Temperature'; $chart->title->x = -20;
您还可以创建简单的数组
$chart->series[] = array('name' => 'Tokyo', 'data' => array(7.0, 6.9, 9.5)); or $chart->series[0] = array('name' => 'Tokyo', 'data' => array(7.0, 6.9, 9.5)); or $chart->series[0]->name = 'Tokyo'; $chart->series[0]->data = array(7.0, 6.9, 9.5);
渲染
要获取渲染图表所需的全部脚本,可以使用 printScripts()
方法。
$chart->printScripts();
或者如果您不想直接输出脚本,而是想函数返回脚本字符串
$chart->printScripts(true);
最后,使用 render()
方法渲染图表对象。
echo $chart->render("chart");
传递给 render 方法的第一个(可选)参数是要由 JavaScript 使用的变量名,第二个(可选)参数是要传递给 Highcharts.Chart
方法的回调函数。第三个和最后一个(可选)参数表示您希望脚本已经包裹在 HTML 脚本标签中。
还可以通过调用 renderOptions()
方法仅渲染图表选项。这在图表用于例如 $.getJson
调用时非常有用。
$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=range.json&callback=?', function(data) { $('#container').highcharts(<?php echo $chart->renderOptions(); ?>)});
JavaScript 表达式
如果图表选项之一必须是 JavaScript 表达式,您不能将其赋值为简单字符串,否则它将作为一个简单的 JavaScript 字符串打印出来。为此,您必须使用特殊的 HighchartJsExpr
对象。
$chart->tooltip->formatter = new HighchartJsExpr("function() { return '' + this.series.name + this.x + ': ' + this.y + '°C'; }" );
空的 JavaScript 对象 {}
如果您希望渲染一个空的 JavaScript 对象 {}
,只需将变量赋值为 new stdClass()
即可。
额外脚本
要手动包含用于渲染的脚本,请使用 addExtraScript
函数。
$chart->addExtraScript('export', 'http://code.highcharts.com/modules/', 'exporting.js');
要包含额外的脚本,请使用配置文件中的密钥或通过 addExtraScript
手动提供的密钥。
$chart->includeExtraScripts(array('export'));
要包含多个脚本,只需将它们添加到数组中。
$chart->includeExtraScripts(array('export', 'highcharts-more'));
如果没有传递任何参数,它将包含所有额外的脚本。
$chart->includeExtraScripts();
如果您想向默认配置文件添加任何额外的脚本,请随时提交 PR。以下是当前可用的额外脚本列表。
使用新的 Highcharts 3.0 图表
Highcharts 3.0 引入了一套新的图表,需要额外的 JavaScript 文件 highcharts-more.js
。
要包含此额外脚本,您需要调用 includeExtraScripts
方法并传入 highcharts-more 键。
$chart = new Highchart(); $chart->includeExtraScripts(array('highcharts-more'));
仅渲染一些选项
如果您需要渲染一小部分选项,可以使用HighchartOptionRenderer::render($options)
方法。
这个例子可以在时钟演示中找到。
$backgroundOptions = new HighchartOption(); $backgroundOptions->radialGradient = array( 'cx' => 0.5, 'cy' => -0.4, 'r' => 1.9 ); ... $chart->pane->background[] = array( new stdClass(), array('backgroundColor' => new HighchartJsExpr('Highcharts.svg ? ' . HighchartOptionRenderer::render($backgroundOptions) . ' : null') ) );
这样就可以在javascript表达式中包含选项渲染。
设置通用配置
有些情况下,配置不是只为一个图表创建的,而是为页面上所有的图表创建的(例如lang和global)。
要设置通用选项,只需创建一个新的HighchartOption
(不是图表)并将其发送到Highchart::setOptions()
方法。
Highchart::setOptions()
必须放在图表渲染之前。
$option = new HighchartOption(); $option->global->useUTC = false; echo Highchart::setOptions($option);
主题
主题创建与通用选项的创建过程相同。您创建一个新的HighchartOption
对象,将其用作图表,然后调用Highchart::setOptions()
方法。
$theme = new HighchartOption(); //Code your theme as if this was a chart $theme->colors = array('#058DC7', '#50B432', '#ED561B'); ... echo Highchart::setOptions($theme);
配置
默认情况下,HighchartsPHP库附带了一些配置,可以直接使用。如果您想更改加载的任何js库的路径,请查看src/config.php
。如果您需要更改这些值中的某些值,应使用setConfigurations
方法。
$chart = new Highchart(); $chart->setConfigurations( array( 'jQuery' => array( 'name' => 'anotherName' ) ) );
演示
所有在http://www.highcharts.com的demo画廊中提供的Highcharts和Highstocks实时演示,都是使用这个库制作的,您可以在demos文件夹中找到它们,或者可以在http://www.goncaloqueiros.net/highcharts/demos.php上看到实时示例。
测试
您可以使用以下命令运行单元测试:
$ cd path/to/HighchartsPHP/
$ composer.phar install
$ phpunit