note 54103 added to function.is-callable
| From: | php at adaniels dot nl | Date: | Thu, 23 Jun 2005 19:25:58 +0000 |
| Subject: | note 54103 added to function.is-callable | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-90852@lists.php.net to get a copy of this message | ||
Please not that is_callable will not handle private/public well from within a class:
<?php
class X {
private function getXX($value) {
return "XX $value";
}
function testXX() {
echo (is_callable(array($this, 'getXX')) ? $this->getXX("test") :
"Can't call getXX within " . __CLASS__) . "\n";
}
}
class Y extends X {
function testXX() {
echo (is_callable(array($this, 'getXX')) ? $this->getXX("test") :
"Can't call getXX within " . __CLASS__) . "\n";
}
}
$x = new X;
echo (is_callable($x, 'getXX') ? $x->getXX("test") : "Can't call
getXX outside for " . get_class($x)) . "\n";
$x->testXX();
$y = new y;
echo (is_callable($y, 'getXX') ? $y->getXX("test") : "Can't call
getXX outside for " . get_class($y)) . "\n";
$y->testXX();
?>
Results in:
Can't call getXX outside for X
XX test
Can't call getXX outside for Y
<br />
<b>Fatal error</b>: Call to private method X::getXX() from context 'Y' in
...
While we would expect for $y->testXX():
Can't call getXX within Y
I believe this is a bug and will report it as so (as soon as I find out how)
----
Manual Page -- http://www.php.net/manual/en/function.is-callable.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+54103
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+54103&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+54103&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+54103&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+54103&report=yes&reason=useless
Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+54103&report=yes&reason=non-english
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+54103&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+54103&report=yes
Search -- http://master.php.net/manage/user-notes.php