2
class A {
    protected $a;

    // SOME CODE
}


class B extends A {
   // SOME CODE
}

如何在 B 类中编辑变量 $a 的受保护值?

我正在尝试使用parent::$a = "Some Value"但不起作用。

4

2 回答 2

5

protected实例属性,那些没有声明使用static的,可以在子类中使用$this

class A {
    protected $a;

    // SOME CODE
}


class B extends A {
   // SOME CODE
   public function edit($val) {
       $this->$a = $val;
       echo "a is now {$this->a}\n";
   }
}

称呼:

$b = new B();
$b->edit('foo'); // a is now foo

请参阅手册,尤其是示例。

于 2013-05-03T14:46:16.703 回答
1
class B extends A {    
  public function foo($val)
  {
    $this->a = $val;
  }
}

非常简单 :)

请记住

声明为 protected 的成员只能在类本身以及继承类和父类中访问

来自php手册

于 2013-05-03T14:46:28.320 回答