On Mon, Mar 16, 2015 at 8:53 PM, Yasuo Ohgaki <yohg...@ohgaki.net> wrote: > Hi all, > > I think this is important, but not many people realize the importance. > Therefore I created this as a new thread at the last minutes of vote. > > On Mon, Mar 16, 2015 at 2:49 PM, Dennis Birkholz <den...@birkholz.biz> > wrote: > >> Am 16.03.2015 um 06:28 schrieb Xinchen Hui: >> > lib.php >> > <?php >> > declare(strict_types = 1); >> > function add(int $a, int $b) { >> > } >> > >> > <?php >> > add($_GET['a'], $_GET['b']); >> > >> > 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. >> >> that is not right and has been discussed a thousand times over. >> The declare changes the rules only for function calls in the file it is >> declared in. >> >> so: >> lib.php: >> <?php >> declare(strict_types = 1); >> function foo(int $a) { >> // no function call here >> } >> ?> >> The declare here does just nothing. >> >> <?php >> require "lib.php"; >> foo("123"); // will work >> ?> >> >> <?php >> declare(strict_types = 1); >> require "lib.php"; >> foo("123"); // will give an error >> ?> >> >> > If this kind of behavior is allowed, why "strict mode" is called strict? > It's not > strict at all if mode could be overridden. > > "strict_mode" is just controlling errors, then it should be named as error > controlling directive and raise E_WARNING/E_TYPE or whatever. > > Even if what its controlling is error that can be overridden by caller, yet > calling it "strict_types" is not correct. Proper name would be something > like "raise_type_error". > > Let's see how it looks if "strict_types" is renamed to "raise_type_error" > > <?php > declare(raise_type_error = 1); > function foo(int $a) { > // no function call here > } > ?> > The declare here does just nothing. > > <?php > require "lib.php"; > foo("123"); // will work > ?> > > <?php > declare(raise_type_error = 1); > require "lib.php"; > foo("123"); // will give an error > ?> > > Is everyone feel OK with this?? > > There are other things I would like to mention, but this would be enough > to change decision hopefully. > > Regards, > > P.S. If we are going to introduce strict types for basic types, what we > really need is type affinity for inputs. e.g. $_GET/$_POST/$_COOKIE. > https://www.sqlite.org/datatype3.html > > -- > Yasuo Ohgaki > yohg...@ohgaki.net
Hello, this would make more sense than "strict types", which is a bad name anyways (as I already mentioned in some other email) - because the concept of non-week typing is usually called "strongly typed" in any other language I can think of. Does PHP have to be a special snowflake? Regards Pavel Kouril -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php