今天偶然看php 5.3中的一个特性,叫type hinting(类型提示?),感觉怪怪的,看了下,
大概如下,比如有个类:

class Customer {
...
}

class Order {
   public function myfunc($c)
   {
...
   }
}

$o = new Order();
$o->myfunc(xxxxx);

如果myfunc中没规定参数的类型,则可以传不同类型的参数进去,为了规范,假设要传入的是只能customer类的实例,可以这样:
class Customer {
...
}

class Order {
   public function myfunc(Customer $c)
   {
...
   }
}
  现在myfunc只能接收Customer类的实例,如果传进去的不是,则报FATAL错了

再看一个例子:


class Type_hint{
function hint_method(array $arr){
print_r($arr);echo "<br/>";
}
}
class Type_hint_new
{
function hint_object(Type_hint $obj){  // Here, If I didn’t pass in an Type_hint object to hint_object(), a FATAL_ERROR was occured.
//echo $obj->hint_method(); // Fatal Error: Argument must be an array
echo $obj->hint_method(array('P','H','P')); //First parameter must be an object of Type_hint class
}
function hint_null($obj = NULL) {
echo "Allow NULL";
}
}
$obj=new type_hint();
$obj_new = new Type_hint_new();
$obj->hint_method(array('b','h','u','m','i'));
$obj_new->hint_object($obj);
$obj_new->hint_null(NULL);

输出:
Array ( [0] => b [1] => h [2] => u [3] => m [4] => i )
Array ( [0] => P [1] => H [2] => P )
Allow NULL

而E_RECOVERABLE_ERROR 这个PHP.INI开关可以设置这个东西

php 5.3中的一个type hinting的用法相关推荐

  1. php 类型提示,PHP中的类型提示(type hinting)功能介绍

    PHP中的类型提示(type hinting)功能介绍 这篇文章主要介绍了PHP中的类型提示(type hinting)功能介绍,本文讲解了类型提示的作用和使用方法以及使用示例,需要的朋友可以参考下 ...

  2. 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法

    结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...

  3. iOS9中如何在日历App中创建一个任意时间之前开始的提醒(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道如果想在iOS中自带的日历App中创建闹铃开始的时间, ...

  4. SAP WM中阶Storage Type的Capacity Check – Check based on maximum quantity per bin in storage type.

    SAP WM中阶Storage Type的Capacity Check – Check based on maximum quantity per bin in storage type. 1, St ...

  5. SAP WM中阶Storage Type的Capacity Check – Check based on palletization according to SUT 1

    SAP WM中阶Storage Type的Capacity Check – Check based on palletization  according to SUT 1 SAP WM模块里,可以根 ...

  6. datagridview java_仅更新datagridview中的一个单元格

    我正在编写一个Watch Window,它从 Serial Port 获取数据,并在 DataGridView 中显示变量info / value . 我有一个 Timer Event ,每隔500毫 ...

  7. 基类和派生类写在一个文件中_BootISO:从 ISO 文件中创建一个可启动的 USB 设备...

    今天,我们将讨论名为 BootISO 的实用程序类似工具.它是一个简单的 bash 脚本,允许用户来从 ISO 文件中创建一个可启动的 USB 设备. -- Prakash Subramanian(作 ...

  8. 是否可以在Gradle中声明一个可用于Java的变量?

    本文翻译自:Is it possible to declare a variable in Gradle usable in Java? Is it possible to declare a var ...

  9. 如何在Java中创建一个新的List

    本文翻译自:How to make a new List in Java We create a Set as: 我们创建一个Set为: Set myset = new HashSet() How d ...

最新文章

  1. CF650C Table Compression
  2. java三大集合_java中三大集合框架
  3. vim在系统剪切板的复制与粘贴
  4. fastjson对json操作
  5. UNITY3D单词学习 speed和velocity的区别
  6. YbtOJ#20070-[NOIP2020模拟赛B组Day5]诗人小K【状压dp】
  7. 作为 IT 行业的过来人,你有什么话想对后辈说的?2
  8. arm linux串口控制led,通信程序设计 - Linux下ARM和单片机的串口通信设计
  9. prefuse学习(一)用非数据库连接和xml的方式读入数据
  10. html权重值_史上最全的web前端面试题汇总及答案HtmlCss(二)
  11. IntelliJ IDEA 12 与 Tomcat7 配置
  12. 打开终端报错:bash: /某路径/bashrc: No such file or directory
  13. kprobe原理解析(一)
  14. ASP.NET MVC Framework体验(4):控制器
  15. 尚学堂马士兵_Struts2下载完成
  16. android绘制正态分布曲线,Excel表格中如何制作正态分布图和正态曲线模板
  17. C++ STL使用实例
  18. get和post详解
  19. C++11之正则表达式(regex_match、regex_search、regex_replace)
  20. IDEA搜索关键字的快捷键

热门文章

  1. Java编程思想总结篇(1-11章学习笔记)——第五章
  2. 100.[leetcode]same-tree
  3. 瑞星linux u盘引导盘杀毒教程,制作启动型杀毒U盘的详细教程
  4. Oracle中的子查询
  5. android 手机usb 驱动安装
  6. 动态视频目标检测和跟踪技术
  7. HTML中图片的蒙胧效果!
  8. 水の三角(超级卡特兰数/大施罗德数)
  9. 8051单片机基础1:8051的起源
  10. 耳塞检测_曾经很烂的无线耳塞,但它们现在很不错