常见不补助项目限制,无需为变量内定项目

图片 1

特定类型:对象类型、数组类型

<?php $arr = array('a1'=>1,'bb'=>2.2,3,4.5); $o1 = $arr; var_dump;?>

定义一个函数时,一个形参,可以使用类型约束,也可以不使用;
如果使用了类型约束,则对应的该实参数据,就必须是要求的那种类型;
能够使用的类型约束,只有以下几种情况可用:

  • 使用方括号的语法 新建 / 修改 数组:

本文实例讲述了PHP类型约束用法。分享给大家供大家参考,具体如下:

  • 场合:函数的形参变量
  • 类型:对象类型、接口类型,数组类型,函数类型

php中,只支持在函数的形参上,设定类型的约束目标,形式如下:

example3.php

特定场合:函数的形参变量

  1. 其他标量数据转换为对象:属性名为固定的”scalar”,值为该变量的值
没有约束的p1:" . $p1; echo "
要求是数组的p2:" ; print_r; echo "
要求是类A的对象:"; var_dump; echo "
要求是实现实现了USB接口的对象:"; var_dump;$obj2 = new B;//演示各种形式的函数调用//f1;//报错,第二个参数不是数组类型,Argument 2 passed to f1() must be an array, integer give//f1(1, $arr, $obj1, $obj1);//报错,第四个参数,Argument 4 passed to f1() must implement interface USB, instance of A givenf1(1.2, $arr, $obj1, $obj2);//没问题?>
<?phpclass A { private $A; // This will become 'AA'}class B extends A { private $A; // This will become 'BA' public $AA; // This will become 'AA'}var_dump new B;?>/**执行结果array { ["BA"]=> NULL ["AA"]=> NULL ["AA"]=> NULL}**/

在强类型语言中,类型约束是语法上的要求,即定义一个变量的时候,必须指定类型,并以后也只能存储该类型数据;

 $s1 = 1; $s2 = 2.2; $s3 = 'abc'; $s4 = true; $obj1 = $s1; $obj2 = $s2; $obj3 = $s3; $obj4 = $s4; echo "<pre>"; var_dump($obj1,$obj2,$obj3,$obj4); echo "</pre>";

说明:

如果给出方括号但没有指定键名,则取当前最大整数索引值,新的键名将是该值
+ 1。如果当前还没有整数索引,则键名将为 0

注意:这里所使用的最大整数键名 不一定
就在当前数组中。它只要在上次数组重新生成索引后,曾经存在过就行了;;

function f{}// 要求参数只能使用该类的对象function f{}// 要求该参数只能使用实现该接口的对象function f{}// 要求该参数只能使用数组function f// 要求该参数只能是一个函数

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组操作技巧大全》、《php字符串用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》希望本文所述对大家PHP程序设计有所帮助。

③ 接口:使用接口的名称,传递过来的实参,必须是实现了该接口的类的实例

转换成对象:

即可以对函数的参数设定必须使用的类型。只能对对象、接口、数组和函数进行约束。

 function f1{ echo "<br/>"; var_dump; }

② 对象:使用类的名称,传递过来的实参,必须是该类的实例

  • 对于任何类型 integer , float , boolean, resource
    类型,如果建一个值转换成数组,将得到一个仅有一个元素的数组,其键名是
    0 ,该元素即为此标量的值。
  • $scalarValuearray($scalarValue)完全一样。
  • 如果一个 object 类型转换成一个 array
    类型,则结果为一个数组,其单元为该对象的属性。键名将为成员变量名,不过有几点例外:
  1. 整数属性不可访问;
  2. 私有变量前会加上类名作前缀;
  3. 保护变量前会加上一个 "" 作前缀。这些前缀的前后都各有一个 null
    字符,这回导致一些不可预知的行为:example9.php

php是弱类型,其特点是无需为变量指定类型,而且在其后也可以存储任何类型,不过在php的新语法中,在某些特定场合,针对某些特定类型,也可进行语法约束。

示例1:方法参数中类型约束为为A

本文实例讲述了PHP面向对象类型约束。分享给大家供大家参考,具体如下:

example4.php

图片 1打印结果

php中,只支持局部的部分类型约束

  • ##### 访问数组单元:
输出结果:object#2  { } 

没有约束的p1:1.2要求是数组的p2:Array
[1]要求是实现实现了USB接口的对象:object[2]

由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。

转换基本语法:数据;

就是要求某个变量只能使用某种指定的数据类型;php属于”弱类型语言“,通常不支持类型约束;相应的,强类型语言,类型约束却是其“基本特征”。

  • 被赋值为 NULL;
  • 为声明的变量;
  • unset() 的变量;

其他语言中,类型约束是语法上的要求,定义一个变量的时候,必须指定类型,类型一旦确定,这个变量只能存储这个类型的数据,这是强类型语言的特点。但PHP是弱类型语言,无需为变量指定类型。

希望本文所述对大家PHP程序设计有所帮助。

<?php$array = array( "foo" => "bar", 42 => 24, "multi" => array( "dimensional" => array( "array" => "foo" ) ));var_dump($array["foo"]);var_dump($array[42]);var_dump($array["multi"]["dimensional"]["array"]);/**以上会输出:string "bar"intstring "foo"**/ 

function 方法名( [要求使用的类型] $p1, [要求使用的类型] $p2, ......){ //....}
<?php$obj =  'ciao';var_dump;/**object#1  { ["scalar"]=> string "ciao"}**/echo $obj->scalar; // 输出 'ciao'
  1. 对象转换为对象:没有变化
  2. 数组转换为对象:数组的键名当作属性名,值为对应值如果是数字下标,对应属性不方便获取,所以通常适合于纯字符下标的数组。
  3. null转换为对象:空对象

什么是类型约束

<?php$arr = array(5 => 1, 12 => 2);$arr[] = 56; // 增加一个键名是 13 的单元 $arr[13] = 56;$arr["x"] = 42; // 增加一个 键名是 "x" 的单元 unset; // 删除掉 $arr 数组中 键名是 5 的单元unset; // 删除整个数组 $arr?>
 function f2{ $c = count; return $c; } $r1 = f2(array(1,2,3,4,5,56)); echo "<br/>长度为".$r1;

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

  • NULL 转换为 array 会得到一个空的数组。

示例2:方法参数中类型约束为数组

  • 语法:

在PHP较新的语法中,在某些特定的场合,针对某些特定类型,也可以进行语法约束:

example1.php

相关文章

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图