我的课程是通过作曲家自动加载的。
a.php只会
<?php
$b = new B;
echo $b->add(1.5, 2.5);
b.php
<?php declare(strict_types=1);
class B()
{
public function add(int $a, int $b):int
{
return $a + $b;
}
}
输出为3。
如果我将declare(strict_types=1);
添加到a.php
的顶部,那么我会收到错误消息。这意味着PHP会将float转换为整数,除非每个调用B->add()
的文件都有declare(strict_types=1);
。我不想在任何地方声明strict_types。这可能与a.php
的其余部分不相容。
我认为我应该做的是:如果declare(strict_types=1);
位于b.php
的顶部,那就是这样。然后,只要实例化B类,就会强制执行严格的输入。
有没有办法强制执行此操作?
所以我要强制执行的规则是:在实例化B的地方,add
应该只接受一个整数,并且调用者不应该进行任何转换。
如果尝试将float传递给需要整数的方法,任何普通语言都会导致错误。
package main
import "fmt"
func main() {
fmt.Println(add(1.5, 2.5))
}
func add(a int, b int) int {
return a + b
}
// Output
main.go:6: constant 1.5 truncated to integer
main.go:6: constant 2.5 truncated to integer