Hi Derick,

On Mon, Mar 16, 2015 at 8:18 PM, Derick Rethans <der...@php.net> wrote:

> On Mon, 16 Mar 2015, Xinchen Hui wrote:
>
> > On Mon, Mar 16, 2015 at 5:00 PM, Pierre Joye <pierre....@gmail.com>
> wrote:
> > >
> > > On Mar 16, 2015 4:29 PM, "Xinchen Hui" <larue...@php.net> wrote:
> > >>
> > >>      that means, I need to add a lots of (int) while I try to call a
> > >> function in a library which is not written by myself.
> > >>
> > >>      is that right?
> > >
> > > You got the answer but one thing bothers me a lot right now.
> > >
> > > How did you vote against this rfc while missing the core point of it
> (after
> > > actually having a strict mode)?
>
> > as I said,
> > "
> >  acutaly, I believe in most applications, they will still keep this off..
> >
> >   so why we introduce such thing?
> > "
> > I don't like strict_types at all..
>
> To be frank, I don't think "I don't like this" is a terribly good reason
> to vote against (or for something). What is important is how many people
> would actually benefit from a feature, without it causing issues for
> others. I am certainly no fan of the "declare" *syntax*, but I do know,
> from talking at conferences that many many developers would like to see
> scalar type hints in some way — both weak (mode 1 of the STHv5 RFC), and
> strict (mode 2). It even caters for people that don't want to use them
> at all, as they can simply not use them. I also know, that without a
> dual mode, it seems very unlikely for scalar type hints to make it
> into PHP 7, and I don't think that is what users want. As this is our
> *best* bet, I can only vote "yes".


Are you sure on your bet?

lib.php:
<?php
        declare(strict_types = 1);
        function foo(int $a) {
        // no function call here
        }
?>
The declare here does just nothing.

a.php:
<?php
        require "lib.php";
        foo("123"); // will work
?>

b.php:
<?php
        declare(strict_types = 1);
        require "lib.php";
        foo("123"); // will give an error
?>

This behavior is unacceptable.
Caller (a.php, b.php) must satisfy lib.php expectation to make lib.php
work as it should. Otherwise, all kinds of unexpected for lib.php and it's
users may happen.

Regards,

--
Yasuo Ohgaki
yohg...@ohgaki.net

Reply via email to