Re: About declare(strict_types = 1)
| From: | Xinchen Hui | Date: | Mon, 16 Mar 2015 11:39:41 +0000 |
| Subject: | Re: About declare(strict_types = 1) | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-85029@lists.php.net to get a copy of this message | ||
Hey:
On Mon, Mar 16, 2015 at 7:33 PM, Yasuo Ohgaki <yohgaki@ohgaki.net> wrote:
> Hi Derick,
>
> On Mon, Mar 16, 2015 at 8:18 PM, Derick Rethans <derick@php.net> wrote:
>>
>> On Mon, 16 Mar 2015, Xinchen Hui wrote:
>>
>> > On Mon, Mar 16, 2015 at 5:00 PM, Pierre Joye <pierre.php@gmail.com>
>> > wrote:
>> > >
>> > > On Mar 16, 2015 4:29 PM, "Xinchen Hui" <laruence@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
> yohgaki@ohgaki.net
And last comment, if there no such declare thing, I will definitely
vote yes to this RFC.
that's why I want vote no for this, and wait for Bob's Basic STH.
thanks
>
--
Xinchen Hui
@Laruence
http://www.laruence.com/