php filter_input 内部解析错误 class
php filter_input parse error inside class
- 使用 WAMP 在开发模式下配置项目。
- PHP 第 5 和第 7 版本可用。
只是尝试使用 filter_input 设置项目根目录。有人可以解释为什么 class 中受保护和私有变量的过滤器输入报告 PARSE 错误吗?但是,如果在 class 之外或 class 的函数内部使用,它会起作用。
有没有更好的方法做到这一点,使其可以在全球范围内使用?我发现这被称为很多,并且宁愿做一次。
$test = filter_input(INPUT_SERVER,'DOCUMENT_ROOT');
echo $test; //good
class FooBar{
protected $_test = filter_input(INPUT_SERVER,'DOCUMENT_ROOT'); //bad - Parse error: syntax error, unexpected '(', expecting ',' or ';'
private $_test2 = filter_input(INPUT_SERVER,'DOCUMENT_ROOT'); //bad - Parse error: syntax error, unexpected '(', expecting ',' or ';'
function __construct() {
}
public function getProducts(){
include_once
(filter_input(INPUT_SERVER,'DOCUMENT_ROOT').'/obj/user.php'); //good
}
}
您不能直接将函数 return 值分配给 class 定义中的 属性。
这是因为该函数可以 return 不同的 return 值,而 class 只是一个蓝图,您必须将其实例化为对象才能使用。
对于根据您的 class 定义创建的对象,您可以在构造函数中初始化任何 属性:
class FooBar {
protected $var = null;
private $var2 = null;
function __construct() {
$this->var = func1();
$this->var2 = func2();
}
}
// no parse error
尽管如此,为什么要对内部常量使用 filter_input
?您只需要过滤来自外部的输入,即 GET/POST/SESSION 内容(用户输入)、从文件中读取的输入、来自外部 API 等。但是您不需要在内部常量上使用它,例如 DOCUMENT_ROOT
:
class FooBar {
private $_docroot = $_SERVER['DOCUMENT_ROOT'];
}
// no parse error
- 使用 WAMP 在开发模式下配置项目。
- PHP 第 5 和第 7 版本可用。
只是尝试使用 filter_input 设置项目根目录。有人可以解释为什么 class 中受保护和私有变量的过滤器输入报告 PARSE 错误吗?但是,如果在 class 之外或 class 的函数内部使用,它会起作用。
有没有更好的方法做到这一点,使其可以在全球范围内使用?我发现这被称为很多,并且宁愿做一次。
$test = filter_input(INPUT_SERVER,'DOCUMENT_ROOT');
echo $test; //good
class FooBar{
protected $_test = filter_input(INPUT_SERVER,'DOCUMENT_ROOT'); //bad - Parse error: syntax error, unexpected '(', expecting ',' or ';'
private $_test2 = filter_input(INPUT_SERVER,'DOCUMENT_ROOT'); //bad - Parse error: syntax error, unexpected '(', expecting ',' or ';'
function __construct() {
}
public function getProducts(){
include_once
(filter_input(INPUT_SERVER,'DOCUMENT_ROOT').'/obj/user.php'); //good
}
}
您不能直接将函数 return 值分配给 class 定义中的 属性。
这是因为该函数可以 return 不同的 return 值,而 class 只是一个蓝图,您必须将其实例化为对象才能使用。
对于根据您的 class 定义创建的对象,您可以在构造函数中初始化任何 属性:
class FooBar {
protected $var = null;
private $var2 = null;
function __construct() {
$this->var = func1();
$this->var2 = func2();
}
}
// no parse error
尽管如此,为什么要对内部常量使用 filter_input
?您只需要过滤来自外部的输入,即 GET/POST/SESSION 内容(用户输入)、从文件中读取的输入、来自外部 API 等。但是您不需要在内部常量上使用它,例如 DOCUMENT_ROOT
:
class FooBar {
private $_docroot = $_SERVER['DOCUMENT_ROOT'];
}
// no parse error