Callback/Callable类型
自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:可以将变量放置在双引号中的方式来代替将变量转换成字符串。
Callback/Callable类型的更多相关文章
- is_callable Callbacks / Callables What is a “callable”? 可调用 回调函数
PHP: Callback / Callable 类型 - Manual https://www.php.net/manual/zh/language.types.callable.php Callb ...
- 编程语言 - PHP
环境搭建 Window7+Apache24+PHP7. Apache24配置 LoadModule php7_module "D:/SoftWare/php-7.2.21-Win32-VC1 ...
- php基础复习
基础捡漏: 1.短标记<??> 通过修改ini文件的short_open_tag或编译时 --enable-short-tags 可用 不推荐使用. 2.?>默认有隐藏分号结束,而文 ...
- php值callback类型和匿名函数(闭包)
callback.callable类型 自PHP5.4起可以使用callable类型制定回调类型callback. 本文档基于同样理由使用callback类型信息. 一些函数如call_user_fu ...
- 类型 - PHP手册笔记
类型简介 PHP 支持 8 种原始数据类型. 四种标量类型: boolean(布尔型,不区分大小写) integer(整型) float(浮点型,也称作double) string(字符串) 两种复合 ...
- PHP之伪类型与变量
本文档中使用的伪类型与变量 伪类型(pseudo -types)是PHP文档里用于指示参数可以使用的类型和值, 请注意,它们不是PHP语言里原生类型, 所以不能把伪类型用于自定义函数里面的类型约束(t ...
- Callable接口、Runable接口、Future接口
1. Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理.Thread类.Runnable接口和Java内存管理模型使得多线 ...
- Callable与Future、FutureTask的学习 & ExecutorServer 与 CompletionService 学习 & Java异常处理-重要
Callable是Java里面与Runnable经常放在一起说的接口. Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务 ...
- Callable与Future的简单介绍
Callable与Future的介绍 Callable与 Future 两功能是Java在后续版本中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类 ...
- Callable 获取线程返回值
allable与 Future 两功能是Java在兴许版本号中为了适应多并法才增加的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它 ...
随机推荐
- MySQL 插入数据 数据重复 从另一个表导入数据
当使用MySQL插入数据时,我们可以根据需求选择合适的插入语句. 一.方法分类 二.具体方法 使用场景 作用 语句 注意 常规插入 忽略字段名 insert into 表名 values (值1, 值 ...
- ArcGIS工具 - 计算折点数量
在GIS中,点构成线,线构成面,面构成体,维度增加,模型也加复杂.有时,我们需要统计线面等要素到底由多少个点构成,系统工具没有此功能,为源地理提供了三种解决方案. 方法一 折点转点 使用要素折点转点工 ...
- 定时任务,LocalDateTime,在代码中调用其他项目的接口url
1.定时任务 1.在类上添加注解 @Component @Configuration @EnableScheduling 2.在类中方法上添加注解 @Scheduled(cron = "0 ...
- Mybatis数据库批量操作
1:新增 首先,Mysql插入一条记录返回主键对Mybatis版本要求低,而批量插入返回带主键的,需要升级到3.3.1 以及以上的版本. 1.1:Mysql 上图需要注意加入useGenerate ...
- liinux-目录、文件结构及相关命令
1.前期必备知识 1.命令提示符 [root@max001 ~]#:root表示用户信息,max001表示主机名称. [root@max001 ~]%:普通用户结尾是$符号. 2.命令格式规范(语法规 ...
- 【HMS Core】一张图片带你玩转机器学习服务
1.介绍 总览 Cloud DB(云数据库)是一款端云协同的数据库产品,提供端云数据的协同管理.统一的数据模型和丰富的数据管理API接口等能力.在保证数据的可用性.可靠性.一致性,以及安全等特性基础 ...
- SpringBoot+mybatis的驼峰命名转换不生效
使用SpringBoote+mybatis在mybatis-config.xml的配置文件内配置的驼峰命名不生效 然后我就将mybatis的配置写在application.yml内,然后就生效了 用注 ...
- Seleniumweb自动化测试01
1.selenium简介 selenium是python的一个web第三方包,主要使用来做web自动化测试的 环境要求: ①.要有谷歌浏览器 ②.下载谷歌浏览器的驱动chromedriver(驱动我们 ...
- Rpc-实现Zookeeper注册中心
1.前言 本文章是笔主在声哥的手写RPC框架的学习下,对注册中心的一个拓展.因为声哥某些部分没有保留拓展性,所以本文章的项目与声哥的工程有部分区别,核心内容在Curator的注册发现与注销,思想看准即 ...
- STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr
STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr 和 std::auto_ptr一样,std::unique_ptr也是一种智能指针,它也是通过指针的方式 ...