gpt4 book ai didi

php - 返回值必须是返回的混合 int 的实例 AH01071

转载 作者:行者123 更新时间:2023-12-03 08:06:30 25 4
gpt4 key购买 nike

在此代码中

<?php declare(strict_types=1);

namespace Persist;


trait IteratorTrait {
/* #region Iterator */
/** @var bool $valid true if a valid object */
private bool $valid = false;

public function current ( ): object { return $this; }
public function key ( ): mixed { return $this-> {$this->getPrimaryKey()} ; }
public function valid ( ): bool { return $this-> valid; }
public function next ( ): void { $this-> findNext(); }
public function rewind ( ): void { $this-> findFirst(); }
/* #endregion */
};

我在使用以下特征的类中收到错误(在 php 7.5 上): AH01071: Got error 'PHP message: PHP Fatal error: Uncaught TypeError: Return value of NameSpace\\test::key()必须是混合的实例,返回 in...

如果删除键上的 :mixed,我会在 PHP 8.1 上收到错误:PHP 已弃用:NameSpace\test::key() 的返回类型应该与 Iterator::key(): 兼容,或者#[\ReturnTypeWillChange] 属性应用于暂时抑制 ...

中的通知

我读到的内容here让我困惑。

如果我将其添加到特征中,我会得到 fatal error :属性“ReturnTypeWillChange”无法定位 IteratorTrait.php 第 10 行中的属性(允许的目标:方法)

编辑:发生此错误是因为在 key() 方法之前定义了一个属性。

我应该在哪里更改才能使其在 7.x 和 8.x 上运行?

最佳答案

#[\ReturnTypeWillChange] 需要直接出现在返回混合的方法之前,但需要忽略混合才能使其在两个 PHP 版本中都有效。正确的语法是:

<?php declare(strict_types=1);

namespace Persist;


trait IteratorTrait {
/* #region Iterator */
/** @var bool $valid true if a valid object */
private bool $valid = false;

public function current ( ): object { return $this; }
#[\ReturnTypeWillChange]
public function key ( ) { return $this-> {$this->getPrimaryKey()} ; }
public function valid ( ): bool { return $this-> valid; }
public function next ( ): void { $this-> findNext(); }
public function rewind ( ): void { $this-> findFirst(); }
/* #endregion */
};

在 PHP 8.1.5 和 7.4.29 上测试。

关于php - 返回值必须是返回的混合 int 的实例 AH01071,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72184109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com