さまざまな言語仕様に ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
79:nobodyさん 08/12/12 15:52:28 実際違うんだから仕方がない。 80:nobodyさん 08/12/12 16:25:40 つうか、このオブジェクトの挙動について、元々知ってた人はどのくらいいる? いるとしたら、どうやって知った? これをPHPマニュアル読んで知った人って、一人でもいる? 81:nobodyさん 08/12/13 00:40:30 おお!勉強になります!もっとやれ!!!…いや、みんなで考えよう(・∀・) 82:nobodyさん 08/12/13 06:10:54 憶測: PHPの由来はHTML文書中で簡単に<?php echo $hoge;?>するのが目的だったので、 変数は宣言せず、最初に代入等がおおなわれた時に作成される。 というのが基本仕様で、昔のマニュアルでは見かけたことがある。 これは、現在のマニュアルの「変数」のページにも PHPでは変数を初期化する必要はないが、という控えめな表現で触れてある。 PHP4で導入されたクラス・オブジェクトでもそのことは変わらず、 メンバー変数の宣言はできるものの、実際のところ、代入によって 変数が育成されるという仕様に変更はなかった。 PHP5になって、public,protected,privateの区別を宣言できるようになったが、 宣言がない、もしくはvarで宣言された場合、PHP4互換となる。 また、PHP5ではクラス用のマジックメソッドが用意された。 これにより、宣言していないメンバー変数に対してオブジェクトからアクセスすると、 メンバー変数が作られるという"仕様"が結果的に発生する。 しかし、制御したい場合は__setでreturn null;なり例外を発生させることで、 宣言していないメンバー変数を使わせないというシステム仕様は実現できるので、 特に不自由することはない。 おもしろいのは、前者の仕様で運用すると、同じクラスから発生したオブジェクトなのに、 なのに、メンバー変数一覧に差異が生じ、get_object_varsでクエリを自動育成などを やろうとすると、不具合の原因になるが、それは仕様の乱用と考えるのが妥当か。 ながーい、憶測ですんまそん。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5210日前に更新/45 KB
担当:undef