diff options
| author | David Soria Parra <dsp@php.net> | 2007-12-30 17:59:31 +0000 |
|---|---|---|
| committer | David Soria Parra <dsp@php.net> | 2007-12-30 17:59:31 +0000 |
| commit | e81a660bae574337a87ad206c9094a935efa9b8e (patch) | |
| tree | 6e7410b2404277653b8e4df1fde47cd048a164d0 /ext | |
| parent | 3b2ca906998ce6a5bf572f1534fc177b65dc9844 (diff) | |
| download | php-git-e81a660bae574337a87ad206c9094a935efa9b8e.tar.gz | |
- Fixed bug #43663 (Extending PDO class with a __call() function doesn't work).
Diffstat (limited to 'ext')
| -rwxr-xr-x | ext/pdo/pdo_dbh.c | 10 | ||||
| -rw-r--r-- | ext/pdo/tests/bug_43663.phpt | 23 |
2 files changed, 31 insertions, 2 deletions
diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c index ff65aeb7f8..3781b9f961 100755 --- a/ext/pdo/pdo_dbh.c +++ b/ext/pdo/pdo_dbh.c @@ -1273,12 +1273,18 @@ static union _zend_function *dbh_method_get( 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; diff --git a/ext/pdo/tests/bug_43663.phpt b/ext/pdo/tests/bug_43663.phpt new file mode 100644 index 0000000000..25af588bbe --- /dev/null +++ b/ext/pdo/tests/bug_43663.phpt @@ -0,0 +1,23 @@ +--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 |
