8

親クラスとサブクラスがあり、親クラスにはaを設定するコンストラクターがあり、それをサブクラスでvar使用したいvarのですが、動作していますが、キーワードで混乱していparentますか?

 class Sub extends Parent {
     public function foo() {
         echo $this -> myVar;
     }
 }

 class Parent {
     var $myVar;
     public function __construct() {
          $this -> myVar = 'a';
     }
 }

これは機能し、の値を取得しますがmyVar、キーワードを使用することになっているので、使用するparentとエラーが発生します。たとえば、

 class Sub extends Parent {
     public function foo() {
         echo parent -> myVar;
     }
 }

 class Parent {
     var $myVar;
     public function __construct() {
          $this -> myVar = 'a';
     }
 }
4

2 に答える 2

12

まず、Parentは予約語です。次にvar、古いバージョンのPHPを使用している場合を除いて、使用しないでください。保護されたものを使用できます。子クラスは変数を継承する必要があるため、変数にアクセスするために親キーワードを使用する必要はありません。あなたはそれを介してアクセスすることができます$this->myVar

明確にするために編集

基本クラスのメソッドまたは基本クラスの変数parent::にアクセスする場合にのみ使用する必要があります。static基本クラスの非静的変数にアクセスしようとすると、エラーが発生しますAccess to undeclared static property" fatal error:

始めるための例を次に示します。

<?php
class Animal{
     protected $myVar;
     public function __construct() {
          $this->myVar = 'a';
     }
 }

class Cat extends Animal {
     public function foo() {
         echo $this->myVar;
     }
 }

$cat = new Cat(); 
$cat->foo(); 

?> 

このコードの実際の例を次に示します。

于 2012-06-01T14:28:09.680 に答える
1

キーワードは、親クラスのparentメソッドまたは静的変数にのみアクセスするために使用する必要があります。最初のコードは$myVar静的ではないため、適切なものです。

于 2012-06-01T14:28:58.340 に答える