在 PHP heredoc 中扩展 chart.js 导致解析错误

Extend chart.js in PHP heredoc causes parse error

我在 PHP 中创建了一个带有 chart.js 的图表,如下所示:

$chart = <<<ECHO
<script type="text/javascript">
var ctx = document.getElementById("myChart").getContext("2d");

Chart.types.Bar.extend({
    name: "myChart",
    initialize: function () {
        Chart.types.Bar.prototype.initialize.apply(this, arguments);
    }
});

new Chart(ctx).myChart(data, {
    scaleLabel : "<%= value + ' $' %>"
});

</script>
ECHO;
echo $chart;

如果我在 Javascript 中 运行 此代码工作正常,但不幸的是我需要通过 PHP 显示它(我在 CMS 中使用一个组件)它不起作用。我收到以下错误:

Parse error: syntax error, unexpected '=', expecting '}' in process.php(1227) : eval()'d code on line 154

我将错误缩小到 initialize: function() {...} 代码行。但为什么它会在 PHP echo 中引起问题?

我不确定你为什么遇到问题,我认为你不应该遇到问题。

但我有一个更好的答案,使用缓冲区而不是 heredocs(无论如何它们更容易使用)

Google ob_start 了解它是如何工作的,它们非常有用

ob_start()?>
<script type="text/javascript">
var ctx = document.getElementById("myChart").getContext("2d");

Chart.types.Bar.extend({
    name: "myChart",
    initialize: function () {
        Chart.types.Bar.prototype.initialize.apply(this, arguments);
    }
});

new Chart(ctx).myChart(data, {
    scaleLabel : "<%= value + ' $' %>"
});

</script>
<?php $chart = ob_get_clean();
echo $chart;