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