[PHP-users 6675] クラスのメンバ変数初期化でarray()は使える?。

HASHIMOTO Keisuke php-users@php.gr.jp
Thu, 04 Apr 2002 17:21:07 +0900


こんにちは、はしもとです。

クラスのメンバ変数初期化でのarray()の使用に関して質問です。

例えばPHP4.1.2(Win2000,RedHat Linux7.2)で、

<?
class Foo{
    var $ary = array( 'a', 'b', 'c' );
}

$foo = new Foo();
print_r( $foo->ary );
?>

のようなコードを実行すると、$foo->aryには配列が設定されている
ことが確認できます。

この例以外にも、PEARのクラスやマンモス本のサンプルコードでも
array()を使っているところがあります。


これについて、PHPマニュアルの第13章には

>注意  PHP 4では、変数varについては定数による初期化のみが可能です。

という説明があり、その下の例として

> /* 以下のコードはPHP 4では動作しません。 */
> class Cart
> {
>     var $todays_date = date("Y-m-d");
>     var $name = $firstname;
>     var $owner = 'Fred ' . 'Jones';
>     var $items = array("VCR", "TV");
> }

と言うことで、array()は使えない、との記述になっています。
上記例でdate()や変数や文字列連結はエラーになります。

実際にはarray()は使えていますし、array( array(), array() )の
ような配列の配列でも動作しています。

マニュアルが正しくてたまたま動作しているだけなのか、それとも
array()は使えるがマニュアルが間違っているのかどちらなのでしょう?


-- 
ksk@be.to