2016-01-22 63 views
0

我有一個核心類,我不能修改核心類。下面獲得私有變量的最後一個值類OOPS

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

+0

你不能,它是私有的,只有在'Test'類是可用的。 –

+0

是不是有一種方法來獲取'Test'類中'$ container'的大小/數量? –

+0

我想從我的子類中添加最後一個$容器數組並添加值 –

回答

-1

在基類中創建一個函數來計算容器數,並在子類中使用該函數來獲取容器的總數。

class Test 
{ 
    private $container = []; 
    public function sample($input) 
    { 
      return array_push($this->container, $input); 
    } 
    // counts container 
    public function countContainer(){ 
     return count($this->container); 
    } 
} 

現在在子類中調用這個countContainer函數。

+0

測試是我的核心課程。我無法在該類上添加額外的函數或額外的變量。我有權訪問只有擴展類 –

3

嘗試通過改變如下的擴展類:當然

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; 
    } 
} 
+0

如果我想獲得$容器數組意味着任何其他方式來做到這一點。 –

+0

不,你不能明白,因爲$容器是私人變量,它不允許訪問課堂外。在父容器中添加值時,sizeadd方法中的一些修改也會作爲 被添加到子容器temp數組中。 public function sizeadd($ element) if(self :: $ count < $this-> maxSize){ self :: $ count = self :: $ count + 1; self :: $ tempArray [] = $ element; return parent :: sample($ element); } }' 但據我說這不是個好主意。 –