You need to do that yourself. You can use null
to indicate that a default value should be used:
public function getSomething($orderBy = null, $direction = null, $limit = null) {
// fallbacks
if ($orderBy === null) $orderBy = 'x';
if ($direction === null) $direction = 'DESC';
// do something random
}
Then pass null
when calling it to indicate that you want to use the defaults:
$random = $this->my_model->getSomething(null, null, 10);
Another possible solution that I use sometimes is an additional parameter at the very end of the parameter list, containing all optional parameters:
public function foo($options = array()) {
// merge with defaults
$options = array_merge(array(
'orderBy' => 'x',
'direction' => 'DESC',
'limit' => null
), $options);
// do stuff
}
That way you do not need to specify all optional arguments. array_merge() ensures that you are always dealing with a complete set of options. You would use it like this:
$random = $this->my_model->foo(array('limit' => 10));
It seems like there is no required parameter this particular case, but if you need one, simply add it in front of the optional ones:
public function foo($someRequiredParameter, $someOtherRequiredParameter, $options = array()) {
// ...
}