dsp Sun Dec 30 17:51:35 2007 UTC Added files: (Branch: PHP_5_3) /php-src/ext/pdo/tests bug_43663.phpt
Modified files: /php-src/ext/pdo pdo_dbh.c Log: - Fixed bug #43663 (Extending PDO class with a __call() function doesn't work). CVS http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_dbh.c?r1=1.82.2.31.2.17.2.2&r2=1.82.2.31.2.17.2.3&diff_format=u Index: php-src/ext/pdo/pdo_dbh.c diff -u php-src/ext/pdo/pdo_dbh.c:1.82.2.31.2.17.2.2 php-src/ext/pdo/pdo_dbh.c:1.82.2.31.2.17.2.3 --- php-src/ext/pdo/pdo_dbh.c:1.82.2.31.2.17.2.2 Sun Oct 7 05:22:05 2007 +++ php-src/ext/pdo/pdo_dbh.c Sun Dec 30 17:51:35 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_dbh.c,v 1.82.2.31.2.17.2.2 2007/10/07 05:22:05 davidw Exp $ */ +/* $Id: pdo_dbh.c,v 1.82.2.31.2.17.2.3 2007/12/30 17:51:35 dsp Exp $ */ /* The PDO Database Handle Class */ @@ -1273,12 +1273,19 @@ if (zend_hash_find(dbh->cls_methods[PDO_DBH_DRIVER_METHOD_KIND_DBH], lc_method_name, method_len+1, (void**)&fbc) == FAILURE) { - fbc = NULL; + if (std_object_handlers.get_method) { + fbc = std_object_handlers.get_method(object_pp, lc_method_name, method_len TSRMLS_CC); + } + + if (!fbc) { + fbc = NULL; + } + goto out; } /* got it */ } - + out: efree(lc_method_name); return fbc; http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/bug_43663.phpt?view=markup&rev=1.1 Index: php-src/ext/pdo/tests/bug_43663.phpt +++ php-src/ext/pdo/tests/bug_43663.phpt --TEST-- PDO Common: Bug #43663 (__call on classes derived from PDO) --FILE-- --SKIPIF-- <?php # vim:ft=php if (!extension_loaded('pdo')) die('skip'); ?> --FILE-- <?php class test extends PDO{ function __call($name, array $args) { echo "Called $name in ".__CLASS__."\n"; } function foo() { echo "Called foo in ".__CLASS__."\n"; } } $a = new test('sqlite::memory:'); $a->foo(); $a->bar(); --EXPECT-- Called foo in test Called bar in test -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php