クラスの勉強を始めようと思い下記URLのマニュアルを参考にしております。

このQ&Aのポイント
  • クラスの勉強を始めようと思い、参考にしたURLのマニュアルについて疑問があります。
  • 参考にしたマニュアルのExample#1の内容を実行してみましたが、条件に関係なく両方の結果が表示されるので、どちらを表示する基準がわからないです。
  • 他の参考サイトでも同様の内容で説明がなく、初心者にとって基礎の基礎の質問かもしれません。
回答を見る
  • ベストアンサー

クラス

クラスの勉強を始めようと思い下記URLのマニュアルを参考にしております。 http://zapanet.info/phpdoc/language.oop5.basic.html Example#1の内容をコピペして実行したところその通り表示されるのですが issetで$thisを判別しているのになぜ両者の場合を表示するのですか? if文で分岐しているのにどちらも表示されるので基準がわかりません。 他の参考サイト等も見たのですがほぼ同様のソースのみの記述で内容に ついての説明も見当たりませんでした。 初めてなもので基礎の基礎の質問かとは思うのですが宜しくお願い致します。

  • dcx147
  • お礼率33% (214/636)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

呼び方の違いの問題ですね。 「$this is defined (a)」と表示される時は $a = new A(); $a->foo(); が実行されていますし、 「$this is not defined.」と表示される時は A::foo(); が実行されています。 この違いは、インスタンスからメソッドを呼び出したのか、スタティックメソッドとして メソッドを利用したのかになります。 この例は、あまりよくありませんね。 スタティックなのにstaticキーワードがない為、ある意味混乱させて しまいますね。 (通常、このような利用方法は無いと思いますし・・・) http://www.php.net/manual/ja/language.oop5.static.php ぱっと調べたら見つけたサイトがあるので紹介します。 http://www.shigeweb.jp/php/project_p/?page=static§ion=php5oop

dcx147
質問者

お礼

お返事ありがとうございます。 最初からつまづいてしまい意味不明でしたが参考urlを見て勉強してみたいと 思います!詳細の説明もなく困っていたので本当に助かりました^^

関連するQ&A

  • Jqueryの超初心者です

    いつもはコピペで作業しています。 こちらのサイトを参考にサムネイル画像をクリックするとメイン画像が切り替わるページを作成しています。 http://memocarilog.info/jquery/7477 表示されたメイン画像に外部リンクを設定するにはどう記述したら良いでしょうか? お願いします。

  • nl2bの代用関数を何か知っていますか?

    下記のような内容で、input.html:「name="example"」に入力された内容をoutput.html: 「$example」に出力していますが、output.html:の表示が乱れます。nl2brの代用関数を何かご存知の方は、いませんか?複数あれば、複数教えて下さい。 また、下記コードでおかしな部分があれば、指摘してください。 input.html: <textarea name="example"></textarea> output.html: <?php echo nl2br(htmlspecialchars($example, ENT_QUOTES, 'UTF-8')) ?> 参考サイト等も教えて下さい。 よろしくお願いします。

    • 締切済み
    • PHP
  • jQueryでCookieがあるか判別する方法。

    現在ホームページを制作している初心者です。 jQueryでCookieがあるか判別する方法を教えて下さい。 formの入力欄に背景画像を使用しています。 現在jQuery内に記述している内容↓ $('id名') .focus(function() { $(this).css("background", "#fff") }) .blur(function() { if ($(this)[0].value == '') { $(this).css("background", "url(画像名.png) left top no-repeat") } }); 今現在は、 非focus時は画像が表示、 focus時は背景白、 テキスト入力後非focus時は背景白、 という状態で理想どうりなのですが 一度ページを出て、もう一度同じページに入ると 前回入力したものと画像が同時に出力されていて とても見づらい状態です。 jQueryでCookieが残ってない時は画像を表示するという記述をしたいのですが わかりません。 どなたか教えていただけないでしょうか? ちなみに上記のjQueryの記述は、参考サイトでコピペしたものですので 意味は分かってません。

  • XMLのタグの有無をPHPで判定したい。

    example1.xml ----------------------- <item>  <color>red</color>  <omake>candy</omake> </item> ----------------------- example2.xml ----------------------- <item>  <color>black</color> </item> ----------------------- 上記はXMLファイルの2パターンを示したものです。 商品(item)によって、オマケ(omake)があったりなかったりします。 オマケがない時には、タグ自体存在しません。 なので、タグがない時に、そのデータをDOMで取得しようとすると、 エラーが吐かれます。 Notice: Trying to get property of non-object in~~~ 私がしたいことは、 タグがない場合には、値を取得しない。 という分岐をさせることです。 例えば、 $items = $doc->getElementsByTagName('color'); if(isset($items)){echo $items->item(0)->nodeValue;} こんな感じで考えたのですが、ダメでした。 タグが無くても、$itemsはNULLではないため、 if文の中に入ってしまい、 結局、$items->item(0)->nodeValue; を通過しようとして、 Notice: Trying to get property of non-object in~~~ が吐かれます。 ($itemsは、object(DOMNodeList)#3 (0) { }といった内容で、NULLではない。) また、 if(isset($items->item(0)->nodeValue)){  echo $items->item(0)->nodeValue; } のようにすると、 isset()のところで、やはり、 $items->item(0)->nodeValue を通過しようとして、 Notice: Trying to get property of non-object in~~~ が吐かれます。 こういった場合、どうしたら良いのでしょうか。 宜しくお願いします。 (PHP5の環境です。)

    • ベストアンサー
    • PHP
  • type属性とlanguage属性の違い。後者は廃れたのですか??

    http://javascript.eweb-design.com/1212_ac.html このサンプルをそのまま組み込み、「CSE HTML Validater」というHTMLの 文法チェッカにかけてみたら、 > HTML 4.01 and XHTML require the "type" attribute for the "script" > element to specify the scripting language. For example, use > type="text/javascript" for JavaScript. Note that many browsers may > work without this attribute but it is highly recommended that it be > used. と警告が出ました。確か、HTML-Lintでも、何か言われたな、と思い出し、 チェックしてみたら、やはり「<SCRIPT> には TYPE 属性が必要です。」と いわれます。 そこで、上記ページのサンプルの<SCRIPT language="JavaScript">の箇所に、 <SCRIPT language="JavaScript" type="JavaScript">と追記してみたり、 <SCRIPT type="JavaScript">に書き換えてみたりしたら、 関数を呼び出す行がいかん、とスクリプトエラーになってしまいます。 属性を書き換えたことがいけなかったのと気づかす、原因判別に時間を費や してしまい、すっかりハマりました。 確か、language属性の方は古い書き方だとかだったと思いますが、スクリ プトが動かなくなるほど致命的な違いがあるんでしょうか? さらにいうと、別のサンプルで<script language="JavaScript1.2">という 記述を書き換えたときも動かなかった経験があります。 何かお心あたりがあればご教示いただけますと幸いです。

  • Zend_Layoutについて

    下記URLを参考にZend_Layoutを試しているのですが http://akrabat.com/tutorial/simple-zend_layout-example/ sidebar.phtmlで変数を出力する事ってできますでしょうか? 同フォルダのlayout.phtmlやscriptsフォルダのコンテンツを 表示するphtmlでは出力できるのですがこれだけ出力されない 状況です。 class IndexController extends Zend_Controller_Action { public function indexAction() { $this->view->list = '1'; } } それぞれのアクションメソッドに $response->insert('sidebar', $this->view->render('表示したいファイル名.phtml')); と指定してやればいい事ではあるのですが同様のファイルを複数 作成するのは微妙なので・・・ 例えば、sidebar.phtmlで展開し・・・ <ul> <? php if ($this->list == 1) : ?> <li>リスト1</li> <? else if ($this->list == 2) : ?> <li>リスト2</li> <? endif; ?> </ul> のような使用イメージです。 質問内容と若干ずれるのですが表示はZend_LayoutでするのとSmartyを 使うのとどちらがいいのでしょうか? 判断材料がなく困っているので参考までにご意見を伺えますと幸いです。

    • ベストアンサー
    • PHP
  • phpのfor文先頭の式内での0x1、0x2とは

    phpのfor文に関して質問させて頂きます。 phpのリファレンスを見ていて、分からない事があります。 [ PHP マニュアル > 言語リファレンス クラスとオブジェクト ] http://php.net/manual/ja/language.oop5.php こちらの「User Contributed Notes」の14 redrik at gmail dot comの中に、以下のようなfor文があります。 class FlagsEnum extends Enum { public function __construct( /*...*/ ) { $args = func_get_args(); for( $i=0, $n=count($args), $f=0x1; $i<$n; $i++, $f *= 0x2 ) $this->add($args[$i], $f); } } この for( $i=0, $n=count($args), $f=0x1; $i<$n; $i++, $f *= 0x2 ) の部分ですが、結果を見ると、$fの値を2倍しながらループさせるという感じなのですが、それであれば、なぜ for( $i=0, $n=count($args), $f=1; $i<$n; $i++, $f *= 2 ) と書かないのでしょうか? もしかすると値を単純に2倍にしているわけではないのでしょうか? 詳しい方がいらっしゃいましたら、ご教示を宜しくお願いいたします。

    • 締切済み
    • PHP
  • パラフラでパチンコセグ判別ツールの作成

    パラフラを使ってflashを作成したいと思います。 内容はパチンコのセグ判別ツールです。 8つのボタンがあり、指定の場所を押したときに押したボタンの場所に画像を表示させ、押したボタンの組み合わせによって「×」「○」を表示させるようにしたいと思います。 初めてflash作りをするので、何か参考になるようなHPや上記で言ったようなflashのソースを公開しているとこをがありましたら参考にしながら勉強したいので教えてください。

  • バッチでファイルの内容の比較結果からgotoしたい

    「もし、A.txtの中に記述されている内容が、B.txtの中に記述されている内容と等しい時、 AAAにジャンプし、 そうでない場合、BBBにジャンプする」 と言うようなコマンドを書きたいのですが、行き詰まっています。 リダイレクトや比較演算子を使用して作ろうと考えていたのですが、 $>type A.txt では正常に表示される文字列も、 A.txtとB.txtをtypeして両者がequかどうか条件分岐させようとするとうまく行きませんでした。 何か良い方法はないでしょうか?

  • PHPでCGIの処理結果を使うには?

    cgiの処理結果をPHPで使う方法を教えてください。 いろいろ調べてみたのですが、わかりませんでした。 内容としては以下です。 http://xxx.xxx.xxx/xxx.cgi が既にあり、これは共有して使っているものなので、変更できない。 このcgiの処理内容は、引数を渡して、POSTすると、処理結果に応じて、trueかfalseをprintするというものです。 このcgiの処理結果をPHPで受け取り、処理の分岐のための判別に使いたいと考えています。 試したのは、 1.htmlから値を渡してpostする。 →cgiのURLに遷移してtrueが表示される。 2.PHPでheader(Location:)で指定してみる。 →1と同じ です。 どうすればいいのか教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう