文档章节

PHP参数类型限制

Corwien
 Corwien
发布于 2016/04/16 11:27
字数 409
阅读 683
收藏 1
点赞 1
评论 0

PHP如同其他语言(OC,Java),也引入了参数类型的检查,不过,PHP只有数组和对象两种限定类型,诸如string、integer这样的限定类型是没有的。参数类型限制,这个不论是接口,抽象类,函数,方法,在5.3+以上版本都可以使用,不过目前只能声明 array object 这两种.

这样做的好处:

①:可以协调编码,至少我不用看注释或代码,就知道该传个怎样的参数进去。

②:对传入的对象使用类型声明,可不需要在函数内使用 is_a 函数鉴别传入对象是否合法而把甄别工作交予编译器完成

is_a --  如果对象属于该类或该类是此对象的父类则返回 TRUE 

class User{ 
    public $name; 
    public $password; 
    function __construct($name,$password){ 
        $this->name=$name; 
        $this->password=$password; 
    } 
}
//参数可以指定对象类型
function f1(User $user){ 
    echo $user->name,”,”,$user->password; 
}
//参数可以指定数组类型
function f2(array $arr){}
//参数不可以指定基本类型,下面一句会出错
function f3(string $s){}


好的,接下来进行验证:

当给f1()函数传入字符串时,会报错:

 $a = 'xiaojun';

 $ret = f1($a);

错误:

PHP Catchable fatal error: Argument 1 passed to f1() must be an instance of User, string given, called in /tmp/f921205b-ef87-4aa8-b715-a131af661abd/code on line 16 and defined in /tmp/f921205b-ef87-4aa8-b715-a131af661abd/code on line 11

错误描述的很清楚,必须给函数传递一个User的实例化对象。

这样才是正确的:

// 实例化对象,并初始化
$user_obj = new User("kaiyi", '123456');
$ret = f1($user_obj);



© 著作权归作者所有

共有 人打赏支持
Corwien
粉丝 26
博文 144
码字总数 115164
作品 0
广州
程序员
Xdebug 配置(Xdebug安装配置)

Xdebug配置 使用Xdebug调试和优化PHP程序系列教程之Xdebug配置,根据Xdebug的官方文档来详细解释Xdebug的参数配置。 第一部分:安装 预编译模块 安装预编译模块是很容易的。只需要将它们放到...

龙上 ⋅ 2012/02/27 ⋅ 1

PHP 7 改变的不单单是代码, 更多是思想.

这里面有四点知识. 基本上包涵了类型变更的所有知识. 1: 参数可以支持类型, 如string, int, float.... 等, php的类型再也不是浮云般存在了, 翻翻手册中的类型章节看看吧. 2: ... 可变参数数量...

Tuesday ⋅ 2016/10/29 ⋅ 0

php及xdebug使用小结

php下搭配使用xdebug是十分好的组合,用于php的调试工作,下面分别介绍之: 1 WINDOWS下的安装 下载站点http://www.xdebug.org/ 要确定使用一个跟你的PHP配合的版本才行,比如xdebug中的5。2...

jackjie2010 ⋅ 2012/06/20 ⋅ 0

Xdebug的安装

xdebug是一个开源的php调试器,以php模块的形式加载并被使用。可以用来跟踪,调试和分析PHP程序的运行状况. 这里以PHP5.2.13为例, 1.下载php_xdebug-2.1.0-5.2.dll文件, http://www.xdebug.o...

龙鸟 ⋅ 2012/12/31 ⋅ 0

Xdebug的安装-(无错可执行版)

xdebug是一个开源的php调试器,以php模块的形式加载并被使用。可以用来跟踪,调试和分析PHP程序的运行状况. 这里以PHP5.2.13为例, 1.下载php_xdebug-2.1.0-5.2.dll文件, http://www.xdebug.o...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

PHP 方法覆盖override 与 抽象方法的实现之间的关系

Overload重载:重载是多态的基础,是方法名相同但根据参数不同做不同的处理,PHP是弱类型语言,不能直观的实现方法重载 Override覆盖:覆盖是子类继承父类方法并对齐进行重新构造,方法名相同...

big_cat ⋅ 2015/09/13 ⋅ 0

PHP文件上传代码

创建一个文件上传表单 允许用户从表单上传文件是非常有用的。 请看下面这个供上传文件的 HTML 表单: <html><body> <form action="upload_file.php" method="post"enctype="multipart/form-d......

梦梦阁 ⋅ 2016/01/07 ⋅ 0

PHP小知识点

1 PHP函数中不能直接访问全局变量, 例如下面的函数访问不到全局变量$HTTPRAWPOST_DATA function getPostData(){ $data = $HTTPRAWPOST_DATA; return $data;} 解决这个问题的方式有两种: 在函...

smartstone_2015 ⋅ 2016/09/16 ⋅ 0

jQuery文件上传插件--Uploadify

Uploadify简单说来,是基于Jquery的一款文件上传插件。它的功能特色总结如下: 支持单文件或多文件上传,可控制并发上传的文件数 在服务器端支持各种语言与之配合使用,诸如PHP,.NET,Java……...

匿名 ⋅ 2009/12/12 ⋅ 4

php5各个版本的区别

本文目录: PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束 PHP5.2:JSON 支持 PHP5.3:弃用一些功能、匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运...

stone_ ⋅ 2016/08/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring JavaConfig 注解

JavaConfig注解允许开发者将Bean的定义和配置放在Java类中。它是除使用XML文件定义和配置Bean外的另一种方案。 配置: 如一个Bean如果在XML文件可以这样配置: <bean id="helloBean" class="...

霍淇滨 ⋅ 26分钟前 ⋅ 0

Spring clound 组件

Spring Cloud技术应用从场景上可以分为两大类:润物无声类和独挑大梁类。 润物无声,融合在每个微服务中、依赖其它组件并为其提供服务。 Ribbon,客户端负载均衡,特性有区域亲和、重试机制。...

英雄有梦没死就别停 ⋅ 27分钟前 ⋅ 0

Confluence 6 重新获得站点备份文件

Confluence 将会创建备份,同时压缩 XML 文件后存储熬你的 <home-directory>/backups> 目录中。你需要自己访问你安装的 Confluence 服务器,并且从服务器上获得这个文件。 运行从 Confluence...

honeymose ⋅ 32分钟前 ⋅ 0

informix的常用SQL语句

1、创建数据库 eg1. 创建不记录日志的库testdb,参考语句如下: CREATE DATABASE testdb; eg2. 创建带缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解...

wangxuwei ⋅ 47分钟前 ⋅ 0

matplotlib画图

最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数。 from pylab import *from numpy import *x = linspace(0, 5, 10)y = x ** 2figure()plot(x, y, 'r')...

Dr_hu ⋅ 今天 ⋅ 0

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 今天 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

小致dad ⋅ 今天 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 今天 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 今天 ⋅ 0

Docker Toolbox Looks like something went wrong

Docker Toolbox 重新安装后提示错误:Looks like something went wrong in step ´Checking if machine default exists´ 控制面板-->程序与应用-->启用或关闭windows功能:找到Hyper-V,如果处......

随你疯 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部