Will do. Right now I'm trying to figure out how to override a variable set in the parent class.

On 01/25/2013 07:06 PM, Darryle Steplight wrote:
Take a look at PHP traits, its a PHP 5.4 feature and PHP's solution to
multi-inheritance.

On Fri, Jan 25, 2013 at 6:57 PM, Leam Hall <leamh...@gmail.com> wrote:
Err...until I remember to put parent::__construct() in B.   :)

Leam


On 01/25/2013 06:51 PM, Leam Hall wrote:

Interesting. The parent isn't multi-generational, far as I can see. That
is, if C extends B which extends A, parent::__construct() in C does not
have access to stuff constructed in A.

I can make it work by making C extend A, but need to google a way to
inherit further up the chain.

Thanks!

Leam


On 01/25/2013 06:42 PM, Joey Derrico wrote:

As Jeff said you have to call it explicitly

class Trooper extends Person
{
public function _construct($parms)
{
parent::_construct();
//Whatever else is here
}
}

Joey Derrico

On Fri, Jan 25, 2013 at 5:57 PM, Rob Marscher
<rmarsc...@beaffinitive.com <mailto:rmarsc...@beaffinitive.com>> wrote:

     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
     <mailto: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 <tel:970.443.9390>
     j...@jeffslutz.com <mailto:j...@jeffslutz.com>


     On Fri, Jan 25, 2013 at 5:47 PM, Leam Hall <leamh...@gmail.com
     <mailto: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


     _______________________________________________
     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



_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

http://www.nyphp.org/show-participation

Reply via email to