[PHP-users 22897]Re: クラスのメンバ変数の定義

neweb junneko @ ma.neweb.ne.jp
2004年 8月 2日 (月) 11:16:13 JST


こんちは、yoshi です。

> これは私の例の$arrayを分解したものなので、まだいいのですが、
> $nameとか$selectedなどがメンバ変数に入るのか否かの根拠が、
> オブジェクト指向に関する解説書なども読んでみたのですが、全く分からないでいます。

PHP4の場合、未定義であっても、アクセス時にメンバ変数が暗黙的に作成されま
す。
(軽いスクリプト系の言語 には割とよくある仕様だとと個人的には思います)

print_r を使って、インスタンスの中身を見てみるとなお分かるのではないでしょうか。

では。



On 2 Aug 2004 02:32:46 +0900
<hogehoge77 @ excite.co.jp> wrote:

> こんばんは。
> 吉村と申します。
> クラスの勉強を始めたのですが、概念的な理解の段階で躓いてしまいました。
> ご教授頂けたらと思います。
> 
> 下は試しにと自作で作ったプルダウンメニューを生成するクラスです。
> 例えば、<select JavaScriptな記述>みたいなことをしたい時に
> 継承して、使い回せるという意味では、
> 関数ではなくて、クラスを作った甲斐はあるなあ、と思っています。
> ここまではクラスの利点を自分では理解しているつもりです。
> 
> <?php
> class HTML_Pulldown
> {
>     var $name;
>     var $array;
>     var $selected;
>     
>     function HTML_Pulldown($name, $array, $selected = '')
>     {
>         $this->name = $name;
>         $this->array = $array;
>         $this->selected = $selected;
> 
>         $this->printPulldown();
>     }
> 
>     function printPulldown()
>     {
>         $this->printSelect();
> 
>         foreach ($this->array as $key => $this->value) {
>             print "<option value=\"$key\"";
>             if ($this->selected) {
>                 if ($key == $this->selected) {
>                     print " selected";
>                 }
>             }
>             print ">";
>             $this->printValue();
>             print "</option>\n";
>         }
>         print "</select>\n";
>     }
> 
>     function printSelect()
>     {
>         print "<select name=\"$this->name\">\n";
>     }
> 
>     function printValue()
>     {
>         print "$this->value";
>     }
> }
> 
> $year  = array(""=>"", 2001=>"2001", 2002=>"2002", 2003=>"2003", 2004=>"2004");
> new HTML_Pulldown("year", $year, 2002);
> 
> ?>
> 
> 躓いているのはメンバ変数についてです。
> ネットでJAVAなどを例にしたページの解説では、
> オブジェクトに対する「属性」というような概念であると私は捉えたのですが、
> 
> class HTML_Pulldown
> {
>     function HTML_Pulldown($name, $array, $selected = '')
>     {
>         $this->name = $name;
>         $this->printSelect();
> 
>         foreach ($array as $key => $value) {
>             print "<option value=\"$key\"";
>             if ($selected) {
>                 if ($key == $selected) {
>                     print " selected";
>                 }
>             }
>             print ">";
>             $this->printValue();
>             print "</option>\n";
>         }
>         print "</select>\n";
>     }
> 
>     function printSelect()
>     {
>         print "<select name=\"$this->name\">\n";
>     }
> 
>     function printValue()
>     {
>         print "$this->value";
>     }
> }
> 
> という様にメンバ変数を全くはしょってしまっても結果は同じですよね。
> 
> またPEARのHTML_Selectをハックしてみたのですが、
> メンバ変数部分は
> var $_options = array();
> var $_values = array();
> となっていました。
> 
> これは私の例の$arrayを分解したものなので、まだいいのですが、
> $nameとか$selectedなどがメンバ変数に入るのか否かの根拠が、
> オブジェクト指向に関する解説書なども読んでみたのですが、全く分からないでいます。
> 
> メンバ変数部分に限らず、添削して頂けたらと思っております。
> よろしくお願い致します。
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3

-- 
neweb <junneko @ ma.neweb.ne.jp>



PHP-users メーリングリストの案内