3

私はこれで髪を引っ張っています。PHPではかなり新しいですが、これは非常に基本的なもので、どこに問題があるのか​​ わかりません。以下のコード スニペットを例として使用します。

class LG_Activity_Processor {
// Activity Types
const STATUS_DRAFT = 'draft';
const STATUS_PUBLISH = 'publish';
...
private $STATUS_FUTURE = 'future';
define ("STATUS_PRIVATE" , 'private');

変数は実行前に完全に定義されているため、もともと「const」構造を使用するつもりでしたが、その構文は醜い「定義」よりもきれいだと思います。問題は、constの定義でエラーが発生しないことですが、クラスの後半で定数を参照するたびに、次のエラー メッセージが表示されます。

PHP 通知: 未定義の定数 STATUS_PUBLISH の使用 - 'STATUS_PUBLISH' を想定

は?明確にするために、「const」を参照するために使用した構文は次のとおりです。

$core_fields ['post_status'] = STATUS_PUBLISH;

私も試しました:

$core_fields ['post_status'] = $this->STATUS_PUBLISH;

愛がない。それから私は絶望的な状態に入り、最終的に「define」を試みました。呼び出し構文は同じですが、「STATUS_PRIVATE」について上記のように定義構文を変更しました。定義行で次のような致命的なエラーが発生したため、これは非常に価値のあるものになりました。

PHP Parse error:  syntax error, unexpected T_STRING, expecting T_FUNCTION

私はあきらめた。最後に変数をプライベート変数として定義し (STATUS_FUTURE の例のように)、次のように参照しました。

$core_fields ['post_status'] = $this->STATUS_PUBLISH;

それはあなたが期待しているように機能しますが、正しい方法でだまされたと感じずにはいられません. コード全体を再び作成する方法についてのアイデアはありますか?

4

1 に答える 1

6

LG_Activity_Processor::STATUS_DRAFTアクセス時に行う必要があります。

PHPマニュアルを見てください。明確な例が示されています。

http://php.net/manual/en/language.oop5.constants.php

于 2012-04-30T22:59:23.000 に答える