[wp-hackers] echo and return

Brian Meidell brian at mindflow.dk
Mon Jul 26 12:53:23 UTC 2004


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
> 
> 




More information about the hackers mailing list