クラスに変数を作成するときにdefines
を使用できないのはなぜですか?これを過ぎるために私は何ができますか?あなたが唯一の定数式でプロパティを宣言することができOOPは変数にdefineを使用できません
Parse error: syntax error, unexpected '.', expecting ',' or ';'
クラスに変数を作成するときにdefines
を使用できないのはなぜですか?これを過ぎるために私は何ができますか?あなたが唯一の定数式でプロパティを宣言することができOOPは変数にdefineを使用できません
Parse error: syntax error, unexpected '.', expecting ',' or ';'
:私は次のエラーを与えること
class foo {
public $bar = FOO."bar";
}
:このよう
(定義すると、テーブルの接頭辞(デシベル)です)。ここで、連結演算子は無効です(したがって、解析エラー)。FOO
定数ではありません。
public $bar = FOO."bar";
これを逆にたどることは、代わりにコンストラクタで初期化することです。定数を使用して、文字列と連結することもできます。
class foo {
public $bar;
public function __construct() {
$this->bar = FOO."bar";
}
}
作品..ありがとう! – Marwelln
defines
は使用できません。変数を初期化するときは演算子を使用できません。
あなたが値を初期化するコンストラクタを使用することができます。前述したように、あなたが値を動的にする必要がある場合、演算子を使ってクラス変数を定義することはできません
<?php
define("FOO", "test");
class foo {
public $bar;
function __construct()
{
$this->bar = FOO . "bar";
}
}
var_dump(new foo());
、代入は関数内で発生しなければなりません。
定数を使用する場合は、グローバルスコープで定数を定義する代わりにクラス定数を使用すると便利です。キーワードはconst
で定義され、self::
演算子を使用してアクセスします。あなたが他のコンテキスト内のクラスからの定数を使用することができますので、foo::BAR
が、define
で定義された定数としてグローバルスコープで自動的にありません。
class foo
{
const BAR = 'test';
public $baz;
public function __construct()
{
$this->baz = self::BAR . 'bat';
}
}
クラス定数も静的インスタンス外にアクセスすることができます。
$some_var = foo::BAR;
echo $some_var;
// output: test
[定数](http://php.net/manual/en/language.constants.php)、 'define()'は定数を作る関数です。 – BoltClock