我正在学习PHP,而且我遇到了以下代码:
<?php
class dogtag {
protected $Words;
}
class dog {
protected $Name;
protected $DogTag;
protected function bark() {
print "Woof!\n";
}
}
class poodle extends dog {
public function bark() {
print "Yip!\n";
}
}
$poppy = new poodle;
$poppy->Name = "Poppy";
$poppy->DogTag = new dogtag;
$poppy->DogTag->Words = "My name is
Poppy. If you find me, please call 555-1234";
var_dump($poppy);
?>
这就是我得到的:
PHP Fatal error: Uncaught Error: Cannot access protected property poodle::$Name
这对我来说很奇怪,因为我应该从子类中访问受保护的变量和函数。
可以请某人解释我错在哪里吗?
非常感谢。
答案 0 :(得分:1)
确实可以从子类访问受保护的变量。但是,您无法从子类中访问变量。
如果你创建变量getLogs
,你可以从课外访问它们。
文档:http://php.net/manual/en/language.oop5.visibility.php
示例:
public
答案 1 :(得分:0)
您无法访问该属性&#39;单词&#39;您需要将其公开
答案 2 :(得分:0)
您可以在类中添加magic
方法 - 这样您就可以从类外部访问和操作私有属性。
class foo{
private $bah;
public function __construct(){
$this->bah='hello world';
}
public function __get( $name ){
return $this->$name;
}
public function __set( $name,$value ){
$this->$name=$value;
}
public function __isset( $name ){
return isset( $this->$name );
}
public function __unset( $name ){
unset( $this->$name );
}
}
$foo=new foo;
echo $foo->bah;
$foo->bah='banana';
echo $foo->bah;