PHP [OOP]: allocating memory for inheritance

Please see below:

class A {
    public x = 5;
    public y = 6;
    public z = 7;
}

class B extends A {
    public m = 1;
    public n = 2;
}

$a = new A();
$b = new B()

From the above code, let $ a allocate x amount of memory, and $ b allocate y amount of memory;

Now my question is: which one is correct below?

x> y

x <y

+3
source share
3 answers

These are my numbers:

Starting allocation 62480
Allocated memory for new A() 328
Allocated memory for new B() 496

Thus, x < y

These two class definitions are equivalent

class B extends A {
    public $m = 1;
    public $n = 2;
}

class C {
    public $x = 5;
    public $y = 6;
    public $z = 7;
    public $m = 1;
    public $n = 2;
}

Assuming that if you changed the definition of B to the definition of C, then memory usage would be the same for using new B () or new C ().

, ( )

$start = memory_get_usage();
echo "Starting allocation $start\n";
$a = new A();
$diff = memory_get_usage() - $start;
echo "Allocated memory for new A() $diff\n";
$b = new B();
$diff = memory_get_usage() - $start - $diff;
echo "Allocated memory for new B() $diff\n";
+7
+3

$x, $y, $z.

And $ b takes up more memory because it has an instance of A inside.

+1
source

Source: https://habr.com/ru/post/1725592/


All Articles