Re: method overloading in a class

From: Date: Wed, 18 Aug 2010 16:35:33 +0000
Subject: Re: method overloading in a class
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-307536@lists.php.net to get a copy of this message
Would something like this work for you? class foo { public function bar($arg1, $arg2, $arg3=null) { if (isset($arg3)){ { return $this->_bar3($arg1, $arg2, $arg3); } else { return $this->_bar2($arg1, $arg2); } } also you may want to look into the func_get_args function. Chris. On Wed, Aug 18, 2010 at 12:23 PM, Ashley Sheridan <ash@ashleysheridan.co.uk>wrote: > Hi list, > > I know that some languages such as C++ can overload functions and > methods by declaring the method again with a different number of > arguments, and the compiler internally sorts things out, but I can't > seem to find a similar way to do this with PHP. > > Basically, what I've got at the moment is a class method with 2 > arguments, and I need to be able to overload the method with 3 > arguments. The following which would work in other languages doesn't > seem to bring any joy in PHP: > > class foo > { > public function bar($arg1, $arg2) > { > // do something with $arg1 & $arg2 > } > > public function bar($arg1, $arg2, $arg3) > { > // do something different with all 3 args > } > } > > Is there any feasible way of doing this? The method names really need to > remain the same as they exist as part of a framework, but the arguments > really server quite different purposes between the two methods, so > there's no nice way of just merging the two functions without breaking > the naming conventions, etc used. > > Thanks, > Ash > http://www.ashleysheridan.co.uk > > >

« previous php.general (#307536) next »