本文目录导读:

- 核心思路
- 方法一:用PHP生成纯图片(使用 GD 库)
- 方法二:PHP输出数据 + 前端图表库(最常用)
- 方法三:基于PHP的Web框架(如Laravel)的模板渲染
- 关键数据来源(Java系常用集成)
- 总结建议
这是一个非常有趣的问题,因为你的字面问法“PHP 怎么PHP 燃尽图”像是打字重复了,我理解你真正想问的是:在PHP项目中,如何使用PHP(或配合相关工具)来生成或展示燃尽图?
燃尽图(Burn Down Chart)通常用于敏捷开发中,展示剩余工作量随时间的变化趋势,在PHP生态中,生成燃尽图主要有以下三种方式:
核心思路
你需要两个数据维度:
- 时间(通常是迭代中的日期)
- 剩余工时/故事点
用PHP生成纯图片(使用 GD 库)
适合在没有前端图表库、需要生成静态图片(如邮件附件)的场景。
<?php
// 模拟数据:每天的剩余工时
$data = [
['date' => '2025-03-01', 'hours' => 120],
['date' => '2025-03-02', 'hours' => 105],
['date' => '2025-03-03', 'hours' => 82],
['date' => '2025-03-04', 'hours' => 68],
['date' => '2025-03-05', 'hours' => 42],
];
// 创建一个 800x400 的画布
$image = imagecreatetruecolor(800, 400);
// 设置颜色...
// 绘制坐标轴、网格线
// 绘制理论燃尽线(理想直线)
// 绘制实际燃尽曲线
// 输出图片
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
缺点:代码量大,难以交互,不推荐用于Web界面。
PHP输出数据 + 前端图表库(最常用)
这是目前最流行的方式,PHP负责从数据库或文件读取数据,然后生成JSON提供给前端,前端用JavaScript库(如Chart.js、ECharts、Highcharts)绘制。
<?php
// 1. 从数据库获取燃尽图数据(例如从 JIRA 或自建数据库)
// 假设返回:
$burnDownData = [
'labels' => ['Day1', 'Day2', 'Day3', 'Day4', 'Day5'],
'ideal' => [120, 96, 72, 48, 24], // 理想剩余工时
'actual' => [120, 100, 80, 55, 30] // 实际剩余工时
];
// 2. 输出 JSON 给前端
header('Content-Type: application/json');
echo json_encode($burnDownData);
然后在前端(HTML)中:
<!-- 使用 Chart.js 示例 -->
<canvas id="burndownChart"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
fetch('your_php_endpoint.php')
.then(res => res.json())
.then(data => {
new Chart(document.getElementById('burndownChart'), {
type: 'line',
data: {
labels: data.labels,
datasets: [
{ label: '理想进度', data: data.ideal, borderDash: [5,5] },
{ label: '实际进度', data: data.actual }
]
}
});
});
</script>
优点:交互性好,美观,社区成熟。
基于PHP的Web框架(如Laravel)的模板渲染
如果你在用Laravel,可以用Laravel Charts包集成。
composer require consoletvs/charts:7.*
在控制器中:
use ConsoleTVs\Charts\Classes\Chartjs\Chart;
$chart = new Chart();
$chart->labels(['Day1', 'Day2', 'Day3']);
$chart->dataset('理想', 'line', [120, 80, 40]);
$chart->dataset('实际', 'line', [120, 85, 50]);
return view('burndown', compact('chart'));
然后在Blade模板中:
{!! $chart->render() !!}
关键数据来源(Java系常用集成)
很多企业用 JIRA 或 YouTrack 等项目管理工具:
- PHP可以通过 REST API 拉取这些工具的燃尽图数据。
- JIRA API:
GET /rest/agile/1.0/board/{boardId}/sprint/{sprintId}/burndown
总结建议
| 场景 | 推荐方式 |
|---|---|
| 快速展示(自用小项目) | 方法二(PHP + Chart.js) |
| 需要PDF/图片导出 | 方法一(PHP GD) + 方法二混合 |
| 企业级(集成JIRA等) | 方法二 + REST API 数据采集 |
| 使用Laravel框架 | 方法三(Laravel Charts) |
如果你要说的是如何用PHP实现JIRA那样的燃尽图,那就是PHP作为后端API + 前端专业图表库的方式,需要我帮你写出一个完整的PHP获取数据并生成Chart.js燃尽图的示例代码吗?