phpに関する質問です。

php5なのですが、クラスのメンバー変数の定義を下記のようにやろうとすると

var $hoge = LIB_PATH."/hoge";

エラーがでて怒られてしまいます。
※ちなみにLIB_PATHは定義済みの定数です。

Parse error: syntax error, unexpected '.', expecting ',' or ';' in 〜〜〜

ドットが怒られているようなのですが、ここではドットで文字列の結合ができないのでしょうか。
また、関数の引数の初期値設定でも同様にドットが怒られます。

調べてみたのですが、特にそれらしい記述はマニュアルやネット上には記載が見つからず
(多分ドットという検索に引っ掛けずらい単語のせいもあるとおもうのですが)
ご存知の方がいればお教えいただければと思います。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/03/13 21:01:00
  • 終了:2010/03/13 22:13:32

ベストアンサー

id:GoldenDawn No.2

GoldenDawn回答回数426ベストアンサー獲得回数812010/03/13 22:06:44

ポイント62pt

この辺ですね。

http://php.atpedia.jp/php/ja/language.oop5.basic.html

デフォルト値は定数でなければなりません。(たとえば) 変数、クラスのメンバあるいは関数コールなどは使用できません。

<?php
class SimpleClass
{
    // 無効な形式のメンバ宣言
    public $var1 = 'hello '.'world';
    public $var2 = <<<EOD
hello world
EOD;
    public $var3 = 1+2;
    public $var4 = self::myStaticMethod();
    public $var5 = $myVar;

    // 有効な宣言
    public $var6 = myConstant;
    public $var7 = self::classConstant;
    public $var8 = array(true, false);
    
    
}
?>
id:n_maco2

書いてありましたか!

お教えいただきありがとうございました。

なるほど.という命令文を使って生成した文字列、ではいけないのですね。

勉強になりました、ありがとうございます。

2010/03/13 22:12:45

その他の回答(1件)

id:GreenStar No.1

GreenStar回答回数192ベストアンサー獲得回数462010/03/13 21:32:37

ポイント8pt

php5ではインスタンスを生成してメンバ変数を使います!!

$hoge = new クラス名;
$hoge->変数名

クラス内では略式が使えます!!

$this->変数名
id:n_maco2

ご回答ありがとうございます。

が、どうも質問の意図からずれてしまった回答のように思えます。

そのメンバ変数の初期設定値が渡せると思うのですが、

その値を「.(ドット)」を使って設定すると、上記のエラーが出てしまう、という問題についてお伺いできればと思います〜

2010/03/13 21:47:35
id:GoldenDawn No.2

GoldenDawn回答回数426ベストアンサー獲得回数812010/03/13 22:06:44ここでベストアンサー

ポイント62pt

この辺ですね。

http://php.atpedia.jp/php/ja/language.oop5.basic.html

デフォルト値は定数でなければなりません。(たとえば) 変数、クラスのメンバあるいは関数コールなどは使用できません。

<?php
class SimpleClass
{
    // 無効な形式のメンバ宣言
    public $var1 = 'hello '.'world';
    public $var2 = <<<EOD
hello world
EOD;
    public $var3 = 1+2;
    public $var4 = self::myStaticMethod();
    public $var5 = $myVar;

    // 有効な宣言
    public $var6 = myConstant;
    public $var7 = self::classConstant;
    public $var8 = array(true, false);
    
    
}
?>
id:n_maco2

書いてありましたか!

お教えいただきありがとうございました。

なるほど.という命令文を使って生成した文字列、ではいけないのですね。

勉強になりました、ありがとうございます。

2010/03/13 22:12:45
  • id:GreenStar
    var $hoge = LIB_PATH;

    var $hoge = LIB_PATH . "/hoge";
    でもエラーになる状況を想定したのですが、違ったようで申し訳ないです。
  • id:n_maco2
    いえいえ。
    .がなければエラーはでないのですが。。。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません