簡體   English   中英

PHP解析錯誤:語法錯誤,意外的“:”,期待“;” 或者 '{'

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

我正在嘗試使用 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解析錯誤:語法錯誤,意外的“:”,期待“;” 或者 '{'

可能我沒有正確安裝 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, 版權所有 (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中?

從錯誤中可以清楚地看出執行您的代碼存在問題。

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 版本的更多詳細信息,請查看此鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM