文档章节

PHP参数类型限制

Corwien
 Corwien
发布于 2016/04/16 11:27
字数 409
阅读 711
收藏 1

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
博文 149
码字总数 115164
作品 0
广州
程序员
Xdebug 配置(Xdebug安装配置)

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

龙上
2012/02/27
0
1
php及xdebug使用小结

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

jackjie2010
2012/06/20
0
0
PHP 7 改变的不单单是代码, 更多是思想.

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

Tuesday
2016/10/29
36
0
PHP 方法覆盖override 与 抽象方法的实现之间的关系

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

big_cat
2015/09/13
397
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
652
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nexus Repository Manager 搭建私有docker仓库

Nexus Repository Manager 搭建私有docker仓库 2018年05月08日 14:44:23 阅读数:115 1.下载nexus3的镜像: docker pull sonatype/nexus3 2.使用镜像启动一个容器: docker run -d --name n...

linjin200
12分钟前
0
0
大数据技术的发展趋势

大数据领域已经涌现出了大量新的技术,它们成为大数据采集、存储、处理和呈现的有力武器。这些技术下一步将如何发展?它们之中哪些技术 将广为流行?又会诞生哪些新的技术? 技术趋向多样化,...

董黎明
15分钟前
1
0
谷歌浏览器插件入门示例

实现:任何网址实现图片下载和获取当前域名的cookies的json字符串。 图片下载是给小白用的,可以选中批量下载,获取cookies 是为了方便程序员调试用。 获取cookies: git地址: https://gite...

NLGBZJ
16分钟前
2
0
152. Maximum Product Subarray - LeetCode

Question 152. Maximum Product Subarray Solution 题目大意:求数列中连续子序列的最大连乘积 思路:动态规划实现,现在动态规划理解的还不透,照着公式往上套的,这个问题要注意正负,需要...

yysue
17分钟前
0
0
IDEA工具 jdk,tomcat,maven 配置

设置JDK、tomcat、maven的版本 一、JDK      如果下拉列表没有,SDKS ---> + ----> 选择下载的JDK目录 ---> APPLY OK    二、tomcat 三、Maven    四、生成 git 本地创库...

君千殇520
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部