• ベストアンサー

クラス内の変数にメソッドからアクセスできない。

JaneDueの回答

  • ベストアンサー
  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.1

クラス内の変数・関数にアクセスするには $this-> を付けます print $this->b; http://jp2.php.net/manual/ja/language.oop5.basic.php カテ違い 今後は [技術者向]コンピューター >プログラミング > PHP になさるとよいでしょう。

h_mp
質問者

お礼

ありがとうございます。 今後そういたします。

関連するQ&A

  • クラス内での二次元配列への値の代入について

    以下のソースで、配列変数$a[0][0]にbを代入して、メソッドprintAでそれをprintしようとしていますが、"Parse error: syntax error, unexpected '$a' (T_VARIABLE), expecting function (T_FUNCTION) in C:\xampp\htdocs\a.php on line 4"というエラーが出ます。 どうすれば、$a[0][0]にbを代入して、メソッドprintAでそれをprintできるか教えてください。 phpのバージョンは5.5.15です。 <?php class A{ private $a = array(); $a[0][0] = 'b'; function printA(){ print $this->a[0][0]; } } $x = new A(); echo $x->printA(); ?>

    • ベストアンサー
    • PHP
  • クラスと文法とエラー。なぜこの出力

    <?php $chk = new nanikore(); class nanikore{ var $queryY; var $queryZ; function nanikore(){ $this->$queryY = array( "name" => "test1"); $this->$queryZ = array( "name"=> "test2" ); print_r( $this->$queryY ); } } ?>この実行結果が以下になるのはなぜですか?orz 特に以下の部分が理解できません Array ( [name] => test2 ) こうなるつもりなのですが・・・。Noticeエラーのせいなのでしょうか あとなぜノーティスエラーがでるのでしょうか。。よろしくお願いします Array ( [name] => test1 ) //////////////////////////////////////////////////////////// Content-type: text/html X-Powered-By: PHP/4.3.6 <br /> <b>Notice</b>: Undefined variable: queryY in <b>F:\nanikore.php</b> on line <b>8</b><br /> <br /> <b>Notice</b>: Undefined variable: queryZ in <b>F:\nanikore.php</b> on line <b>9</b><br /> <br /> <b>Notice</b>: Undefined variable: queryY in <b>F:\nanikore.php</b> on line <b>10</b><br /> Array ( [name] => test2 )

    • ベストアンサー
    • PHP
  • PHPの変数未定義エラー

    <p>PHPのテストです。</p> <p> <?php print $name.'さん<br />'; ?> </p> と入れてみましたが僕の場合は ------------------------------------------------------------------------ PHPのテストです。 Notice: Undefined variable: name in C:\Program Files\Apache\Apache24\htdocs\sample3-1.php on line 17 さん ------------------------------------------------------------------------- となってしまいました。$name = NULL;をあらかじめ入れておけばこのページのように ------------------------------------------------------------------------- PHPのテストです。 さん ------------------------------------------------------------------------ となってくれます。この違いはバージョンなどの違いでしょうか?

    • ベストアンサー
    • PHP
  • PHP 下記エラーメッセージの解消について

    下記PHP エラーメッセージの解消方法と、正常にプログラムが動くための簡単なスクリプトも添えていただければ幸いです。よろしくお願い申し上げます。 ■エラーメッセージ (1)Notice: Undefined variable: error in C:\xampp on line 66 (2)Notice: Undefined variable: error in C:\xampp on line 69 ■スクリプト <body> <h1>ログインする</h1> <form action="" method="post"> <dl> <dt>メールアドレス</dt> <dd> ⇒(ここからPHP文です) <input type="text" name="email" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['email']); ?>" /> <?php if ($error['login'] == 'blank'): ?> <p class="error">* メールアドレスとパスワードをご記入ください</p> <?php endif; ?> <?php if ($error['login'] == 'failed'): ?> <p class="error">* ログインに失敗しました。正しくご記入ください。</p> <?php endif; ?> ⇒(ここまでPHP文です) </dd> <dt>パスワード</dt> <dd> <input type="password" name="password" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['password']); ?>" /> </dd> ......省略 </form> なのですが、 下記エラーメッセージが出てしまいます。 (1)Notice: Undefined variable: error in C:\xampp on line 66 (2)Notice: Undefined variable: error in C:\xampp on line 69 これは、上記スクリプトのPHP文を指しております。 どのように初期化をすればよいかわからず、ここで立ち止まっておりました。 ☆どうすればこのエラーメッセージを解消でき、また、本スクリプトが正常に作動しますでしょうか? ☆初期化のためのスクリプトを添えて頂ければ嬉しく思います。 みなさまのお力を貸して頂ければ幸いでございます。 よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • クラスの継承、メソッドのオーバーライド

    ↓の問題が全然わかりません。 問題:サブクラスのsiki2にax2+bx+c=0(b2-4ac>0)とコンストラクタ を定義して、スーパークラスのsiki1にax+b=0とコンストラクタを定義し、解を求めるkaiメソッドを定義する という問題です。途中のプログラムを↓に書きました。 スーパークラス class houteisiki1{ private int kai; private int a; private int b; private int x; //コンストラクタ houteisiki1(int s, int d, int e, int f){ solve=s; a=d; b=e; x=f; } //kaiメソッド kai=(a*x)+b; } サブクラス class houteisiki2 extends houteisiki1{ static int kai(int a, int b, int c, int x){ kai=(a*x*x)+(b*x)+c; if((b*b)+(-4*a*c)>0){ return kai; }else{ println("エラー"); } } } テストクラス class test{ public static void main(string[] args){ ここまで作りましたが、解らなくなりましたので教えてください。 まだ、JAVAを勉強して日が浅いので解りやすく教えてください。

    • ベストアンサー
    • Java
  • スーパークラスからサブクラスのメソッドを使おうとする、以下のプログラム

    スーパークラスからサブクラスのメソッドを使おうとする、以下のプログラムでつまずいています。 Aを継承したB、Cクラスのインスタンスを作成し、スーパークラスであるA型の配列asにまとめます。 それからループでas[i]にはいっている各インスタンスのメソッドを使いたいのですが、 スーパークラスAにmethod()がないためコンパイルできません、Aにmethod()を作るとA.method()が実行されます。 BとCを同じ配列に保存し、かつそれぞれのmethod()を実行したい場合どのようにしたら良いのでしょうか。 ご教授ください、どうぞよろしくお願いします。 class Main{ private B b; private C c; private A[] as = new A[2]; void mainMethod(){ as[0] = b = new B(); as[1] = c = new C(); for(int i=0; i<3; i++){ as[i].method(); } } } class A{} class B extends A{ void method(){ System.out.print("It is B"); } } class C extends A{ void method(){ System.out.print("It is C"); } }

  • $_POST変数が受け取れない。

    いつも大変お世話になり誠にありがとうございます。 度々申し訳ございません。 標記の件。 $_POST変数が受け取れません。 一昨日はこれで行けたと思ったのですが var_dump()で調べたらNULLでした。 どうして$_POST変数が受け取れないのでしょうか? すみません。どうか教えてください。 エラーメッセージは Warning: Undefined array key "name" in C:\xampp\htdocs\blog_create.php on line 11 Warning: Undefined array key "title" in C:\xampp\htdocs\blog_create.php on line 12 Warning: Undefined array key "category" in C:\xampp\htdocs\blog_create.php on line 13 Warning: Undefined array key "content" in C:\xampp\htdocs\blog_create.php on line 14 ペンネームブログタイトルカテゴリー 本文 です。 コードは form.php <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){} ?> <h2>ブログフォーム</h2> <form action="/blog_create.php/" method=_POST> ペンネーム<br> <input type="text" name="title"><br> ブログタイトル<br> <input type="text" name="title"><br> カテゴリー<br> <input type="text" name="title"><br> ブログ本文<br> <textarea name="content" id="content" cols="50" rows="80"></textarea><br> <input type="submit" value="確認ページへ"> </form> <p><a href="/">戻る</a></p> </body> </html> blog_create.php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blog</title> </head> <body> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); //$post_at = $_POST["post_at"]; echo "ペンネーム{$name}"; echo "ブログタイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <input type="submit" action="/kanryou.php" value="送信する"> </body> 後退してしまいました。 すみません。 ご回答のほど何卒宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • PHPのprivate関数について

    PHPのアクセス修飾子privateについてお聞きします。 以下のようなコードを書いて実行したら、エラーメッセージが出ました。 code: <?php class Super { protected function protectedFunc(){ echo "original-Protected\n\r"; } private function privateFunc(){ echo "Private\n\r"; } public function publicFunc(){ privateFunc(); } } $super = new Super; $super->publicFunc(); ?> error message: Fatal error: Uncaught Error: Call to undefined function privateFunc() in C:\xampp\htdocs\HTML_practice\protected-practice.php:12 Stack trace: #0 C:\xampp\htdocs\HTML_practice\protected-practice.php(17): Super->publicFunc() #1 {main} thrown in C:\xampp\htdocs\HTML_practice\protected-practice.php on line 12 line12 というのは、public 関数であるpublicFunc() の内側で、private関数のprivateFunc() を使おうとした部分ですが、private関数はクラス定義の中だから使えるというのは間違った認識でしょうか? だとするとprivate関数はいつどんな時に使えるのでしょうか? どなたか例を挙げて説明頂けないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • RubyのDateクラスのメソッドが見つからない

    先日よりRubyでのプログラミングを始めてみたのですが DateクラスのDate::MOTHNAMESを参照しようとしたところ undefined method `MOTHNAMES' for Date:Class (NoMethodError) と返ってきてしまいました。 ほかにもDate::exist?メソッドもためしてみましたが、同じ様なコメントが 返ってきました。 undefined method `exist?' for Date:Class (NoMethodError) なお、 Date.newなどはつかえています どういった問題でどのように解決すれば良いのか、ご教示願えればと思います。 バージョンは ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0] で、Mac OSX Lionで動かしています。

  • 特殊な連想配列について

    どなたか教えてください。 $_REQUESTを使用した部分に警告が出て正しく表示されません。 参考にしたサンプルソースの説明書にはPHP5.2.6と書いてあったのですが、 私の環境は5.3ですのでそれが起因しているような気がするのですが、ググっても 全くわかりません。 if($_REQUEST(["xxx"]) != "" ) のような記述部分が全て Notice: Undefined index: xxx in C:\xampp\htdocs\abcde\test.php on line 49 のようになります。 よろしくお願いいたします。

    • ベストアンサー
    • PHP