ghunti / highcharts-php
Highcharts 和 highstock JavaScript 库的 PHP 封装器
Requires
- php: >=8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
README
HighchartsPHP 是一个 PHP 库,用作 Highchart js 库的封装器(http://www.highcharts.com),它考虑到了灵活性和可维护性。它不是简单地将 JavaScript 库移植到 PHP,而是按照 JavaScript 相似 API 设计的,因此开发者只需学习一个 API。
配套网页可在 https://goncaloqueiros.net/highcharts.php 找到
安装
推荐通过 Composer
安装 HighchartsPHP。只需创建一个 composer.json
文件并运行 php composer.phar install
命令即可安装
{ "require": { "ghunti/highcharts-php": "^4" } }
当前包版本支持 PHP >= 8.0。对于旧 PHP 版本的兼容性,请使用 3.x 标签。
用法
简单
您可以使用三种可用的 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
。
要包含此额外脚本,您需要使用具有 highcharts-more 键的 includeExtraScripts
方法。
$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 演示均使用此库进行复制,您可以在演示文件夹中找到它们,或通过 https://goncaloqueiros.net/highcharts/demos.php 查看实时示例。
测试
您可以使用以下命令运行单元测试
$ cd path/to/HighchartsPHP/
$ composer install
$ vendor/bin/phpunit
许可证
HighchartsPHP 软件包是开源软件,许可证为 MIT 许可证。