类型转换功能参数

Kao*_*Kao 4 php casting function

在输入函数之前,我想检查参数匹配的类型。

function ((int) $integer, (string) $string ) { /*...*/ }
Run Code Online (Sandbox Code Playgroud)

相对于

function ( $int, $string ) {
    $string = (string) $string;
    $int = (int) $int;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?我也推测这样做是作为对象

function ( Integer $int ) { /*...*/ }
Run Code Online (Sandbox Code Playgroud)

通过这样做,我可以发送一个,functionName ( new Integer ( $int ));但我希望没有添加的语法。

rai*_*7ow 7

您当然可以对复杂类型(数组、接口和对象)使用所谓的类型提示——但不能用于原始类型(而且,令我有点惊讶的是,还有特征):

类型提示不能用于标量类型,例如 int 或 string。特征也是不允许的。

虽然有很多建议将标量类型提示添加到 PHP(甚至还有一个非正式的补丁),但这并不容易。我建议查看这篇文章,因为它很好地总结了不同方法的潜在缺陷。

PS 顺便说一句,看起来 PHP 5.5可能会使用“check-and-cast”类型提示。不是说我很惊讶......


Tom*_*ler 6

从PHP 7开始,现在可以在类型提示时使用Scalar类型(int,float,string和bool)。

function (int $int) { /*...*/ }
function (float $float) { /*...*/ }
function (string $string) { /*...*/ }
function (bool $bool) { /*...*/ }
Run Code Online (Sandbox Code Playgroud)

就OP的问题而言,PHP仅支持对象,接口和类型的类型提示array,但是现在可以执行问题本身提出的建议。