2017-12-20 10 views
2

PHPで定数を持つ簡単なクラスを持っています。コンストラクタで、私はforループの中で、この定数を使用したいのですが、しかし、IDEおよびPHPの両方は言う:PHPは参照された定数の宣言を見つけることができません

お知らせ:未定義の定数DECK_SUITSの使用 - 仮定「DECK_SUITS」/../Deck.phpに行に18

ここに私のクラスのコードです:

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; 
     } 
    } 
} 

だから、このエラーは、両方のDECK_SUITSのために示されているだけでなく、私のforeachループでDECK_RANKS。

私のコードに間違いがありません。

答えて

4
彼らは( define()機能を使用して作成) class constantsないグローバル定数をしている、と彼らはで定義されているクラスの識別、別々に参照する必要があるためです

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

またはself::DECK_SUITSself::DECK_RANKSからの定義されているクラス内

関連する問題