input_select('d_name', null, null, $name_list, 30, 'selectName', false, true);
The latter method is like the following:
input_control(INPUT_SELECT, 'd_name', null, array('list' => $name_list, 'changehook' => 'selectName', 'multiple' => true));
In my experience in this application, I find the latter to be far preferable.
Actually, that's not a wonderfully good example. We had a series of functions with different argument orders for creating various HTML form controls. Most of them suffered from the option-itis we've been discussing, and there were many features most of them could share but did not because it would involve copying code. So I created a single function that could draw any form control, given the right combination of parameters. The first three were the type, it's name and it's value. The remainder were provided in an array. The biggest advantage this gave me was that now all types support the same variety of parameters, including several that are available because they are all HTML tags.
An object-tree might work for this API, though it would probably involve replacing lots of single calls with three or four lines of code. :-/
Wrapper functions could work, too, though there are still four or five parameters that would be optional for all variants. Hmm.
Wade.