Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:85045 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 4725 invoked from network); 16 Mar 2015 12:32:51 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 16 Mar 2015 12:32:51 -0000 Authentication-Results: pb1.pair.com smtp.mail=derick@php.net; spf=unknown; sender-id=unknown Authentication-Results: pb1.pair.com header.from=derick@php.net; sender-id=unknown Received-SPF: unknown (pb1.pair.com: domain php.net does not designate 82.113.146.227 as permitted sender) X-PHP-List-Original-Sender: derick@php.net X-Host-Fingerprint: 82.113.146.227 xdebug.org Linux 2.6 Received: from [82.113.146.227] ([82.113.146.227:47792] helo=xdebug.org) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 44/37-03331-37DC6055 for ; Mon, 16 Mar 2015 07:32:51 -0500 Received: from localhost (localhost [IPv6:::1]) by xdebug.org (Postfix) with ESMTPS id 77B13E202F; Mon, 16 Mar 2015 12:32:47 +0000 (GMT) Date: Mon, 16 Mar 2015 12:32:47 +0000 (GMT) X-X-Sender: derick@whisky.home.derickrethans.nl To: Yasuo Ohgaki cc: Xinchen Hui , Pierre Joye , PHP internals In-Reply-To: Message-ID: References: User-Agent: Alpine 2.11 (DEB 23 2013-08-11) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323329-1153278891-1426509167=:4205" Subject: Re: [PHP-DEV] About declare(strict_types = 1) From: derick@php.net (Derick Rethans) --8323329-1153278891-1426509167=:4205 Content-Type: TEXT/PLAIN; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE On Mon, 16 Mar 2015, Yasuo Ohgaki wrote: > On Mon, Mar 16, 2015 at 8:18 PM, Derick Rethans wrote: >=20 > > On Mon, 16 Mar 2015, Xinchen Hui wrote: > > > > > On Mon, Mar 16, 2015 at 5:00 PM, Pierre Joye w= rote: > > > > > > > > On Mar 16, 2015 4:29 PM, "Xinchen Hui" 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=20 > > > > of it (after actually having a strict mode)? > > > > > as I said, > > > " > > > acutaly, I believe in most applications, they will still keep this o= ff.. > > > 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 reaso= n > > to vote against (or for something). What is important is how many peopl= e > > 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 =E2=80=94 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". >=20 >=20 > Are you sure on your bet? The "bet" refered to having type hints at all, ever. > lib.php: > declare(strict_types =3D 1); > function foo(int $a) { > // no function call here > } > ?> > The declare here does just nothing. >=20 > a.php: > require "lib.php"; > foo("123"); // will work > ?> >=20 > b.php: > declare(strict_types =3D 1); > require "lib.php"; > foo("123"); // will give an error > ?> >=20 > This behavior is unacceptable. Why? The foo() function's $a variable is going to be an int, or the=20 function isn't called due to "strict" mode. There is no safety concern=20 for the value of $a. > Caller (a.php, b.php) must satisfy lib.php expectation to make lib.php=20 > work as it should. And it does - the result in foo() is the same. > Otherwise, all kinds of unexpected for lib.php and it's users may=20 > happen. You're mistaken. There is *NO* difference in the body of the foo()=20 function whether you have strict_types on (second example), or off=20 (first example). cheers, Derick --8323329-1153278891-1426509167=:4205--