-1

我有一个名为“人”的父类。“个人”是“人”的子类。

在“人”中,我有一个名为“$_pk_person”的受保护属性;

在“个人”中,我想创建一个名为“$_fk_individual_person”的受保护属性,其值等于“$_pk_person”的继承值。

我不应该仅仅通过说明来做到这一点:

protected $_fk_individual_person = {$this->_pk_person};

或者

protected $_fk_individual_person = $_pk_person;

或者

protected $_fk_individual_person = get_pk_person();

或者

protected $_fk_individual_person = self::get_pk_person();

或者

protected $_fk_individual_person = self::_pk_person;

或者

protected $_fk_individual_person = parent::_pk_person;

或者

protected $_fk_individual_person = parent::get_pk_person();

在“个人”课堂上??

他们都没有工作。我一定是在某个地方犯了一个根本性的错误,因为我是一个完全的新手。

请帮帮我。

使用 CONSTRUCTOR 后,我的班级看起来像这样:

class individual extends person {
public $_fk_individual_person;
function __construct() {
    $this->_fk_individual_person = $this->_pk_person;
}
}

我测试了它,但屏幕是空白的:$xyz = new individual();

$xyz->pk_person='abcd';

echo $xyz->_fk_individual_person;

我现在哪里糊涂了?对不起,但我是一个绝对的新手(昨天才开始 oop 编码,这是我的第一堂课)

4

2 回答 2

4

如果没有构造函数,您将无法做到这一点。因为初始化必须是 const 或在编译时已知。看手册:

类成员变量称为“属性”。您可能还会看到使用“属性”或“字段”等其他术语来提及它们,但出于本参考的目的,我们将使用“属性”。它们是通过使用关键字 public、protected 或 private 之一定义的,后跟一个普通的变量声明。这个声明可能包括一个初始化,但这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖于运行时信息才能被评估。

但是使用构造函数是要走的路:

class individual extends person {
    protected $_fk_individual_person;
    function __construct() {
        $this->_fk_individual_person = $this->_pk_person;
    }
}
于 2012-12-29T13:16:25.670 回答
2

您需要在子类构造函数中执行赋值。

class B extends A{
   function __construct() {
      $this->_fk_individual_person = $this->_pk_person;
   }
}
于 2012-12-29T13:13:15.370 回答