halfpastfouram / phpchartjs
PHP ChartJS 库
Requires
- php: >=5.6.0 || ^7.0
- ext-dom: *
- ext-json: *
- halfpastfouram/collection: 1.0.0
- laminas/laminas-json: 3.1.2
- symfony/var-dumper: ^3.4
Requires (Dev)
- friendsofphp/php-cs-fixer: *
- phpunit/phpunit: 5.7.*
- sensiolabs/security-checker: ^5.0
- squizlabs/php_codesniffer: 3.5.3
README
稳定版
开发版
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文件已提交到仓库,其他开发者可能会得出依赖项已更改的结论,尽管实际上并没有更改。