将property的值声明为等于parent的值

时间:2012-12-29 13:09:54

标签: php oop

我有一个名为'person'的父类。 “个人”是“人”的儿童阶层。

在'person'中,我有一个名为'$ _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编码,这是我的第一堂课)

2 个答案:

答案 0 :(得分:4)

如果没有构造函数,则无法执行此操作。因为初始化必须是const或在编译时已知。看一本手册:

  

类成员变量称为“属性”。你也可以看到它们   引用使用其他术语,如“属性”或“字段”,但   出于本参考的目的,我们将使用“属性”。他们是   使用关键字public,protected或private之一定义,   然后是正常的变量声明。 此声明可能   包括初始化,但这个初始化必须是一个常量   value - 也就是说,它必须能够在编译时进行评估   不得依赖于运行时信息才能进行评估。

但是使用constuctor是可行的方法:

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

答案 1 :(得分:2)

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

class B extends A{
   function __construct() {
      $this->_fk_individual_person = $this->_pk_person;
   }
}