scorpionslh/highcharts-php

Highcharts 和 highstock JavaScript 库的 PHP 封装器

v3.0.3 2016-01-24 11:57 UTC

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

设置通用配置

有些情况下,配置不是只为一个图表创建的,而是为页面上所有的图表创建的(例如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实时演示,都是使用这个库制作的,您可以在demos文件夹中找到它们,或者可以在http://www.goncaloqueiros.net/highcharts/demos.php上看到实时示例。

测试

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

$ cd path/to/HighchartsPHP/
$ composer.phar install
$ phpunit