> On 4 Nov 2014, at 11:50, Chris Wright <c...@daverandom.com> wrote:
> 
> On 4 November 2014 10:32, Andrea Faulds <a...@ajf.me> wrote:
> 
> > I thought it was inconsistent, but after discussions on StackOverflow, I 
> > don't think it actually is. > Return types describe the return type of a 
> > function, not the type of a function. So there's no reason > they have to 
> > go before the function name like parameter types do.
> 
> So, in a sentence:
> 
> In PHP, input types go on the left and output types go on the right.
> 
> This sounds like a convention that could be established and followed, and 
> no-one could reasonably call it inconsistent if it was adhered to.
> 

That’s not quite what I meant, but I’d also agree with that convention.

For parameters, the type is of the thing itself:

    function foo(Foo $foo, Bar $bar);

Here, $foo is of the type Foo, and $bar is of the type Bar.

But say if we were to add return types like this:

    function FooBar qux();

The type of qux isn’t a FooBar, it’s a function (more accurately, an 
argument-less, return-anything function). FooBar isn’t what qux is, it’s not 
qux’s type, merely what it returns. In a sense, I’d say there’s already a type 
here: `function`.

Compare it to this:

    function qux(): FooBar;

FooBar is what qux returns, `function` is what qux is.

If we were to hypothetically add typed properties with the same syntax Hack 
has, they’d look like this:

    public Foo $foo;

This would be consistent with parameters. And I think it goes along well with 
return types at the end:

    public Foo $foo;
    public function foobar(): FooBar;

Here, it’s clear the second item is a function, and the previous item is a 
property of type Foo.

…but hey, I could be wrong. Does this make sense to anyone?

--
Andrea Faulds
http://ajf.me/





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

Reply via email to