PHP指出参数范例
指定参数范例为 class 范例的实譬喻下:
<?php class C{} class D extends C{} //类D担任自类C class E{} functionf(C $c){ echo get_class($c)."n"; } f(new C); f(new D); f(new E); ?> 执行以上措施的功效是:C D Fatal error: Uncaught TypeError: Argument 1 passed to f() must be an instance of C, instance of E given, called in /Library/WebServer/Documents/book/str.php on line 293 and defined in /Library/WebServer/Documents/book/str.php:287 Stack trace: #0 /Library/WebServer/Documents/book/str.php(293): f(Object(E)) #1 {main} thrown in /Library/WebServer/Documents/book/str.php on line 287 范例转换 默认环境下,当转达的参数不是函数指定的参数范例时,PHP 会实行将所传参数转换成指定参数范例。譬喻,一个函数但愿获得一个字符串范例的参数,但若是给其提供的是一个整型参数,PHP 就会自动将其转换成字符串范例,可能一个函数但愿获得一个整型参数,但却给它转达了一个浮点型的参数。 示譬喻下:
<?php function test(int $a, string $b, string $c){ echo ($a + $b); echo " the string is $c"; } test(3.8,2,'hello'); ?> 执行以上代码的打印功效为:5 the string is hello 留意,在将浮点型转成整型时,只取个中的整数部门。 严酷模式 在 PHP 7 中,可以行使declare(strict_types=1)配置严酷模式,这样只有在转达的参数与函数祈望获得的参数范例同等时才气正确执行,不然会抛堕落误。只有一种环境破例,就是当函数祈望获得的是一个浮点型数据而提供的是整型时,函数也能正常被挪用。(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |