diff options
author | Johannes Schlüter <johannes@php.net> | 2008-03-01 13:53:32 +0000 |
---|---|---|
committer | Johannes Schlüter <johannes@php.net> | 2008-03-01 13:53:32 +0000 |
commit | 68de75f0b588be1a874fa73dd03b12d9c902955c (patch) | |
tree | ee6fe9f6b2f2c296f4cd816bf711395d6f43a4f3 | |
parent | 05ba20f9b62938916db54fe169af72cc735081dc (diff) | |
download | php-git-68de75f0b588be1a874fa73dd03b12d9c902955c.tar.gz |
MFH: Allow implementation of abstract methods with optional parameters (Christian
Schneider)
-rw-r--r-- | Zend/tests/022.phpt | 24 | ||||
-rw-r--r-- | Zend/zend_compile.c | 2 |
2 files changed, 25 insertions, 1 deletions
diff --git a/Zend/tests/022.phpt b/Zend/tests/022.phpt new file mode 100644 index 0000000000..1226e2719f --- /dev/null +++ b/Zend/tests/022.phpt @@ -0,0 +1,24 @@ +--TEST-- +Implementating abstracting methods and optional parameters +--FILE-- +<?php + +abstract class Base +{ + abstract function someMethod($param); +} + +class Ext extends Base +{ + function someMethod($param = "default") + { + echo $param, "\n"; + } +} + +$a = new Ext(); +$a->someMethod("foo"); +$a->someMethod(); +--EXPECT-- +foo +default diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 18082c60bb..f8b380388d 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2283,7 +2283,7 @@ static zend_bool zend_do_perform_implementation_check(zend_function *fe, zend_fu } /* check number of arguments */ - if (proto->common.required_num_args != fe->common.required_num_args + if (proto->common.required_num_args < fe->common.required_num_args || proto->common.num_args > fe->common.num_args) { return 0; } |