Ami*_*hal 2 php oop inheritance fatal-error
我刚开始在 php 中学习 OOPS。我写了一个简单的程序来实现继承。当不在对象上下文中时,我收到 $this 的致命错误。谁能解释一下这个错误,这是什么意思?这是我的代码:
<?php
class human{
public $gender;
public function _construct($gender)
{
$this->gender=$gender;
echo $this->get_gender();
}
public function get_gender()
{
return $this->gender;
}
}
class person extends human{
public $name;
public $surname;
public static function set_name($name)
{
$this->name=$name;
}
public static function set_surname($surname)
{
$this->surname=$surname;
}
public static function get_name()
{
return $this->name;
}
public static function get_surname()
{
return $this->surname;
}
}
$john = new person('male');
$john->set_name('John');
$john->set_surname('Williams');
echo $john->get_name().' '.$john->get_surname().'is a '.$john->get_gender();
?>
Run Code Online (Sandbox Code Playgroud)
在静态函数中,$this
不存在。您可以使用 来引用类本身self::
。因此,请$this->surname
使用来代替self::surname
。如下所述,这会将您的错误更改为新错误,因为它还要求将变量声明为静态。
当然,您确实需要弄清楚为什么将这些函数设为静态。它们应该是静态的吗?
这里有两个问题:
您已将方法定义为static
. 您不应该这样做,因为它们不是,它们取决于在对象上被调用,因为您要使用对象的非静态属性。
您的构造函数中有一个错字。构造函数的正确名称是__construct
,注意_
开头的两个。