On Mon, 16 Mar 2015, Yasuo Ohgaki wrote: > 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?
The "bet" refered to having type hints at all, ever. > 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. Why? The foo() function's $a variable is going to be an int, or the function isn't called due to "strict" mode. There is no safety concern for the value of $a. > Caller (a.php, b.php) must satisfy lib.php expectation to make lib.php > 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 > happen. You're mistaken. There is *NO* difference in the body of the foo() function whether you have strict_types on (second example), or off (first example). cheers, Derick
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php