ghunti/highcharts-php

Highcharts 和 highstock JavaScript 库的 PHP 封装器

v5.0.0 2023-04-26 21:37 UTC

This package is not auto-updated.

Last update: 2024-09-19 17:02:14 UTC


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表达式中包含选项渲染

设置通用配置

有些情况下,配置不是仅为图表创建的,而是为页面上的所有图表创建的(langglobal 是此类情况的示例)。

要设置通用选项,只需创建一个新的 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 许可证