Here's where the info is for that in the php docs: http://php.net/manual/en/language.oop5.decon.php
On Jan 25, 2013, at 5:51 PM, Jeff Slutz <j...@jeffslutz.com> wrote: > 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://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
_______________________________________________ New York PHP User Group Community Talk Mailing List http://lists.nyphp.org/mailman/listinfo/talk http://www.nyphp.org/show-participation