<?php
class Test
{
protected $foo;
public function __construct($foo)
{
$this->foo = $foo;
}
protected function bar()
{
echo 'Accessed the private method.';
}
}
class Test2 {
public function baz(Test $other)
{
// We can change the private property:
$other->foo = 'hello';
var_dump($other->foo);
// We can also call the private method:
$other->bar();
}
}
$test = new Test2('test');
$test->baz(new Test('other'));
Fatal error: Uncaught Error: Cannot access protected property Test::$foo in /in/DJ1q7:24
Stack trace:
#0 /in/DJ1q7(34): Test2->baz(Object(Test))
#1 {main}
thrown in /in/DJ1q7 on line 24
Process exited with code 255.
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
Fatal error: Uncaught Error: Cannot access protected property Test::$foo in /in/DJ1q7:24
Stack trace:
#0 /in/DJ1q7(34): Test2->baz(Object(Test))
#1 {main}
thrown in /in/DJ1q7 on line 24
Process exited with code 255.
Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28
Fatal error: Cannot access protected property Test::$foo in /in/DJ1q7 on line 24
Process exited with code 255.