I am trying to get a child class to pass an array of valid keys to it's parent when the constructor is run, and the parent appends the data to one of it's array of valid keys. Then it walks through an array pulling out values that have valid keys, and putting them in an array for processing later. I have tried explicitly stating the variable scope.

abstract class parentclass
{
  protected $vkeys= array('title1','title2','title3');
  protected $a;
        
  function __construct($set = NULL, $special = NULL)
  {
    self::$this->vkeys= array_merge(self::$this->vkeys, $special);        
    foreach($set as $key=>$value)
    {
      if (in_array($key,self::$this->vkeys))
      {
        $this->a[$key] = $value;
      }
    }
    print_r(self::$this->vkeys);  //output below
    print_r(self::$this->a);  //output below
  }
}

class childclass extends parentclass
{
  protected $vkeys= array('titleA', 'titleB', 'TitleC');

  function __construct($set, $special = NULL)
  {
    parent::__construct($set, self::$this->vkeys);
    unset(self::$this->vkeys);
  }
}

Unfortunately it seems to duplicate the child's array instead of appending. Explicitly stating scope does not seem to help.


print_r(self::$this->vkeys);
Array (
  [0] => titleA
  [1] => titleB
  [2] => titleB
  [3] => titleA
  [4] => titleB
  [5] => titleB
)

print_r(self::$this->a);
Array()

Any thoughts?

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to