自PHP5.4起可用callable类型指定回调类型callback。

一些函数如call_user_func()或usort()可以接受用户自定义的回调函数作为参数。回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法。

传递

PHP是将函数以string形式传递的。可以使用任何内置或用户自定义函数,但除了语言结构例如:array(),echo,empty(),eval(),exit(),isset(),list(),print或unset()。

一个已实例化的object的方法被作为array传递,下标0包含该object,下标1包含方法名。在同一个类里可以访问protected和private方法。

静态类方法也可不经实例化该类的对象而传递,只要在下标0中包含类名而不是对象。自PHP5.2.3起,也可以传递‘ClassName::methodName’。

除了普通的用户自定义函数外,也可传递匿名函数给回调参数。

Note:

在函数中注册有多个回调内容是时(如使用call_user_func()与call_user_func_array()),如在前一个回调中有未捕获的异常,其后的将不再被调用。

伪类型与变量

伪类型是PHP文档里用于指示参数可以使用的类型和值。请注意,它们不是PHP语言里原生类型。所以不能把伪类型用于自定义函数里的类型约束。

mixed

mixed说明一个参数可以接受多种不同的(但不一定是所有的)类型。

例如gettype()可以接受所有的PHP类型,str_replace()可以接受字符串和数组。

number

number说明一个参数可以是integer或者float。

callback

在PHP5.4引入callable类型之前使用了callback伪类型。二者含义完全相同。

array|object

array|object意思是参数既可以是array也可以是object。

void

void作为返回类型意味着函数的返回值是无用的。void作为参数列表意味着函数不接受任何参数。

...

在函数原型中,$...表示等等的意思。当一个函数可以接受任意个参数时使用此变量名。

类型转换的判别

PHP在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如果把一个string值赋给变量$var,$var就成了一个string。如果又把一个integer赋给$var,那它就成了一个integer。

PHP的自动类型转换的一个例子是乘法运算符“*”。如果任何一个操作数是float,则所有的操作数都被当成float,结果也是float。否则操作数会被解释为integer,结果也是integer。注意这并没有改变这些操作数本身的类型;改变的仅是这些操作数如何被求值以及表达式本身的类型。

Note:自动转换为数组的行为目前没有定义。

类型强制转换

PHP中的类型强制转换和C中的非常像:在要转换的变量之前加上用括号括起来的目标类型。

允许的强制转换有:

  • (int),(integer)-转换为整型integer
  • (bool),(boolean)-转换为布尔类型boolean
  • (float),(double),(real)-转换为浮点型float
  • (string)-转换为字符串string
  • (array)-转换为数组array
  • (object)-转换为对象object
  • (unset)-转换为NULL(PHP5)

(binary)转换和b前缀转换支持为PHP5.2.1新增。

注意在括号内允许有空格和制表符。

Note:可以将变量放置在双引号中的方式来代替将变量转换成字符串。

最新文章

  1. 【Hibernate框架】关联映射(一对多,多对一)
  2. 【DP】HIHO 1078
  3. 批处理集锦——(4)2>nul和1>nul是什么意思?
  4. Android接收系统广播
  5. ACdream OJ 1099 瑶瑶的第K大 --分治+IO优化
  6. [Effective JavaScript 笔记] 第8条:尽量少用全局对象
  7. PHP实现前台同步显示后台任务进度
  8. Python介绍、环境搭建(Eclipse插件)、第一个程序
  9. angularjs自定义日期过滤器,如:周日(前天 21:24)
  10. 在DLL中封装的VCL窗体Tab键响应的问题
  11. css布局理解
  12. geotrellis使用(三十三)关于Geotrellis读取Geotiff的两个细节
  13. python分布式环境下的限流器
  14. 《java入门第一季》之面向对象多态面试题(多态收尾)
  15. async await详解
  16. AngularJS DI(依赖注入)实现推测
  17. Hive,HANA可视化客户端工具
  18. 快速搭建一个Express工程骨架
  19. Java编辑PPT的柱状图,与内嵌的Excel联动
  20. 微服务(Microservices)

热门文章

  1. VS针对Linux远程调试步骤
  2. Docker修改已有容器的端口映射
  3. pdf转图片加水印压缩
  4. SnowFlake 雪花算法详解与实现 & MP中的应用
  5. vue+.net入门级书签项目
  6. 跟着廖雪峰学python 005
  7. DELLR740服务器安装centos7.9操作系统时发现无法检测到硬盘
  8. ctf 菜鸟杯
  9. C#计时器 Stopwatch 使用demo
  10. .net 移动mas短信接口开发