我正在尝试使用php7.我已经安装了https://github.com/rlerdorf/php7dev并通过phpstorm连接.我正在尝试使用这样的新功能:
<?php
namespace Kata;
class StringCalculator
{
public function add(string $parameters): int {
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试像这样测试它:
<?php
namespace Kata;
class StringCalculatorTest extends \PHPUnit_Framework_TestCase
{
public function testAddEmptyString()
{
$calc = new StringCalculator();
$this->assertSame(0, $calc->add(''));
}
}
Run Code Online (Sandbox Code Playgroud)
我用phpunit启动,不幸的是我有
PHP解析错误:语法错误,意外':',期待';' 要么 '{'
可能我没有正确安装php7但是当我的php -v似乎没问题
PHP 7.0.0-dev(cli)(内部版本:2015年5月25日16:34:33)(DEBUG)版权所有(c)1997-2015 PHP Group Zend Engine v3.0.0-dev,Copyright(c)1998-2015 Zend Zend Technologies的Zend OPcache v7.0.6-dev技术,版权所有(c)1999-2015
UPDATE
问题不在安装/配置php7(我想),因为当我从cli运行它时,如下所示:
<?php
$calc = new Kata\StringCalculator();
var_dump($calc->add(''));
Run Code Online (Sandbox Code Playgroud)
输出int(0),没有错误.
所以也许问题出在phpunit中?
从错误中可以清楚地看出执行代码时出现问题。
PHP Parse error: syntax error, unexpected ':', expecting ';' or '{'
您的情况的问题很可能来自 PHPUnit,因为您有正确的 php 7 设置。如果 PHPUnit 无法理解您的代码,它会在 PHP 7 代码的第一位中失败,在您的情况下, 在这一行中使用返回类型声明
public function add(string $parameters): int {
Run Code Online (Sandbox Code Playgroud)
当你尝试断言时,它会在你的 phpunit 测试中被触发。如果您评论您的断言,错误应该会消失。
我建议验证您正在使用的 PHPUnit 版本,您应该使用版本 5 或更高版本。(对于 php 7.0,最好是 6)有关 PHPunit 版本的更多详细信息,请查看此链接。