<?php
class A
{
public function testIsCallable(callable $param) {
return is_callable($param);
}
private function privateMethod() {
echo "This is a private method";
}
public function test($param) {
if ($this->testIsCallable($param)) {
$param();
}
}
}
class B extends A
{
public function testIsCallable(callable $param) {
return is_callable($param);
}
public function test($param) {
if ($this->testIsCallable($param)) {
$param();
}
}
}
$a = new A();
$b = new B();
$callable = [$a, 'privMethod'];
$a->test($callable);
$b->test($callable);
Fatal error: Uncaught TypeError: A::testIsCallable(): Argument #1 ($param) must be of type callable, array given, called in /in/S0Eol on line 14 and defined in /in/S0Eol:5
Stack trace:
#0 /in/S0Eol(14): A->testIsCallable(Array)
#1 /in/S0Eol(38): A->test(Array)
#2 {main}
thrown in /in/S0Eol on line 5
Process exited with code 255.
Fatal error: Uncaught TypeError: Argument 1 passed to A::testIsCallable() must be callable, array given, called in /in/S0Eol on line 14 and defined in /in/S0Eol:5
Stack trace:
#0 /in/S0Eol(14): A->testIsCallable(Array)
#1 /in/S0Eol(38): A->test(Array)
#2 {main}
thrown in /in/S0Eol on line 5
Process exited with code 255.
Catchable fatal error: Argument 1 passed to A::testIsCallable() must be callable, array given, called in /in/S0Eol on line 14 and defined in /in/S0Eol on line 5
Process exited with code 255.