クラス プロパティを式 (連結など) で初期化することはできません。代わりに、コンストラクターでそれを行う必要があります。
class FamillePieceControllerCore extends FrontController
{
public $php_self = 'famille-piece.php';
private $webservice_url;
public function __construct() {
$this->webservice_url = _CICERONE_CONNECT_BASE_URL_ . 'WSC003&P2=0';
}
}
ドキュメントから:
クラスのメンバー変数は「プロパティ」と呼ばれます。「属性」や「フィールド」などの他の用語を使用して参照される場合もありますが、この参照では「プロパティ」を使用します。public
これらは、 、protected
、またはのいずれかのキーワードを使用して定義されprivate
、その後に通常の変数宣言が続きます。
この宣言には初期化が含まれる場合がありますが、この初期化は定数値である必要があります。つまり、コンパイル時に評価できる必要があり、評価されるために実行時の情報に依存してはなりません。
で定義された定数は実行時に定義されるため、プロパティが初期化されるコンパイル時にdefine()
の値はわかりません。_CICERONE_CONNECT_BASE_URL_
それ以降の PHP バージョンの更新:
PHP 5.6 以降では、コンパイル時に評価できる限り、クラス プロパティの宣言で単純な式を使用できます。したがって、投稿された元のコードは、PHP 5.6 以降で正しくコンパイルおよび実行されます。関数呼び出しや変数補間など、ランタイム評価を必要とするものは、まだ許可されていません。
// This is okay in PHP 5.6+
public $property = SOME_CONST . " other stuff";
// This is still not possible since
public $property = strlen(SOME_CONST);