我在考虑消除PHP中所有自动类型转换。但是当我应用declare(strict_types=1)时,我担心这可能会与我的框架Laravel发生冲突。因此,我的问题是:即使Laravel没有将其所有PHP文件声明为strict,使用declare(strict_types=1)在我所有的PHP文件中仍然安全吗?
我在考虑消除PHP中所有自动类型转换。但是当我应用declare(strict_types=1)时,我担心这可能会与我的框架Laravel发生冲突。因此,我的问题是:即使Laravel没有将其所有PHP文件声明为strict,使用declare(strict_types=1)在我所有的PHP文件中仍然安全吗?
使用declare(strict_types=1)
仅影响带有函数声明的文件,而不影响定义。例如:
<?php
declare(strict_types=1);
function parseInt(int $value) {}
<?php
require 'foo.php';
parseInt('123');
如果您执行bar.php,它不会引发错误。如果您在foo.php中使用parseInt('123')
并执行该文件,则会引发错误。
只要您不触及Laravel源代码,就不会发生任何问题。