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的类都是可被其它 ...
随机推荐
- 基于百度智能云的OCR接口进行图文识别
由于一些客户的内部系统需要提取一些记录信息,如果手工录入会变得比较麻烦,因此考虑使用百度云的OCR进行图片文字的提取处理,综合比较了一下开源免费的Tesseract 类库进行处理,不过识别效果不太理想 ...
- Python解释器下载与安装
Python解释器下载与安装 一.Python解释器 1.Python的发展方向 web方向,自动化运维,自动化测试,自动化办公,网络爬虫,金融量化,人工智能,机器学习,数据分析 2.Python解释 ...
- Python TensorFlow深度神经网络回归:keras.Sequential
本文介绍基于Python语言中TensorFlow的Keras接口,实现深度神经网络回归的方法. 目录 1 写在前面 2 代码分解介绍 2.1 准备工作 2.2 参数配置 2.3 数据导入与数据划 ...
- Linux环境下:程序的链接, 装载和库[ELF文件详解]
编译过程拆解 预处理处理生成.i文件, .i文件还是源码文件 将所有的宏定义#define展开. 处理#if, #else, #endif等条件编译指令 处理#include, 原地插入文件 cpp ...
- Kubernetes(k8s)控制器(二):DaemonSet
目录 一.系统环境 二.前言 三.DaemonSet 概览 四.创建DaemonSet 4.1 创建daemonset 让其在k8s集群所有worker节点运行pod 4.2 创建daemonset让 ...
- Linux实时同步
实时同步 一.概述 背景: 以前,通过rsync+定时任务实现对文件的定时备份/同步 现在,对于NFS来说,需要进行实时同步 选择: 分布式存储 使用实时同步服务+NFS 选择公有云对象存储OSS,七 ...
- 基于APIView写接口
一.视图层代码 """ 基于APIView实现接口的编写 用的是同一个模型表 路由也没变 这次做了解耦合 写了序列化类 与视图类分开了 """ ...
- ES6块级作用域let声明和const声明以及与var之间的区别
一.ES6块级作用域 let 声明 块级声明用于声明在指定作用域之外无法访问的变量,存在于: ①函数内部 ②块内(字符{和}之间的区域) 禁止重声明 (1)如果在作用域由已经存在某个标识,再用let声 ...
- 破解练习-CRACKME001
001-注册算法分析 一.工具和调试环境 动态调试工具:x64dbg 系统环境:win10 1909 二.分析Serial/name的算法 由于Serial里面就是一个字符串比较,没有啥算法,这里就不 ...
- OpenMP Sections Construct 实现原理以及源码分析
OpenMP Sections Construct 实现原理以及源码分析 前言 在本篇文章当中主要给大家介绍 OpenMP 当中主要给大家介绍 OpenMP 当中 sections construct ...