-1

'person'という親クラスがあります。「individual」は「person」の子クラスです。

'person'には、'$_pk_person'という保護されたプロパティがあります。

'individual'で、値が'$_pk_person'の継承された値と等しい'$_fk_individual_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();

クラスで'個人'??

それらのどれも機能していません。私は完全な初心者なので、どこかで根本的な誤りを犯しているに違いありません。

私を助けてください。

コンストラクターを使用した後、私のクラスは次のようになりました。

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

そして私はそれをテストしましたが、画面は空白でした:$ xyz = newindividual();

$xyz->pk_person='abcd';

echo $xyz->_fk_individual_person;

私は今どこに行ったのですか?申し訳ありませんが、私はまったくの初心者です(昨日、オブジェクト指向コーディングを開始しました。これが私のファーストクラスです)

4

2 に答える 2

4

コンストラクターなしでこれを行うことはできません。初期化はconstであるか、コンパイル時に既知である必要があるためです。マニュアルを見てください:

クラスメンバー変数は「プロパティ」と呼ばれます。「属性」や「フィールド」などの他の用語を使用して参照されている場合もありますが、この参照では「プロパティ」を使用します。これらは、キーワードpublic、protected、またはprivateのいずれかを使用し、その後に通常の変数宣言を使用して定義されます。この宣言には初期化が含まれる場合がありますが、この初期化は定数値である必要があります。つまり、コンパイル時に評価でき、評価するために実行時情報に依存してはなりません。

しかし、constuctorを使用することが道です。

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 に答える