A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© PHP吴嘉伟 中级黑马   /  2018-2-3 15:14  /  1179 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在我自己的搜索资料中,发现PHP7,已经变成了--半强类型语言
简单来说我们可以声明变量的类型。我们用个小例子来说明。
在我们日常使用中常常1.调用函数2.传入参数3.判断参数的类型
如:
[PHP] 纯文本查看 复制代码
function echoArray($arr){
  if (is_array($arr)) {
    foreach ($arr as $key => $value) {
      echo $value.'<br/>';
    }
  }else{
    echo '数据必须为数组!';
  }
}
echoArray('你好');
echoArray(['你好']);

但是在PHP7支持声明数据类型:
[PHP] 纯文本查看 复制代码
function echoArray(Array $arr){

    foreach ($arr as $key => $value) {
      echo $value.'<br/>';
    }
  
}
echoArray('你好');
echoArray(['你好']);

上面的参数里 $arr 前的Array就是声明$arr必须为数组类型,不然就会报错
Uncaught TypeError: Argument 1 passed to echoArray() must be of the type array, string given, called in D:\webserver\test\index.php on line 9 and defined in D:\webserver\test\index.php:2 Stack trace: #0 D:\webserver\test\index.php(9): echoArray('\xE4\xBD\xA0\xE5\xA5\xBD') #1 {main} thrown in D:\webserver\test\index.php on line 2

除了Array还有Object有一个更有用的声明方式,声明是否由某个类实例化得到,相当于InstanceOf
[PHP] 纯文本查看 复制代码
function echoObj(Son $obj){

    var_dump($obj);
}
class father{}
class Son{}
  $father=new father;
  $son=new Son;
  echoObj($father);
  echoObj($son);

Uncaught TypeError: Argument 1 passed to echoObj() must be an instance of Son, instance of father given, called
如果不是传入Son对象就会报错,这样就省略了自己判断


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马