我在一个函数中(在一个类中)使用<<<heredoc heredoc;
,它弄乱了其下面所有代码的语法高亮显示。
可以在函数外部使用它,也可以在函数中的一行上使用它:
但是,如果我在一个函数中使用它(而不是一行),它会弄乱它下面的突出显示,而我的编辑器(在Atom或Sublime Text中也是如此)似乎认为它与函数外部的那个闭合并且上课..怎么回事?
<?php
class SimpleCMS {
var $host = 'localhost';
var $username = 'root';
var $password = '';
var $table = '';
public function display_public() {
}
public function display_admin() {
return <<<ADMIN_FORM
ADMIN_FORM;
}
public function write() {
}
public function connect() {
mysql_connect($this->host, $this->username, $this->password) or die('Could not connect to the database. ' . mysql_error());
mysql_select_db($this->table) or die('Could not select database. ' . mysql_error())
// build the database
return $this->buildDB();
}
private function buildDB() {
$sql = <<<MySQL_QUERY CREATE TABLE IF NOT EXISTS testDB (title VARCHAR(150), bodyText TEXT, created VARCHAR(100)) MySQL_QUERY;
return mysql_query($sql);
}
}
<<<ADMIN_FORM
ADMIN_FORM;
?>
答案 0 :(得分:3)
您的Heredoc终止符必须位于最左侧的列中,即没有缩进。这已记录在PHP网站上:http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
结束标识符必须在该行的第一列开始。
非常重要的一点是,带有结束标识符的行除分号(;)外,不得包含其他任何字符。 这尤其意味着标识符不能缩进,并且在分号之前或之后可能没有空格或制表符。同样重要的是要认识到,结束标识符之前的第一个字符必须是本地操作系统定义的换行符。在UNIX系统(包括macOS)上,这是\ n。结束定界符也必须跟换行符。
更改您的当前代码:
public function display_admin() {
return <<<ADMIN_FORM
ADMIN_FORM;
}
对此:
public function display_admin() {
return <<<ADMIN_FORM
ADMIN_FORM;
}