Re: more on interface inheritance issues

From: Date: Tue, 17 Feb 2004 19:46:34 +0000
Subject: Re: more on interface inheritance issues
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-7932@lists.php.net to get a copy of this message
On Tue, 17 Feb 2004 15:34:11 +0000, Stephane Drouard wrote: Hans, In PHP you are not allowed to explicit overload methods. Ex: class A { function x($a1) {} function x($a1, $a2) {} } The function "x" is already defined and explicit overloading is not possible, so the code above will result in parser error. In PHP you are allowed to do overriding. The code you supplied: > class A { > function init() { ... } > function doSomething($arg1, $arg2) { ... } > } > > class B extends A { > function doSomething($arg1, $arg2, $arg3, $arg4 = null) { ... } > function doSomethingElse($arg1) { ... } > } You are redefining the function doSomething at the child and this is "overriding". But when you use an interface, you are telling PHP that you class has a commitment to implement some functions(signatures). Since you agreed at the commitment, you can't break it doing overriding(with a different signature - arguments). The only way is overloading, but PHP doesn't support it(you can do overloading with __call, __get and __set but that's not the case). BTW, overriding with default arguments will be a nice feature. Cristiano Duarte

« previous php.internals (#7932) next »