【发布时间】:2016-04-28 16:47:45
【问题描述】:
我有一个核心类,我不能修改核心类。我的核心类代码如下
class Test
{
private $container = [];
public function sample($input)
{
return array_push($this->container, $input);
}
}
下面是我的扩展类
class Size extends Test
{
private $maxSize = 10;
public function sizeadd($element)
{
//I want get the parent container
return parent::sample($element);
}
}
我已使用以下代码添加值
$sizeval = new Size();
$sizeval->sizeadd('1');
$sizeval->sizeadd('2');
值添加成功。但我的问题是我只想添加 10 个值,所以我想要父类中的 count($this->container)。然后我想检查sizeadd函数看起来像这样
public function sizeadd($element)
{
if(count(container count)< $this->maxSize)
return parent::sample($element);
}
我无法获取父类$containerarray。
【问题讨论】:
-
当然不能,它是私有的,仅在
Test类中可用。 -
在
Test类中没有获取$container的大小/计数的方法吗? -
我想从我的子类中获取最后一个带有值的 $container 数组
-
@mapek:理论上不应该有任何方法可以得到它。如果存在,则通常将其视为错误(通常归类为安全错误)。但是很多人都经历过你现在所经历的(尤其是在 Windows 和 MFC 的早期)。所以你会发现很多 OO 语言不支持私有变量(例如 javascript),甚至在所有未来版本(Perl)中完全拒绝支持私有变量。如果您的语言支持私有变量,那么对不起,这是不可能的(或者不应该是不可能的)。