PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » PHP » PHP_Shell » Bug #8554

Raises Exception for Dynamically Dispatched Functions

Details

Submitted2006-08-24 20:57 UTC
Fromripta dot pasay at lunarpages dot com
Assignedjespino
StatusClosed
PackagePHP_Shell
PHP Version5.1.4
OSCentOS release 3.5 (Final)
Roadmaps(Not assigned)

Comments

[2006-08-24 20:57 UTC] ripta dot pasay at lunarpages dot com

Description:
------------
When function calls are handled by __call (PHP 5.x only), PHPShell will raise an Exception on line 346, because it uses method_exists() to check whether the function exists or not.

Using is_callable() instead of method_exists() will handle __call()s correctly. A down side: is_callable() seems to always return TRUE if __call() exists.

Test script:
---------------
class Test
{
public function __call($methodName, $argList)
{
echo "$methodName called\n";
}
}

$t = new Test();
$t->doIt();

Expected result:
----------------
doIt called

Actual result:
--------------
Exception (code: 0) got thrown
exception 'Exception' with message 'Variable $t (Class 'Test') doesn't have a method named 'doIt'' in /usr/local/lib/php/PHP/Shell.php:346
Stack trace:
#0 /usr/local/lib/php/php-shell-cmd.php(116): PHP_Shell->parse()
#1 {main}