Re: [RFC] Scalar Type Hinting With Casts (re-opening)
| From: | Andrea Faulds | Date: | Mon, 14 Jul 2014 13:28:51 +0000 |
| Subject: | Re: [RFC] Scalar Type Hinting With Casts (re-opening) | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-75449@lists.php.net to get a copy of this message | ||
On 14 Jul 2014, at 14:12, Alexey Zakhlestin <indeyets@gmail.com> wrote:
> I don’t think that "scalar casts” should do any additional error-catching. they target
> a very different usecase.
> It shouldn’t guarantee correctness of the whole program. It should guarantee that variable
> types are fixed inside of function.
That is exactly what is being proposed though. People (including Anthony himself, along with other
proposals) have previously suggested type hints which just casted. However, I don’t think this is
terribly useful. You can already do that really easily (
$foo = (int)$foo;), and it’s
too lenient; the non-scalar type hints are useful because they validate your types, and the scalar
ones, while casting, should validate to a degree.
> In my opinion, this patch should act 100% similar to zpp.
> And if, at some later point zpp-behaviour changes similar change should happen to userland
> "scalar casts”
Keeping close to zpp would be nice, but zpp’s behaviour isn’t always the most sensible and
useful one, but we should try to keep somewhat close to it.
> Some people talk about inconsistency, which is introduced by reusing same syntax for
> "strict parameter types" and "scalar parameter casts”. There’s some truth there.
> Let’s use different syntax.
>
> This might work:
>
> function foo((int) $a)
> {
> var_dump($a);
> }
>
> I would read it as declaration-level casting
That has already been proposed. That is not this proposal. I’d suggest you read back in this
thread; I’ve previously explained my issues with just casting with no validation, pure strict type
hints, why it’s fine to reüse the syntax, and linked to Nikita Popov’s blog post on the
subject.
--
Andrea Faulds
http://ajf.me/