我正在尝试编写一个类,但我遇到了两个错误。
class Foo {
protected $count;
function __construct() {
$this->count = sizeof($_POST['some_key']);
}
static function get_count() {
echo $this->count; // Problem Line
}
}
$bar = new Foo;
$bar->get_count(); // Problem Call
问题调用在最后一行。在“// Problem Line”注释的行中使用$ this会生成“在不在对象上下文中时使用$ this”错误。使用“self :: count”代替“this-> count”会生成“未定义的类常量错误”。我能做错什么?
答案 0 :(得分:3)
get_count
是静态的。静态方法属于类,而不是实例。因此,在静态方法调用中,不是 this
。同样,您不能在静态方法中引用具体成员变量(例如count
)。
在您的示例中,我并不真正理解为什么使用static
关键字(因为您所做的只是回显成员变量)。删除它。
答案 1 :(得分:1)
我建议您执行以下操作:
class Foo {
protected $count;
function __construct($some_post) {
$this->count = sizeof($some_post);
}
function get_count() {
echo $this->count;
}
}
$some_post = $_POST['some_key'];
$bar = new Foo;
$bar->get_count($some_post);
OR:
class Foo {
protected $count;
function __construct() {
global $_POST;
$this->count = sizeof($_POST['some_key']);
}
function get_count() {
echo $this->count;
}
}
$bar = new Foo;
$bar->get_count();