PHP无法找到引用常量的声明

问题描述 投票:2回答:1

我在PHP中有一个带有常量的简单类。在构造函数中,我想在for循环中使用此常量,但IDE和PHP都说:

注意:使用未定义的常量DECK_SUITS - 在第18行的/../Deck.php中假定为'DECK_SUITS'

这是我班级的代码:

class Deck
{

private $cards = [];
const DECK_SUITS = [Suit::Club, Suit::Diamond, Suit::Heart, Suit::Spade];
const DECK_RANKS = [Rank::Ace, Rank::Two, Rank::Three, Rank::Four, Rank::Five, Rank::Six, Rank::Seven, Rank::Eight, Rank::Nine,
    Rank::Ten, Rank::Jack, Rank::Queen, Rank::King];

public function __construct() {
    foreach(DECK_SUITS as $suit) {
        foreach(DECK_RANKS as $rank) {
            $card = new Card($suit, $rank);
            $this->cards[] = $card;
        }
    }
}

因此,在我的foreach循环中显示DECK_SUITS和DECK_RANKS的错误。

我找不到我的代码有什么问题。

php
1个回答
4
投票

这是因为它们是class constants而不是全局常量(使用define()函数创建),需要以不同方式引用,标识它们所定义的类:

foreach(Deck::DECK_SUITS as $suit) {
    foreach(Deck::DECK_RANKS as $rank) {

或者来自他们所定义的班级的self::DECK_SUITSself::DECK_RANKS

© www.soinside.com 2019 - 2024. All rights reserved.