首页 > 解决方案 > 为什么将访问修饰符传递给 PHP 中的方法会返回解析错误(迭代器)

问题描述

新手在这里。我一直在尝试在我的方法(第 3 行)中传递各种访问修饰符(公共、私有和受保护)。不幸的是,运行代码时出现 Parse 错误。请看下面的代码:

class MappedIteratorDemo implements Iterator
{
    public function __construct(private array $items = []){}

    public function current()
    {
        // TODO: Implement current() method.
        return current($this->items);
    }

    public function next()
    {
        // TODO: Implement next() method.
        return next($this->items);
    }

    public function key()
    {
        // TODO: Implement key() method.
        return key($this->items);
    }

    public function valid()
    {
        // TODO: Implement valid() method.
        return key($this->items) !== null;
    }

    public function rewind()
    {
        // TODO: Implement rewind() method.
        return reset($this->items);
    }
}

$mappedArray = [
    'name'      => 'Ola',
    'location'  => 'Essen, Germany',
    'role'      => 'Software Developer',
];

$mappedIterDemo = new MappedIteratorDemo($mappedArray);
foreach ($mappedIterDemo as $item =>$value)
{
    print "$item : $value" . PHP_EOL;
}

及其对应的错误


PHP Parse error:  syntax error, unexpected 'private' (T_PRIVATE), expecting variable (T_
VARIABLE) in ...

我的 PHP 版本是 PHP: 8.0,在 PHPStorm IDE 上运行。

我将不胜感激有关可能解决方案的任何提示/指导。

谢谢

标签: phpiterator

解决方案


谢谢你们的评论。

所以,我最初认为在 IDE 底部更改 PHP 版本会很神奇,但我不知道我还必须在首选项/设置下更改解释器版本。

我意识到我的 PHP CLI 解释器的版本是7.4.23。我将它更新到8.0版,它运行得非常好。

这也可以帮助那些在未来可能面临同样挑战的人。


推荐阅读