本文实例讲述了PHP类型约束用法。分享给大家供大家参考,具体如下:

在强类型语言中,类型约束是语法上的要求,即定义一个变量的时候,必须指定类型,并以后也只能存储该类型数据;

php是弱类型,其特点是无需为变量指定类型,而且在其后也可以存储任何类型,不过在php的新语法中,在某些特定场合,针对某些特定类型,也可进行语法约束。

特定场合:函数(方法)的形参变量

特定类型:对象类型(类名)、接口类型(接口名)、数组类型(array)、函数类型(callable)

即可以对函数(方法)的参数设定必须使用的类型。只能对对象、接口、数组和函数进行约束。

function f(类名 $p){}

// 要求参数只能使用该类的对象

function f(接口名 $p){}

// 要求该参数只能使用实现该接口的对象

function f(arrary $p){}

// 要求该参数只能使用数组

function f(callable $p)

// 要求该参数只能是一个函数(方法),此时称之为回调函数(方法)

class A{}

function f(A $p){}

$obj = new A();

f($obj);

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

php约束型,PHP类型约束用法示例相关推荐

  1. 【Flutter】Dart 泛型 ( 泛型类 | 泛型方法 | 特定类型约束的泛型 )

    文章目录 一.Dart 泛型类与泛型方法 二.Dart 泛型中的特定类型约束 三.Dart 自带泛型 四.完整代码示例 五. 相关资源 一.Dart 泛型类与泛型方法 泛型作用 : 为 类 , 接口 ...

  2. 数据库中数据类型和约束(整数类型、字符串、时间类型)

    数据库中的数据保存在数据表中,在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,比如:数据类型和约束. 数据类型和约束保证了表中数据的准确性和完整性 1. ...

  3. sql的外键约束和主键约束_SQL主键约束用示例解释

    sql的外键约束和主键约束 A primary key is a column or a set of columns that uniquely identifies each row in a t ...

  4. 论文浅尝 | 知识图谱问答中的层次类型约束主题实体识别

    Citation:Qiu, Y., Li, M., Wang, Y., Jia, Y., & Jin, X.(2018). Hierarchical Type Constrained Topi ...

  5. java反射用法示例_Java包| 类型,用法,示例

    java反射用法示例 配套 (Packages) Packages in Java is simply a mechanism to encapsulate (i.e. to put in a sho ...

  6. where 子句用于指定类型约束

    where 子句用于指定类型约束,这些约束可以作为泛型声明中定义的类型参数的变量.     1.接口约束.          例如,可以声明一个泛型类 MyGenericClass,这样,类型参数 T ...

  7. typescript 类型约束(:普通约束、接口约束、type约束)

    当类型被约束后,就拥有了约束类型的所有静态方法1.普通类型约束let a:string=xx2.指定类型和属性(1)指定对象let a:{属性1:string,属性2:string}=x 必须是一个对 ...

  8. 采用matlab编制含电气热的综合能源优化程序,采用yalmip和cplex求解,通过二阶锥模型实现相关约束限制

    电气热 综合能源 二阶锥 采用matlab编制含电气热的综合能源优化程序,采用yalmip和cplex求解,通过二阶锥模型实现相关约束限制,综合能源系统考虑39节点电网+6节点气网+热网模型,程序注释 ...

  9. TypeScript 高级类型及用法

    一.高级类型 交叉类型(&) 交叉类型是将多个类型合并为一个类型.这让我们可以把现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性. 语法:T & U 其返回类型既要符 ...

最新文章

  1. 什么是java多线程_什么是java多线程,java多线程的基本原理?
  2. 如何为linux 桌面文件内存,linux - 桌面Linux发行版中.desktop文件的功能是什么? - 堆栈内存溢出...
  3. 四旋翼姿态解算——梯度下降法理论推导
  4. 部署高可用的Lync Server 2013 Part 4 部署高可用的文件共享DFS
  5. 输入一个英文句子,翻转句子中单词的顺序 例如输入“I am a student.”,则输出“student. a am I”。
  6. exec su-exec_WildFly Kubernetes exec探针
  7. cnn生成图像显著图_基于CNN与图像前背景分离的显著目标检测
  8. npm报错core-js@2.6.12: core-js@<3 is no longer maintained and not recommended for usage due to the num
  9. sql server 新语法 收藏
  10. Hibernate重附(Reattach)和合并(Merge)操作的比较
  11. Diablo III 卡Checking for updates的问题解决
  12. html小票表格制作,菜单小票模板word
  13. CSS3实现360度循环旋转
  14. 上交所几大业务平台简介
  15. vue中使用$refs获取不到DOM元素
  16. python外国网站爬虫_Python3网络爬虫(一):利用urllib进行简单的网页抓取
  17. 赴美生子诚实签的五大谣言!!
  18. 二叉树的遍历-先序遍历、中序遍历、后序遍历
  19. IDEA自带接口测试工具(http client)
  20. 剖析Unreal Engine超真实人类的渲染技术Part 2 - 眼球渲染

热门文章

  1. HTML rel 属性
  2. 关于java中Scanner的next和nextLine
  3. mysql 5.6.23 源码包安装报错_大环境下MySQL5.6源码安装实战一步步教你 CentOS6.5_64bit下编译安装...
  4. 快搜浏览器_opera、Google、firefox三个浏览器的选择
  5. 【2012百度之星/初赛下】A:度度熊就是要刷排名第一
  6. pycharm在401跑程序需要每个py文件加一句
  7. GROUP BY 和 ORDER BY 同时使用问题
  8. [转] 使用Docker容器,这些错误千万别犯
  9. iOS Xcode全面剖析
  10. 1595 hdu find the longest of the shortest