【发布时间】:2013-07-19 15:21:33
【问题描述】:
我可以发誓,在标准 OOP 中,您可以从基类中的方法访问具体类的私有成员。 PHP 只是以不同的方式实现这一点,还是我做错了什么,还是我的理解完全错误?
<?php
class Base {
public function __toString() {
return $this->name;
}
}
class Concrete extends Base {
private $name;
public function __construct($name) {
$this->name = $name;
}
}
$o = new Concrete('foobar');
echo $o;
上面的代码片段抛出Fatal error: Cannot access private property Concrete::$name on line 5。如果我将$name 的访问级别更改为protected,它将起作用。
【问题讨论】:
-
如果扩展 Base 并且不在子类中引入属性
$name怎么办?基类绝不能依赖子类! -
没有什么叫做“标准”OOP;每种语言都有它自己的味道。但是,我想不出任何可以使用的语言,从我的脑海中浮出水面......
-
你想在这里做什么是?我听说过控制反转,但我从未听说过继承反转...
-
@stobor:无论如何,并非没有魔法gettersm ;-)
-
@Niko:这就是重点。我的代码片段不起作用是完全有道理的。谢谢!
标签: php oop inheritance