PHP中的类型提示(type hinting)功能介绍_php实例

概述

从PHP5开始,我们可以使用类型提示来指定定义函数时,函数接收的参数类型。如果在定义函数时,指定了参数的类型,那么当我们调用函数时,如果实参的类型与指定的类型不符,那么PHP会产生一个致命级别的错误(Catchable fatal error)。

类名称和数组

在定义函数时,PHP只支持两种类型声明:类名称和数组。类名称表名该参数接收的实参为对应类实例化的对象,数组表明接收的实参为数组类型。下面是一个例子:

复制代码 代码如下:

function demo(array $options){
  var_dump($options);
}

在定义demo()函数的时候,指定了函数接收的参数类型为数组。如果我们调用函数时,传入的参数不是数组类型,例如像下面这样的调用:

复制代码 代码如下:

$options='options';
demo($options);

那么将产生以下错误:

复制代码 代码如下:

Catchable fatal error: Argument 1 passed to demo() must be of the type array, string given,

可以使用null作为默认参数

注意

有一点需要特别注意的是,PHP只支持两种类型的类型声明,其他任何标量类型的声明都是不支持的,比如下下面的代码都将产生错误:

复制代码 代码如下:

function demo(string $str){
}
$str="hello";
demo($str)

当我们运行上面的代码时,string会被当做类名称对待,因此会报下面的错误:
Catchable fatal error: Argument 1 passed to demo() must be an instance of string, string given,

总结

类型声明也是PHP面向对象的一个进步吧,尤其是在捕获某种指定类型的异常时非常有用。
使用类型声明,也可以增加代码的可读性。
但是,由于PHP是弱类型的语言,使用类型声明又于PHP设计的初衷相悖。
到底使用还是不使用类型声明,大家见仁见智吧,本菜鸟不:).

时间: 2024-11-21 04:19:01

PHP中的类型提示(type hinting)功能介绍_php实例的相关文章

PHP中的类型提示(type hinting)功能介绍

  这篇文章主要介绍了PHP中的类型提示(type hinting)功能介绍,本文讲解了类型提示的作用和使用方法以及使用示例,需要的朋友可以参考下 概述 从PHP5开始,我们可以使用类型提示来指定定义函数时,函数接收的参数类型.如果在定义函数时,指定了参数的类型,那么当我们调用函数时,如果实参的类型与指定的类型不符,那么PHP会产生一个致命级别的错误(Catchable fatal error). 类名称和数组 在定义函数时,PHP只支持两种类型声明:类名称和数组.类名称表名该参数接收的实参为对

PHP面向对象之后期静态绑定功能介绍_php实例

本文将对PHP后期静态绑定功能进行介绍,它主要用于解决在继承范围内引用静态调用的类. 首先来看下面这个例子: 复制代码 代码如下: class Person {       public static function status()     {         self::getStatus();     }       protected static function getStatus()     {         echo "Person is alive";     }

Word2010中怎样使用提示更新样式功能

  提示更新样式是指在Word2013文档中,当用户对应用了某种样式的文字内容修改格式后,重新将该样式应用到做出格式修改的文字内容时出现提示,提示用户可以基于最近的更改更新样式,或者重新应用该样式的格式,如图1所示. 图1 "修改样式"对话框 用户可以根据需要启用或取消"提示更新样式"功能,操作步骤如下所述: 第1步,打开Word2013文档窗口,依次单击"文件"→"选项"命令,如图2所示. 图2 选择"选项&quo

浅谈PHP与C#的值类型指向区别的详解_php实例

PH和C#的值拷贝区别(如果哪里说的不对,还望指出!)$a = 2;$b = $a;  //在php中这里把b的地址指向a 所以b此时也等于2:区别就在这$a = 5; //这时php中a的值又重新写值,所以php核心这时才会把b重新分配一个地址,然后把a原先的值进行拷贝.这就是 写时拷贝 原理 , 也就是说,除非进行写操作,否则值类型就是指向一个地址.而C#中.值类型的复制.永远都是新建一个地址 如:int a = 2;int b = a;  //此时不管有没有进行a的二次写入..NET都会把

PHP中Restful api 错误提示返回值实现思路_php实例

RESTful架构是一种流行的互联网软件架构,它结构清晰,符合标准,易于理解,扩展方便. REST是Representational State Transfer的缩写,翻译为"表现层状态转化".表现层其实就是资源,因此可以理解为"资源状态转化". 网络应用上的任何实体都可以看作是一种资源,通过一个URI(统一资源定位符)指向它. 序言 不管是微博还是淘宝,他们都有自己的错误返回值格式规范,以及错误代码说明,这样不但手机端用起来方便,给人的感觉也清晰明了,高大上.遇

PHP中的类型约束介绍_php实例

PHP的类方法和函数中可实现类型约束,但参数只能指定类.数组.接口.callable 四种类型,参数可默认为NULL,PHP并不能约束标量类型或其它类型. 如下示例: 复制代码 代码如下: <?php   class Test {     public function test_array(array $arr)     {         print_r($arr);     }       public function test_class(Test1 $test1 = null)   

详解WordPress中提醒安装插件以及隐藏插件的功能实现_php实例

提醒用户当前主题需要的插件很多主题都需要一些插件的支持,这时你就需要提醒用户需要安装的插件,本文将教你,怎么在后台显眼的位置提醒用户当前主题要安装的插件. 最终的效果类似下图: 只需要用 admin_notices 钩子,在后台标题下边输出一个警告框,再用 is_plugin_active() 函数判断插件是否启用即可. /** *WordPress 提醒用户当前主题需要的插件 *http://www.endskin.com/plugins-messages/ */ function Bing_

Smarty中的注释和截断功能介绍_php模板

注释 复制代码 代码如下: {* 这是一个单行Smarty注释 来自于jb51.net,网页源代码里看不见*} {* 这是一个多行    Smarty注释    并不发送到浏览器 *} 模板注释由星号包围,继而由分隔符包围,型如:{* 这是一个注释 *}.Smarty注释不会在最终模板的输出中显示,这点和不同.前者对于在模板中插入内部注释有用,因为没有人能看到.;-) http://www.itlearner.com/code/smarty_cn/language.basic.syntax.ht

extjs4中Ext.resizer.Resizer 大小变更功能介绍

如下:  代码如下 复制代码 [Js] Ext.onReady(function () {     var basic = Ext.create('Ext.resizer.Resizer', {         target: 'basic',         pinned: true,               //是否显示调节边框         width: 200,         height: 100,         minWidth: 100,         minHeigh