PHP5的类型约束
时间:2011-05-21
来源:互联网
PHP5的类型约束
PHP中函数参数有类型约束。那就是,明确要求参数的类型。比如以下代码:
Php代码
- <?php
- //如下面的类
- class MyClass
- {
- /**
- * 测试函数
- * 第一个参数必须为类OtherClass的一个对象
- */
- public function test(OtherClass $otherclass) {
- echo $otherclass->var;
- }
-
-
- /**
- * 另一个测试函数
- * 第一个参数必须为数组
- */
- public function test_array(array $input_array) {
- print_r($input_array);
- }
- }
-
- //另外一个类
- class OtherClass {
- public $var = 'Hello World';
- }
- ?>
如果显式指定参数是某种类型的变量,则参加快PHP的程序效率。为什么呢?因为,反是对象,PHP5默认是以引用传递的。所以,public function test(OtherClass $otherclass) {
这行代码中,虽没有引用符号,实际也是引用传参。
那么,数组呢?因为,在PHP中我们面对的大数据的类型不外乎三类,对象,数组,字符串,而字符串是要明确在参数表中使用引用符号(&)的。
数组怎样,您试一下就明白了。所以,我不多说了!
当对象参数被加上类型约束后,仍可以有默认值,成为可选参数。如果这样,函数内部就要判断,传入参数是否为NULL。但一般是不需要使用 instanceof这个运算符了。 (此运算符比较特别,如果要否定,必须是 (!(A instanceod B))的形式。 )以下是有默认值的原码:
Php代码
- <?php
-
- class ca{
- public $name='';
- }
-
- class cb{
- public $ca;
- public $color;
- public $array=array();
- //这里我们加上了类型约束,同时也给了默认值。但我们能发现,只有对象是以引用传递的
- function test($srcStr,$color,ca $ca = null,array $array=null){
- $this->color=$color;
- $this->ca = $ca;
- $this->array = $array;
- $ca->name=$srcStr;
- print_r($this);
- }
- }
-
- $cat=new ca();
- $cbt=new cb();
-
-
- $cbt->test('test','red'); //这里我们可以不传对象
- $cbt->test('test','blue',$cat); //我们可以传对象,但数组仍不传
- print_r($cat);
- $cat1=new ca();
- $arr=array(1,2,3,4,5);
- $cbt->test('test','black',$cat1,$arr); //数组对象全部传入
- array_push($arr,6,7,8,9); //再改变数组
- print_r($cbt->array); //结果传入的数组未变。
-
- ?>
作者: 听老歌 发布时间: 2011-05-21

作者: kiqq2003 发布时间: 2011-05-23
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28