Php 从类OOPS中获取私有变量的最后一个值
我有一个核心类,不能修改核心类。下面给出了我的核心类代码Php 从类OOPS中获取私有变量的最后一个值,php,oop,stack,private,Php,Oop,Stack,Private,我有一个核心类,不能修改核心类。下面给出了我的核心类代码 class Test { private $container = []; public function sample($input) { return array_push($this->container, $input); } } class Size extends Test { private $maxSize = 10; public functio
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);
}
}
下面是我的扩展课程
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个值,这样我就需要父类的计数($this->container)
。然后我想检查sizedd
函数,如下所示
public function sizeadd($element)
{
if(count(container count)< $this->maxSize)
return parent::sample($element);
}
公共函数sizedd($element)
{
if(计数(容器计数)<$this->maxSize)
返回父::示例($element);
}
我无法获取父类
$container
数组
在基类中创建一个函数来计算容器计数,并在子类中使用该函数来获取容器的总计数
class Test
{
private $container = [];
public function sample($input)
{
return array_push($this->container, $input);
}
// counts container
public function countContainer(){
return count($this->container);
}
}
现在在子类中调用此countContainer函数。在基类中创建一个函数来计算容器计数,并在子类中使用该函数来获取容器的总计数
class Test
{
private $container = [];
public function sample($input)
{
return array_push($this->container, $input);
}
// counts container
public function countContainer(){
return count($this->container);
}
}
现在在子类中调用此countContainer函数。尝试更改扩展类,如下所示:
class Size extends Test
{
private $maxSize = 10;
/**
* To track how many elements are being added
*
* @var integer
*/
private static $count = 0;
/**
* Adding element in size
*
* @param integer $element
* @return integer
*/
public function sizeadd($element)
{
if (self::$count < $this->maxSize) {
self::$count = self::$count + 1;
return parent::sample($element);
}
}
/**
* This is just for getting the current number of count
* this is optional method.
* @return integer
*/
public function getCount()
{
return self::$count;
}
}
类大小扩展测试
{
私有$maxSize=10;
/**
*跟踪添加了多少个元素
*
*@var整数
*/
私有静态$count=0;
/**
*在大小上添加元素
*
*@param integer$元素
*@返回整数
*/
公共函数sizedd($element)
{
if(self::$count<$this->maxSize){
self::$count=self::$count+1;
返回父::示例($element);
}
}
/**
*这只是为了获取当前的计数数
*这是可选的方法。
*@返回整数
*/
公共函数getCount()
{
返回self::$count;
}
}
尝试更改扩展类,如下所示:
class Size extends Test
{
private $maxSize = 10;
/**
* To track how many elements are being added
*
* @var integer
*/
private static $count = 0;
/**
* Adding element in size
*
* @param integer $element
* @return integer
*/
public function sizeadd($element)
{
if (self::$count < $this->maxSize) {
self::$count = self::$count + 1;
return parent::sample($element);
}
}
/**
* This is just for getting the current number of count
* this is optional method.
* @return integer
*/
public function getCount()
{
return self::$count;
}
}
类大小扩展测试
{
私有$maxSize=10;
/**
*跟踪添加了多少个元素
*
*@var整数
*/
私有静态$count=0;
/**
*在大小上添加元素
*
*@param integer$元素
*@返回整数
*/
公共函数sizedd($element)
{
if(self::$count<$this->maxSize){
self::$count=self::$count+1;
返回父::示例($element);
}
}
/**
*这只是为了获取当前的计数数
*这是可选的方法。
*@返回整数
*/
公共函数getCount()
{
返回self::$count;
}
}
当然不能,它是私有的,只能在Test
类中使用。类Test
中没有获取$container
大小/计数的方法吗?我想从我的孩子那里获取最后一个$container数组,其中包含add后的值class@mapek当前位置理论上不应该有任何办法得到它。如果存在,则通常认为它是一个bug(通常被归类为安全bug)。但是很多人都经历过你现在所经历的(特别是在Windows和MFC的早期)。因此,您会发现许多OO语言不支持私有变量(例如javascript),甚至完全拒绝在所有未来版本(Perl)中支持私有变量。如果您的语言支持私有变量,那么很抱歉,这是不可能的(或者应该是不可能的),它是私有的,仅在Test
类中可用。类Test
中没有获取$container
的大小/计数的方法吗?我想从我的孩子那里获取最后一个$container数组,其中包含add之后的值class@mapek当前位置理论上不应该有任何办法得到它。如果存在,则通常认为它是一个bug(通常被归类为安全bug)。但是很多人都经历过你现在所经历的(特别是在Windows和MFC的早期)。因此,您会发现许多OO语言不支持私有变量(例如javascript),甚至完全拒绝在所有未来版本(Perl)中支持私有变量。如果您的语言支持私有变量,那么很抱歉,这是不可能的(或者应该是不可能的)。如果我想获取$container数组,则意味着有其他方法可以实现。不,您无法获取,因为$container是私有变量,不允许访问类外部。sizeadd方法中的一些修改,如在父容器中添加值时,它也将作为“private static$tempArray=array()”添加到childs临时数组中;公共函数sizedd($element){if(self::$count<$this->maxSize){self::$count=self::$count+1;self:$tempArray[]=$element;返回父级::sample($element);}“但是根据我的说法,这不是一个好主意。如果我想得到$container数组,就意味着有其他方法可以得到它。不,你不能得到它,因为$container是私有变量,不允许它访问类的外部。sizeadd方法中的一些修改,如在父容器中添加值时,它也将作为“private static$tempArray=array()”添加到childs临时数组中;公共函数sizedd($element){if(self::$count<$this->maxSize){self::$count=self::$count+1;self:$tempArray[]=$element;return parent::sample($element);}}}`但我认为这不是个好主意。Test是我的核心类。我无法在该类上添加额外的函数或变量。只有扩展类测试是我的核心类,我才有访问权限。我无法在该类上添加额外的函数或变量。我只有访问扩展类的权限