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