[wp-hackers] echo and return

David House dave at xmouse.ithium.net
Mon Jul 26 13:06:42 UTC 2004


> I can't think of anything much more user hostile than asking the user 
> not only learn the parameters for the method, but also the name of the 
> parameters, and then try to get the encoding right.

Agreed.

> And there IS a way to grab the parameters of any function:
> func_num_args(), func_get_arg(), and func_get_args().

That was my first lead, but I'm pretty sure they only work on the current
function.

Quoting Brian Meidell <brian at mindflow.dk>:
> 
> I am glad you agree.
> 
> About the url encoded parameter lists, though:
> Since user friendliness seems to be an issue (an approach I agree with), 
> I can't understand why we would go with url encoded argument strings.
> 
> I can't think of anything much more user hostile than asking the user 
> not only learn the parameters for the method, but also the name of the 
> parameters, and then try to get the encoding right.
> 
> I will would be shaken at my foundation if users weren't more confused 
> by url encoded parameter lists than either $echo parameters or double 
> functions.
> 
> And there IS a way to grab the parameters of any function:
> func_num_args(), func_get_arg(), and func_get_args().
> 
> /Brian
> 
> David House wrote:
> 
> > This is a very, very good idea and I think it should be prioritised. It
> would
> > make WP a _lot_ easier to work with, as well as making more sense.
> > 
> > By the way, there's an easy way to get round the mass-number-of-functions
> > problem. Simply define all the get_the_* functions, then:
> > 
> > $funcs = get_defined_functions();
> > $funcs = $funcs['user'];
> > foreach ($funcs as $funcname) 
> >   if (substr($funcname, 0, 4) == 'get_') {
> >     $newfname = substr($funcname, 4); //4 is the length of string 'get_'
> >     if (!function_exists($newfname)) {
> >       function $newfname($arrs) {
> >         {$funcname}($arrs);
> >       }
> >     }
> > 
> > 
> > BUT that's only if every single function was converted over to url style
> > arguments, which wouldn't be an ideal situation. It could also work if
> there
> > was a PHP function to grab the arguments of any function, which there
> doesn't
> > seem to be.
> > 
> > Quoting Brian Meidell <brian at mindflow.dk>:
> > 
> >>Hi hackers,
> >>
> >>I had a short and confusing discussion with Mookitty and Matt on the irc 
> >>channel today, and I wanted to pick it up here.
> >>
> >>I suggested to Matt that I would like to split up template functions 
> >>that right now either:
> >>1) Echo their output, or
> >>2) Have a parameter that decides whether to echo or return output
> >>
> >>So instead of having
> >>the_foo($id, $pre = '', $post = '', $foo = '', $echo = true)
> >>{
> >>    if($echo)
> >>       echo "$pre test $post";
> >>    else
> >>       return "$pre test $post";
> >>}
> >>
> >>we would have:
> >>
> >>get_the_foo($id, $pre = '', $post = '', $foo = '')
> >>{
> >>    return "$pre test $post";
> >>}
> >>
> >>and:
> >>
> >>the_foo($id, $pre = '', $post = '', $foo = '', $echo= true)
> >>{
> >>    if($echo)
> >>       echo get_the_foo($id, $pre, $post, $foo);
> >>    else
> >>       return get_the_foo($id, $pre, $post, $foo);
> >>}
> >>
> >>... everywhere we could.
> >>There are functions that follow this pattern already, but I would like 
> >>to make changes changes, so they all do (as much as possible, at least).
> >>
> >>My arguments for this are:
> >>
> >>1) Often the_foo doesn't have the $output flag, and the only way to get 
> >>the data is either by catching the output with the ob_ functions - which 
> >>is extremely ugly - or copying the body of the function into your own 
> >>function, which is unfortunate and can prevent smooth version migration.
> >>
> >>2) Even when the function has the $echo, it's sometimes the last 
> >>argument (as shown in the_foo), and you have to enter a bunch of 
> >>arguments where the defaults were doing just fine, which is a pain.
> >>
> >>3) It's a bad programming practice to have an unnecessary branch 
> >>runtime, if the branch path is known at design time.
> >>
> >>4) Even when the $echo argument is cleverly put first, it's cluttering 
> >>the argument list for anyone that doesn't need it. It also causes 
> >>confusion with non-technical minded people. My friend who runs binary 
> >>bonsai came in while I was writing this email, and didn't know how to 
> >>use get_the_category_link because he didn't know the meaning of the echo 
> >>argument.
> >>
> >>Mookitty would prefer that all functions just return their data, and 
> >>that people use:
> >><?=the_foo() ?>
> >>
> >>but Matt argued that we don't use the <? shorthand because of 
> >>compatability, and it would be too difficult for the template users to 
> >>use echo in front of the functions, like so:
> >><?php echo the_foo() ?>
> >>
> >>I tend to agree with Matt on that one.
> >>Which supports my case for having two separate functions with some kind 
> >>of clear naming convention.
> >>
> >>There are no drawbacks to using my approach, unless you think a higher 
> >>number of functions is a drawback. Personally, I think having two 
> >>functions that have a consistent naming convention and a logical 
> >>connection such as this is better than having one with an extra argument.
> >>
> >>I realize that the get_ prefix is used in many cases, so I am sure we 
> >>can come up with a better one. The idea is to have template-function 
> >>that echos the return value from prefix-template-function. The value of 
> >>prefix can be determined later and is not the topic of discussion (until 
> >>we all agree that this is the best approach :).
> >>
> >>Join the discussion!
> >>
> >>/Brian
> >>
> >>
> >>_______________________________________________
> >>hackers mailing list
> >>hackers at wordpress.org
> >>http://wordpress.org/mailman/listinfo/hackers_wordpress.org
> >>
> > 
> > 
> > 
> > 
> > 
> > ----------------------------------------------------------------
> > This message was sent using IMP, the Internet Messaging Program.
> > 
> > 
> > _______________________________________________
> > hackers mailing list
> > hackers at wordpress.org
> > http://wordpress.org/mailman/listinfo/hackers_wordpress.org
> > 
> > 
> 
> 
> _______________________________________________
> hackers mailing list
> hackers at wordpress.org
> http://wordpress.org/mailman/listinfo/hackers_wordpress.org
> 




----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.




More information about the hackers mailing list