search

Home  >  Q&A  >  body text

PHP关于官方文档的一些问题

以下问题运行在php5.5
小弟刚学PHP没几天
求大神指教

1.官方文档给出的这个实例中
declare(strict_type=1);
这个严格声明为何显示为一个不支持的声明...
然后把严格声明去掉后,下面两个int型的sum(1,2)也无法传入函数= =

<?php
declare(strict_types=1);

function sum(int $a, int $b) {
    return $a + $b;
}

var_dump(sum(1, 2));
var_dump(sum(1.5, 2.5));
?>

2.这个实例中,function后面的: float是啥子意思?
是不是传进的数return出来的全变成浮点型?
然后依然执行错误

<?php
function sum($a, $b): float {
    return $a + $b;
}

// Note that a float will be returned.
var_dump(sum(1, 2));
?> 
PHP中文网PHP中文网2817 days ago548

reply all(2)I'll reply

  • ringa_lee

    ringa_lee2017-04-10 16:19:03

    function后面的: float指的是该函数返回值的类型。
    强类型strict_type是从PHP7开始才引入的东西,默认是不开启的,以后也不会默认开启,是一个很有争议性的特性。PHP之父rasmus,Zend公司创始人andi,PHP7性能方面的核心开发者dmitry和鸟哥laruence都投了反对票:
    https://wiki.php.net/rfc/scalar_type_hints_v5

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 16:19:03

    你写的是php7的代码,declare也好,类型指定也好,都是php7的特性
    因为php7是个较大改动的新版本,所以这些特性php5.5并不支持

    鉴于当下的环境过渡到php7还需要一段时间,你可以先看一下php5.5或php5.6的文档上手,然后再去看php7的新特性

    这是PHP 5.6到PHP 7的迁移指南 https://github.com/vimac/Migrating-from-PHP5.6.x-to-PHP7.0.x,你可以当做是了解PHP 7新特性的地方

    reply
    0
  • Cancelreply