On Sun, 14 Sep 2014, Andrea Faulds wrote:

> 
> On 14 Sep 2014, at 13:17, Zeev Suraski <z...@zend.com> wrote:
> 
> > I honestly don't see why we can't be consistent for the simple 
> > types, or at least strive to be as consistent as possible as opposed 
> > to introducing a complete parallel universe for userland functions, 
> > that's inconsistent with the entirety of the rest of PHP.  We don't 
> > have to be consistent with ALL internal functions, which obviously 
> > have the option of doing custom checks and return failures not only 
> > if you fail to, say, pass on a string - but also if that string is 
> > not of a special format.  But then, you have the option of doing 
> > that also in userland functions using custom code. The question is 
> > not the customized cases - it's the standard behavioral cases - 
> > comparing zpp rules for scalars and the newly-introduced rules for 
> > userland scalars.
> 
> OK, we could go for exactly what zpp does already. However, then we 
> don’t have a compromise. We are siding with what you want, but most 
> userland developers would prefer a strict system. While this would 
> please you and perhaps some other folk on internals, and sure, it’d be 
> consistent, it would not be popular with the wider PHP community. 
> Similarly, we could go for a fully strict approach, which might please 
> some userland developers, but wouldn’t please you.
> 
> I don’t want to go down this route. I’d prefer we compromise and keep 
> PHP’s weakly-typed nature (an int can be accepted as a float or a 
> string), but make it stricter (no data loss), thus arriving at a 
> middle way.

But this "compromise" introduces yet another set of casting rules. And 
that is why will advocate and vote against this.

We can either have casting where:

        function bar(int $foo) { }
        bar("42");

Means the same as:

        function bar($foo) { }
        bar((int) "42");

Or we can have it as a strict cast, or we can have it like it currently 
(ie, not at all). I can live with those three options, but not an 
option where casting/checking does something different again.

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

Reply via email to