5

我正在尝试使用 php7。我已经安装了https://github.com/rlerdorf/php7dev并通过 phpstorm 连接。我正在尝试使用这样的新功能:

<?php
namespace Kata;

class StringCalculator
{
    public function add(string $parameters): int {
        return 0;
    }
}

然后我尝试像这样测试它:

<?php
namespace Kata;

class StringCalculatorTest extends \PHPUnit_Framework_TestCase
{
    public function testAddEmptyString()
    {
        $calc = new StringCalculator();
        $this->assertSame(0, $calc->add(''));
    }
}

我用phpunit启动,不幸的是我有

PHP Parse 错误:语法错误,意外 ':',期待 ';' 或者 '{'

可能我没有正确安装 php7 但是当我 php -v 似乎没问题

PHP 7.0.0-dev (cli) (built: May 25 2015 16:34:33) (DEBUG) 版权所有 (c) 1997-2015 The PHP Group Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Zend OPcache v7.0.6-dev 技术,版权所有 (c) 1999-2015,Zend Technologies

更新

问题不在于安装/配置php7(我认为),因为当我像这样从cli运行它时:

<?php
    $calc = new Kata\StringCalculator();
    var_dump($calc->add(''));

输出int(0)并且没有错误。

所以也许问题出在phpunit上?

4

1 回答 1

1

从错误中可以清楚地看出执行代码存在问题。

PHP Parse error: syntax error, unexpected ':', expecting ';' or '{'

您的问题很可能来自 PHPUnit,因为您有正确的 php 7 设置。如果 PHPUnit 无法理解您的代码,它将在 PHP 7 代码的第一部分失败,在您的情况下, 在这一行中使用返回类型声明

public function add(string $parameters): int {

当您尝试断言时,它将在您的 phpunit 测试中触发。如果您评论您的断言,错误应该会消失。

我建议验证您正在使用的 PHPUnit 版本,您应该使用版本 5 或更高版本。(对于 php 7.0 最好是 6)有关 PHPunit 版本的更多详细信息,请查看此链接

于 2018-09-20T09:45:21.420 回答