Re: [PHP-LANG] OO-problem

[email protected] (Zeev Suraski)
Newsgroups php.lang
Message-ID <[email protected]>
You can't have multiple definitions for the same method.  However, you can 
easily implement this functionality in a number of different ways:

- Using default argument values (e.g., function b($var=unset) { ... };  If 
$var is unset, behave as if there were no arguments sent).
- Declaring no argument list at all, and using func_num_args(), 
func_get_arg() and func_get_args() to determine what the arguments were.

The reason for the behavior you discovered (which is intended) is that PHP 
doesn't decide which functions to call according to the argument list, but 
only according to the name.  There's no polymorphism of that kind in PHP.

Zeev

At 00:33 18/4/2001, Bas Cancrinus wrote:
>Hi,
>
>I'm experiencing the following problem when I try to implement an OO-model 
>in PHP:
>If a class, say A, has more than 1 method with equal names, say b, and 
>different signatures and one of these methods b of an instance A is 
>called, then PHP always delegates that call to the first method that 
>appears in the code.
>Example:
>
>class A {
>   function b () {
>       ...
>   }
>   function b ($var) {
>       ...
>   }
>}
>$anInstance = new A;
>$aReturnValue = $anInstance->b (...) // Won't work
>
>Is this a bug or is there any other reason for this behaviour?
>
>Thanks,
>Bas
>
>
>--
>PHP Language Mailing List (http://www.php.net/)
>To unsubscribe, e-mail: [email protected]
>For additional commands, e-mail: [email protected]
>To contact the list administrators, e-mail: [email protected]

--
Zeev Suraski <[email protected]>
CTO &  co-founder, Zend Technologies Ltd. http://www.zend.com/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.