halfpastfouram/phpchartjs

PHP ChartJS 库

v1.2.2 2020-01-11 21:48 UTC

This package is auto-updated.

Last update: 2024-09-24 20:28:54 UTC


README

稳定版

Latest Stable Version Total Downloads License composer.lock Build Status Code Climate Test Coverage Quality

开发版

Latest Unstable Version Build Status

PHPChartJS

PHP OOP 库,用于 ChartJS

PHPChartJS 充当 ChartJS 库和服务器端代码之间的接口。只需几秒钟即可设置图表,并通过 PHP 代码管理图表的各个方面。此接口旨在在每个场景中提供代码自动完成,因此您永远不必猜测或查找所选图表可用的选项。该库完全是面向对象的。

此库仍在积极开发中,旨在实现 ChartJS 所提供的所有选项。查看 配置里程碑,以查看实现所有现有选项的进度。

示例用法

<?php
use Halfpastfour\PHPChartJS\Chart\Bar;

$bar = new Bar();
$bar->setId("myBar");

// Set labels
$bar->labels()->exchangeArray(["M", "T", "W", "T", "F", "S", "S"]);

// Add apples
$apples = $bar->createDataSet();
$apples->setLabel("apples")
  ->setBackgroundColor("rgba( 0, 150, 0, .5 )")
  ->data()->exchangeArray([12, 19, 3, 17, 28, 24, 7]);
$bar->addDataSet($apples);

// Add oranges as well
$oranges = $bar->createDataSet();
$oranges->setLabel("oranges")
  ->setBackgroundColor("rgba( 255, 153, 0, .5 )")
  ->data()->exchangeArray([ 30, 29, 5, 5, 20, 3 ]);
  
// Add some extra data
$oranges->data()->append(10);

$bar->addDataSet($oranges);

// Render the chart
echo $bar->render();

渲染图表生成的结果看起来可能像这样

<canvas id="myBar"></canvas>
<script>
window.onload=(function(oldLoad){return function(){
if( oldLoad ) oldLoad();
var ctx = document.getElementById( "myBar" ).getContext( "2d" );
var chart = new Chart( ctx, {"type":"bar","data":{"labels":["M","T","W","T","F","S","S"],"datasets":[{"data":[12,19,3,17,28,24,7],"label":"apples","backgroundColor":"rgba( 0, 150, 0, .5 )"},{"data":[30,29,5,5,20,3,10],"label":"oranges","backgroundColor":"rgba( 255, 153, 0, .5 )"}]}} );
}})(window.onload);
</script>

回调

您可以轻松提供 JavaScript 回调

$myCallback = "function(item){ console.log(item); }";
$bar->options()->getTooltips()->callbacks()->setAfterBody($myCallback);

渲染

渲染图表会创建一些 HTML 和一些 JavaScript。JavaScript 包含一个 JSON 对象,提供 ChartJS 所需的配置。配置的每个部分都可以转换为数组或 JSON 对象。

渲染配置的独立部分

$json = $myChart->options()->getScales()->jsonSerialize();

或者返回包含设置配置的数组

$options = $myChart->options()->getScales()->getArrayCopy();

美观模式

如果您不喜欢生成的长代码行,可以将渲染强制为在 美观模式 下进行,请参阅以下示例。

// Render in pretty mode
$bar->render(true);

想看更多?将此项目分叉,查看测试文件夹中的示例,以探索不同的选项。

配置选项

ChartJS 支持的所有选项都将在此库中提供。

ChartJS 要求您构建一个 JSON 对象,其中包含您要为当前图表设置的配置选项。这些选项分布在配置对象内的多个层中。使用 PHPChartJS 访问这些层非常简单。

假设我们想要访问选项子树中的图表的 getAnimation 子树

$getAnimation = $myChart->options()->getAnimation();

现在,您可以使用该特定类提供的获取器和设置器调整 ChartJS 的 getAnimation 设置。

集合

如果 ChartJS 要求配置选项中包含某些项作为子集的数组,则此数组在 PHPChartJS 中表示为集合。该集合始终可以直接访问以添加、删除和替换值。

在某些情况下,集合需要具有预定选项列表的特定对象。在这种情况下,将提供方法来创建该对象的新实例并将其添加到集合中。

数据集存储在集合中

// Create new dataset
$dataset = $myChart->createDataSet();
... (add data to the dataset)
$myChart->addDataSet($dataset);

但是,数据集中的实际数据也存储在集合中

// Create new dataset
$dataset = $myChart->createDataSet();

// Add some data 
$dataset->data()->append(1)->append(2);

// Prepend some data
$dataset->data()->prepend(0);

// Replace data at certain position
$dataset->data()->offsetSet(1, 3);

// Retrieve data from certain position
$value = $dataset->data()->offsetGet(1); // 3

// Add a lot of data at once whilst returning the old values
$oldData = $dataset->data()->exchangeArray([1, 2, 3]); // array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }

$myChart->addDataSet($dataset);

有关集合的更多信息,请访问 halfpastfouram/collection 项目。

安装

使用 composer

$ composer require halfpastfouram/phpchartjs

开发版

此项目使用 composer,应在您的系统上安装。大多数 Linux 系统在 PHP 软件包中都有 composer。或者,您可以从 getcomposer.org 下载 composer。

如果您使用PhpStorm IDE,则可以通过IDE简单地初始化composer。但是,要完全使用,则需要命令行。请参阅PhpStorm帮助,搜索composer。

要开始开发,请在项目目录中运行composer install

注意除非您在composer.json中更改了依赖项要求,否则请勿使用composer update。二者的区别在于composer install将只以只读方式使用composer.lock,而composer update将更新您的composer.lock文件,无论是否有任何更改。由于composer.lock文件已提交到仓库,其他开发者可能会得出依赖项已更改的结论,尽管实际上并没有更改。