<?php
namespace Derp;
abstract class A
{
public $stuff = array();
abstract public function __construct();
}
class B extends A
{
protected $kids;
protected $log;
public function __construct()
{
}
public function bee()
{
$this->kids = new C($this);
$this->kids->cee();
echo "Buzz bee\n";
}
public function updateLog($msg)
{
$this->log[] = $msg;
echo "Adddig log $msg\n";
}
}
class C
{
public $Cups = "cCup";
public function __construct($b)
{
//$this->bee();
$this->Cups = $b;
echo "Building c\n";
}
public function cee()
{
$this->stuff = array("MyStuff");
$this->Cups->updateLog("This");
$this->Cups->updateLog("That");
echo "In cee\n";
}
}
$b = new B();
$x = $b->bee();
var_dump($b);
Building c
Deprecated: Creation of dynamic property Derp\C::$stuff is deprecated in /in/Dp9Pb on line 46
Adddig log This
Adddig log That
In cee
Buzz bee
object(Derp\B)#1 (3) {
["stuff"]=>
array(0) {
}
["kids":protected]=>
object(Derp\C)#2 (2) {
["Cups"]=>
*RECURSION*
["stuff"]=>
array(1) {
[0]=>
string(7) "MyStuff"
}
}
["log":protected]=>
array(2) {
[0]=>
string(4) "This"
[1]=>
string(4) "That"
}
}
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Building c
Deprecated: Creation of dynamic property Derp\C::$stuff is deprecated in /in/Dp9Pb on line 46
Adddig log This
Adddig log That
In cee
Buzz bee
object(Derp\B)#1 (3) {
["stuff"]=>
array(0) {
}
["kids":protected]=>
object(Derp\C)#2 (2) {
["Cups"]=>
*RECURSION*
["stuff"]=>
array(1) {
[0]=>
string(7) "MyStuff"
}
}
["log":protected]=>
array(2) {
[0]=>
string(4) "This"
[1]=>
string(4) "That"
}
}
Output for 8.1.0 - 8.1.28
Building c
Adddig log This
Adddig log That
In cee
Buzz bee
object(Derp\B)#1 (3) {
["stuff"]=>
array(0) {
}
["kids":protected]=>
object(Derp\C)#2 (2) {
["Cups"]=>
*RECURSION*
["stuff"]=>
array(1) {
[0]=>
string(7) "MyStuff"
}
}
["log":protected]=>
array(2) {
[0]=>
string(4) "This"
[1]=>
string(4) "That"
}
}