Yasuo Ohgaki wrote on 17.09.2015 00:10: > Hi all, > > PHP 7 has strict_types mode for function parameters/return values and > these are binded to certain type strictly. > https://wiki.php.net/rfc/scalar_type_hints_v5 > > Why not make strict_types mode more strict? > The idea is as follows: > > <?php > declare(strict_types=1); > > function foo(int &$i) { > $i = "string"; // Raise error > $i = function_returns_string(); // Raise error > $i = 1234.5678; // Raise error > $i = function_returns_float(); // Raise error > > $n = 123; > // do something > $n = array(); // Raise error > } > ?> > > Assigning different type to already initialized variable is a bug most > likely. There may be cases that variable should have several types, > e.g. return INT for success and FALSE for failure, but programmers can > use different variable or return value directly or make BOOL/NULL > exception. > > This is useful with reference especially. For example, > > <?php > declare(strict_types=1); > > function foo(int &$i) { > $i = 'string'; > } > > $i = 0; > foo($i); > var_dump($i); > ?> > > outputs > > string(6) "string" > > > > Just an idea. Any comments? > > -- > Yasuo Ohgaki > yohg...@ohgaki.net
Hey, I think there is a lot of code out there that changes types, but is not a bug, e.g.: $params = array('a', 'b'); $params = json_encode($params); So I would extend the declare parameters: declare(strict_types=1, strict_declare=1); function foo(int &$i) { $i = "string"; // Raise error ... Regards Thomas -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php