@lonesomeday, , , . , , , scope . PHP 5.3.16 .
: static , , , .. p >
.
-, : __construct() , , .
<?php
class A {
public function __construct() {
static $i = 0;
$i++;
$this->i = $i;
}
}
$o1 = new A();
$o2 = new A();
printf("\$o1->i: %d\n", $o1->i);
printf("\$o2->i: %d\n", $o2->i);
?>
. ( 0) .
A B ( ), :
<?php
class A {
public function __construct() {
static $i = 0;
$i++;
$this->i = $i;
}
}
class B extends A {}
$o1 = new A();
$o2 = new B();
printf("\$o1->i: %d\n", $o1->i);
printf("\$o2->i: %d\n", $o2->i);
?>
, . . -/ -. , B :
<?php
class A {
public function __construct() {
$this->setI();
}
public function setI() {
static $i = 0;
$i++;
$this->i = $i;
}
}
$o1 = new A();
$o2 = new A();
printf("\$o1->i: %d\n", $o1->i);
printf("\$o2->i: %d\n", $o2->i);
?>
.
, A B :
<?php
class A {
public function __construct() {
$this->setI();
}
public function setI() {
static $i = 0;
$i++;
$this->i = $i;
}
}
class B extends A {}
$o1 = new A();
$o2 = new B();
printf("\$o1->i: %d\n", $o1->i);
printf("\$o2->i: %d\n", $o2->i);
?>
: $o2->i 2, .
, A , , , $i, .
, ; , B setI(), :
<?php
class A {
public function __construct() {
$this->setI();
}
public function setI() {
static $i = 0;
$i++;
$this->i = $i;
}
}
class B extends A {
public function setI() {
parent::setI();
}
}
$o1 = new A();
$o2 = new B();
printf("\$o1->i: %d\n", $o1->i);
printf("\$o2->i: %d\n", $o2->i);
?>
, $o2->i 2, ( # 4)
, , . , , ( ) .
, PHP, . PHP :
, , .
, " " , , # 4.