marmark0/highcharts-php

Highcharts 和 highstock JavaScript 库的 PHP 封装器(适用于 PHP 8.2)

v3.1.1 2023-09-21 08:40 UTC

This package is auto-updated.

Last update: 2024-09-21 10:54:48 UTC


README

HighchartsPHP 是一个 PHP 库,作为 Highchart js 库的封装器(http://www.highcharts.com),旨在提高灵活性和可维护性。它不仅仅是将 JavaScript 库简单地移植到 PHP,而是按照 JavaScript 对应的 API 进行设计,以便开发者只需学习一个 API。

配套网页可在 https://goncaloqueiros.net/highcharts.php 找到

关于这个分支的说明

创建这个分支是为了添加对 PHP 8.2 的支持并修复一些错误。它不是为了长期分支,而是一个临时解决方案,直到原始作者有时间更新库。

安装

推荐通过 Composer 安装 HighchartsPHP。只需创建一个 composer.json 文件,然后运行 php composer.phar install 命令即可安装

{
    "require": {
        "marmark0/highcharts-php": "^3"
    }
}

当前包版本支持 PHP >= 8.2。对于与较旧 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 的新图表。

要包含此额外脚本,您需要使用 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 表达式中包含选项渲染

设置通用配置

有些情况下配置不仅仅为图表创建,而是为页面上的所有图表创建(例如 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 库附带了一些配置,可以直接使用。如果您想更改加载的任何 JavaScript 库的路径,请查看 src/config.php。如果需要更改这些值,请使用 setConfigurations 方法。

$chart = new Highchart();
$chart->setConfigurations(
    array(
        'jQuery' => array(
            'name' => 'anotherName'
        )
    )
);

演示

所有在 http://www.highcharts.com 的演示画廊中提供的 Highcharts 和 Highstocks 演示都使用此库重现,您可以在演示文件夹中找到它们或在 https://goncaloqueiros.net/highcharts/demos.php 上查看实时示例。

测试

您可以使用以下命令运行单元测试

$ cd path/to/HighchartsPHP/
$ composer install
$ vendor/bin/phpunit

许可协议

HighchartsPHP 包是开源软件,根据 MIT 许可协议 许可。