如果可以在php中的类内使用filter_input(POST或GET)函数
我正在努力学习PHP类,在我的第一节课上我遇到了麻烦 代码示例:如果可以在php中的类内使用filter_input(POST或GET)函数,php,class,Php,Class,我正在努力学习PHP类,在我的第一节课上我遇到了麻烦 代码示例: class Loader { public $action = filter_input(INPUT_GET, "action"); public $dir = ''; public $exceptions = ''; function __construct($exceptions, $dir) { if(count($exceptions) > 0){
class Loader
{
public $action = filter_input(INPUT_GET, "action");
public $dir = '';
public $exceptions = '';
function __construct($exceptions, $dir)
{
if(count($exceptions) > 0){
if(isset($exceptions[$this->action])){
$this->req($exceptions[$this->action]);
}else{
$this->req($this->action);
}
}
require($args[$action].".php");
}
public function req($this->action, $dir){
require($dir.$action.".php");
}
}
并且像这样使用它:
$e = array('task-list' => 'list', 'task-info' => 'info');
$loader = new Loader($e);
是否可以在带有$\u请求变量的类中定义$action?或者我应该像这样使用它:
$e = array('task-list' => 'list', 'task-info' => 'info');
$loader = new Loader($e);
$loader->action = filter_input(INPUT_GET, "action");
$loader->load();
声明属性时不能使用函数。您必须在构造函数中这样做:
class Loader
{
public $action; // Removed it from here
/* ... */
function __construct($exceptions, $dir)
{
$this->action = filter_input(INPUT_GET, "action");
// ^ and placed it down here.
/* ... */
}
/* ... */
}
这是一个意见问题。有些人更喜欢把超全球化放在课堂之外,有些人认为它们是语言的一部分。我总是这样处理它:如果我要为这个类编写一个测试用例,我能用我想要使用的任何测试数据轻松地初始化它吗?通常在这一点上,我遇到了任何超全局使用的问题。但是我在代码>语法错误中收到了一个错误:语法错误,意外的(‘,预期’,‘或’,‘,’在行< /代码>中定义了$动作。已执行->返回到代码->
$loader->action=foo
已执行->$loader->load()
已执行。基本上,在构造函数运行后定义操作。将$this->action
的用法放入load()中
方法或将其作为参数提供给构造函数。成员属性/变量必须设置为常量值。如果需要使用函数或执行其他操作,请在构造函数中执行。阅读此