[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