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

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to