簡體   English   中英

如何在CakePHP中使用Heredoc?

[英]How to use heredoc in CakePHP?

嗨,我用谷歌搜索我沒有得到任何cakephp heredoc。 請解決我的問題

我想在CakePHP中使用Heredoc。

碼:

<?php
$qry = $this->Message->find("all");
$items = '';

$chatBoxes = array();

foreach ($qry as $chat) {    
    $items .=
        <<<EOD
        {
           "s": "0",
           "f": "{$chat['Message']['from']}",
           "m": "{$chat['Message']['text']}"
        },
        EOD;
}
pr($items); exit;
?>

以上heredoc代碼無法正常工作,得到以下錯誤消息

Fatal Error

Error: syntax error, unexpected $end
File: E:\xampp\htdocs\2014\datingscanner\datingscanner\app\Controller\MessagesController.php
Line: 142

Notice: If you want to customize this error message, create app\View\Errors\fatal_error.ctp

編輯:

如果我從數據庫獲取單個值,它會正常工作。

  $items .= $chat['Message']['from'];

這不是CakePHP的特定問題。 有效的Heredoc在結束標識符之前不能有其他字符(您必須有空格),因此它應類似於:

    <<<EOD
    {
       "s": "0",
       "f": "{$chat['Message']['from']}",
       "m": "{$chat['Message']['text']}"
    },
EOD;
^ no whitespace or anything else before the close identifier

手冊

警告請務必注意,帶有結束標識符的行除分號(;)外,不得包含其他任何字符。

旁注:您似乎正在手動構建JSON字符串。 PHP具有內置功能來處理JSON,因此您可以使用數組或對象並將其轉換為JSON。

$items = array();

foreach ($qry as $chat) {
    $items[] = array(
        's' => '0',
        'f' => $chat['Message']['from'],
        'm' => $chat['Message']['text']
    );
}

echo json_encode($items);

上面創建的代碼與您當前代碼創建的JSON相同。 這樣會更好,因為json_encode()始終會生成有效的JSON,並且會轉義特殊字符,否則這些特殊字符會破壞JSON格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM