PHP中声明严格模式与Laravel等框架一起使用安全吗?

5

我在考虑消除PHP中所有自动类型转换。但是当我应用declare(strict_types=1)时,我担心这可能会与我的框架Laravel发生冲突。因此,我的问题是:即使Laravel没有将其所有PHP文件声明为strict,使用declare(strict_types=1)在我所有的PHP文件中仍然安全吗?


你的意思是“安全”,对吧?严格模式只会在你声明它的文件中起作用,因此不会与 Laravel 文件冲突。 - Oen44
例如,我声明了一个带有字符串输入的函数。输入来自Laravel,结果可能是false或字符串。如果Laravel突然给我false而不是字符串,那么我的代码就会出现错误。(现在保存是安全的 :) ) - Harry
我现在明白,由于声明带有类型提示的函数和声明 strict_types 所引发的任何错误都会在本地而不仅仅是在生产环境中出现。因此,及时处理这种错误是一件好事。 - Harry
1个回答

13

使用declare(strict_types=1)仅影响带有函数声明的文件,而不影响定义。例如:

foo.php

<?php
    declare(strict_types=1);
    function parseInt(int $value) {}

bar.php

<?php
    require 'foo.php';
    parseInt('123');

如果您执行bar.php,它不会引发错误。如果您在foo.php中使用parseInt('123')并执行该文件,则会引发错误。

只要您不触及Laravel源代码,就不会发生任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接