Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从类OOPS中获取私有变量的最后一个值_Php_Oop_Stack_Private - Fatal编程技术网

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是我的核心类。我无法在该类上添加额外的函数或变量。只有扩展类测试是我的核心类,我才有访问权限。我无法在该类上添加额外的函数或变量。我只有访问扩展类的权限