<?php
class Base {
private function priv() {
echo "Base\n";
}
// Expose the private method directly.
public function callPriv() {
$this->priv();
}
// Expose the method via call_user_func().
public function call() {
call_user_func(array($this, 'priv'));
}
// Expose either method using Reflection.
public function reflect() {
$rm = new ReflectionMethod($this, 'priv');
$rm->setAccessible(true);
$rm->invoke($this);
}
}
class Child extends Base {
// A child private method. Does it override the base method ?
private function priv() {
echo "Child\n";
}
// Expose the private method directly.
public function callPriv() {
$this->priv();
}
}
$f = new Child();
// Shouldn't instance method calls invoke the method from the instance class ?
$f->callPriv();
$f->call('priv');
$f->reflect('priv');
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
Child
Base
Child