I think you're looking for parent::__construct(); The child's __construct() will replace the parent's. So if you want to run the parent's you have to call it explicitly.
JS -- Jeff Slutz JSLEUTH LLC 3242 44th ST APT 3F Astoria, NY 11103 c. 970.443.9390 j...@jeffslutz.com On Fri, Jan 25, 2013 at 5:47 PM, Leam Hall <leamh...@gmail.com> wrote: > Okay, OOP newbie time again. In line 11 I declare an array. Per IRC > conversations a day or so ago, line 49 has to go into the __construct > function. However, the hope is that line 83 would add to what was done in > line 49. It seems not to. > > I think because the extends doesn't actually call the __construct. Is my > understanding correct? How would I achieve the goal of adding line 83 so > that $roles included 'troop' and 'nco' for an object of class NCO? > > Thanks! > > Leam > > #### > > 1 <?php > 2 > 3 require_once 'stat_array.php'; > 4 > 5 class Person { > 6 > 7 public $name; > 8 public $age; > 9 public $gender = "Female"; > 10 public $skills = array(); > 11 public $roles = array(); > 12 > 13 public function __construct() { > 14 $this->age = 10 + rand(1,7); > 15 $this->gender = $this->roll_gender(50); > 16 return true; > 17 } > 18 > 19 protected function roll_age($min, $max) { > 20 return 17 + rand($min, $max); > 21 } > 22 > 23 protected function roll_gender($trigger) { > 24 if (rand(1, 100) < $trigger) { > 25 return "Male"; > 26 } else { > 27 return "Female"; > 28 } > 29 } > 30 > 31 protected function add_skill(&$skill_array, $skill) { > 32 // Note the array pass by reference, per ##php fluffypony > 33 if (array_key_exists($skill, $skill_array)) { > 34 $skill_array[$skill] = $skill_array[$skill] + 1; > 35 } else { > 36 $skill_array[$skill] = 1; > 37 } > 38 return $skill_array; > 39 } > 40 } > 41 > 42 class Trooper extends Person { > 43 > 44 private $rank_min = 1; > 45 private $rank_max = 2; > 46 protected $rank_class = 'rank_enlisted'; > 47 public $rank; > 48 public function __construct($params) { > 49 $this->roles[] = 'troop'; > 50 $this->age = $this->roll_age($this->rank_**min, 3 + > $this->rank_max); > 51 $this->gender = $this->roll_gender($params['** > percent_male']); > 52 $this->rank = $params[$this->rank_class][$** > this->get_rank($this->rank_**min, $this->rank_max)]; > 53 foreach($this->roles as $role) { > 54 $this->add_skill($this->**skills, > $params['base_skill'][$role]); > 55 } > 56 > 57 > 58 return true; > 59 } > 60 > 61 protected function get_rank($rank_min, $rank_max) { > 62 return rand($rank_min, $rank_max); > 63 } > 64 > 65 } > 66 > 67 class Corporal extends Trooper { > 68 private $rank_min = 3; > 69 private $rank_max = 4; > 70 > 71 public function __construct($params) { > 72 $this->age = $this->roll_age($this->rank_**min , 5 + > $this->rank_max); > 73 $this->gender = $this->roll_gender($params['** > percent_male']); > 74 $this->rank = $params[$this->rank_class][$** > this->get_rank($this->rank_**min, $this->rank_max)]; > 75 } > 76 } > 77 > 78 class NCO extends Corporal { > 79 private $rank_min = 4; > 80 private $rank_max = 6; > 81 > 82 public function __construct($params) { > 83 $this->roles[] = 'nco'; > 84 $this->age = $this->roll_age($this->rank_**min , 7 + > $this->rank_max); > 85 $this->gender = $this->roll_gender($params['** > percent_male']); > 86 $this->rank = $params[$this->rank_class][$** > this->get_rank($this->rank_**min, $this->rank_max)]; > 87 foreach($this->roles as $role) { > 88 $this->add_skill($this->**skills, > $params['base_skill'][$role]); > 89 } > 90 > 91 } > 92 } > 93 > 94 class SNCO extends NCO { > 95 private $rank_min = 6; > 96 private $rank_max = 9; > 97 > 98 public function __construct($params) { > 99 $this->age = $this->roll_age($this->rank_**min , 10 + > $this->rank_max); > 100 $this->gender = $this->roll_gender($params['** > percent_male']); > 101 $this->rank = $params[$this->rank_class][$** > this->get_rank($this->rank_**min, $this->rank_max)]; > 102 } > 103 } > 105 class Platoon_Officer extends Trooper { > 106 private $rank_min = 1; > 107 private $rank_max = 2; > 108 protected $rank_class = 'rank_officer'; > 109 > 110 public function __construct($params) { > 111 $this->age = $this->roll_age($this->rank_**min , 4 + > $this->rank_max); > 112 $this->gender = $this->roll_gender($params['** > percent_male']); > 113 $this->rank = $params[$this->rank_class][$** > this->get_rank($this->rank_**min, $this->rank_max)]; > 114 } > 115 } > 116 > 117 > 118 class Company_Officer extends Platoon_Officer { > 119 private $rank_min = 3; > 120 private $rank_max = 4; > 121 > 122 public function __construct($params) { > 123 $this->age = $this->roll_age($this->rank_**min , 7 + > $this->rank_max); > 124 $this->gender = $this->roll_gender($params['** > percent_male']); > 125 $this->rank = $params[$this->rank_class][$** > this->get_rank($this->rank_**min, $this->rank_max)]; > 126 } > 127 } > 128 > 129 > 130 ?> > > > ______________________________**_________________ > New York PHP User Group Community Talk Mailing List > http://lists.nyphp.org/**mailman/listinfo/talk<http://lists.nyphp.org/mailman/listinfo/talk> > > http://www.nyphp.org/show-**participation<http://www.nyphp.org/show-participation> >
_______________________________________________ New York PHP User Group Community Talk Mailing List http://lists.nyphp.org/mailman/listinfo/talk http://www.nyphp.org/show-participation