Andrea Faulds wrote:

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

To me it makes sense.  However

  Foo function foo(Bar bar) {}

also makes sense, as the type of bar would be "Foo function(Bar)".

-- 
Christoph M. Becker


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

Reply via email to