質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1047閲覧

[PHP] functionメソッドの中からメンバ変数を参照したい

jonny441d3

総合スコア9

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/08/04 02:49

PHP初心者です。
初歩的な部分で申し訳ありませんが質問させて頂きます。

親のプルダウンの値が変更されたら子のプルダウンメニューを生成する
プログラムを作ろうと思っています。

上部がプルダウン本体、下部がonChangeに対応するイベントの記述になっています。

[ 問題点 ]

functionメソッドgetListの内側から
外側の変数$textを参照したいのですが、
「$text」とした場合はUncaught SyntaxErrorに、
「$this->text」とした場合はUncaught ReferenceErrorとなり
うまく行きません。
変数参照の部分を値そのものに置き換えた場合は問題なく動きます。

PHP

1<body> 2 3<!-----------------連動するプルダウンメニュー----------------> 4 5<?php 6 7require 'bean.php'; 8$bean=new bean(); 9$depList=$bean->getDepartmentList(); 10 11/*親リスト*/ 12echo '<p><select name="department" onChange="createChildOptions()">'; 13echo '<option value="">部門を選択して下さい</option>'; 14 15$count=1; 16foreach($depList as $value){ 17 18 echo '<option value="'.$count.'">'.$value.'</option>'; 19 $count++; 20} 21 22echo '</select></p>'; 23 24//子リスト 25echo '<select id="name" name="name" disabled>'; 26echo'</select>'; 27 28//------------------------親リストの値が変化した時の処理---------------------- 29 30$text="あいうえお"; //子リストの値(getListから参照したい変数) 31 32function getList(){ 33 34 $list=''; 35 for($i=0;$i<=5;$i++){ 36 37 //ここでエラー 38 $list=$list.'<p><option value="">'.$this->text.'</option></p>'; 39 } 40 return $list; 41} 42 43?> 44 45<script type="text/javascript"> 46 47function createChildOptions(){ 48 49document.getElementById("name").removeAttribute("disabled"); //子リスト活性 50document.getElementById("name").innerHTML='<?php echo getList(); ?>'; //子リストの項目を作成 51} 52</script> 53 54</body>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

functionメソッドgetListの内側から

getListはメソッドではない、単なる関数です。

やりたいことは、「オブジェクトは導入せず、このまま動くようにする」ことでしょうか、それとも「プロパティとメソッドを使った、オブジェクト指向のコードに書き直す」ことでしょうか?

投稿2020/08/04 03:00

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jonny441d3

2020/08/04 03:46

ご回答ありがとうございます。 関数とメソッドは同じものと思っていました。 クラスに属さないものが関数、 クラスに属するものがメソッドという認識で正しいでしょうか? 勉強のためにこのまま動かす方法、 オブジェクト指向を取り入れる方法、 両方書いて比較したいと思います。
maisumakun

2020/08/04 03:53

> クラスに属さないものが関数、 クラスに属するものがメソッドという認識で正しいでしょうか? そうですね。PHPでは両者が混ざり合うようなことはないです。
jonny441d3

2020/08/04 04:15

ありがとうございます。 関数の中からglobalキーワードを用いる事で変数$textを参照 する事ができました。 一般的にもこの方法で問題無いでしょうか?
maisumakun

2020/08/04 04:17

> 一般的にもこの方法で問題無いでしょうか? ある程度以上の規模のものを作る場合、そもそもグローバル変数を頼るようなことはしないです。
jonny441d3

2020/08/04 04:32

グローバル変数は多用しない方が良いのですね。 より良いものにする為にはクラスが必要でしょうか?
jonny441d3

2020/08/04 04:41

ありがとうございます。 大変勉強になりました。 色々試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問