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

时间:2017-12-20 00:27:37

标签: php

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

  

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

这是我班级的代码:

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的错误。

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

1 个答案:

答案 0 :(得分:4)

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

foreach(Deck::DECK_SUITS as $suit) {
    foreach(Deck::DECK_RANKS as $rank) {
来自定义它们的类中的

self::DECK_SUITSself::DECK_RANKS