On Thu, Apr 28, 2011 at 01:35:00AM -0700, Stas Malyshev wrote:
> Hi!
> 
> >to find problems before your users?
> 
> Sorry, this doesn't say much. It's a generic, of course we agree it's 
> good to find bugs sooner rather than later. The question is why would 
> that specific thing that is being proposed help - in which specific way?

It would mean that the code that follows could benefit from the PHP run
time checking the return type -- at the point of return. Thus eliminating
following errors where the user does not check, eg:

    function array foo() { .... }

    $ret = foo();
    foreach($ret as $val)
        ....

I must admit that this is much less useful than checking of argument types
going into functions, where the writer of the function (part of a libarary 
perhaps)
does not trust the function user to get validation/... right.
But this is another discussion.


The other way in that this could be very helpful is with run time optimisation, 
especially
for things like HipHop - think of the optimisation that it could make if it knew
the real return type, eg:

    function int bar() { ... }

(The argument about argument types is even more so here.)

> >the second one will produce an error if empty string is given
> >while an empty array would be accepted
> 
> And it is better because?..
> Also please note we are discussing strict return typing.


I am also mindful that the proposed syntax does not allow description
of functions that return more than one type; where they return something
to indicate a failure (or end) - typically FALSE or NULL. So maybe something 
like
the following could cope with them:

    function (array | bool) baz() { ... }

or even:

    function (array | false) baz() { ... }

I can see that some may prefer commas:

    function (array, false) baz() { ... }

although, to me, that looks like a list - I prefer vertical bar.

HipHop would be able to optimise things like:

    if( ($ret = baz()) !== FALSE ) {
        ...
    }


[**] https://github.com/facebook/hiphop-php/wiki/

-- 
Alain Williams
Linux/GNU Consultant - Mail systems, Web sites, Networking, Programmer, IT 
Lecturer.
+44 (0) 787 668 0256  http://www.phcomp.co.uk/
Parliament Hill Computers Ltd. Registration Information: 
http://www.phcomp.co.uk/contact.php
#include <std_disclaimer.h>

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to