我在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的错误。
我无法找到我的代码有什么问题。
答案 0 :(得分:4)
那是因为它们class constants不是全局常量(使用define()函数创建),需要以不同方式引用,标识它们所定义的类:
foreach(Deck::DECK_SUITS as $suit) {
foreach(Deck::DECK_RANKS as $rank) {
来自定义它们的类中的或self::DECK_SUITS
和self::DECK_RANKS