• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPコードのクラス化と呼び出し方)

PHPコードのクラス化と呼び出し方

このQ&Aのポイント
  • クラス化と呼び出し方についての質問です。パラメータ値を渡してメッセージ文字列を表示する処理をクラス化したいのですが、期待する動作をしてくれません。
  • 値は返ってきているように見えますが、「Object」となっています。本当は「test」と表示されるべきですが、なぜか違う結果になります。
  • どこが悪いのかご指摘を頂ければと思います。現在作成中のコードを以下に載せます。

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

  • ベストアンサー
  • asahina02
  • ベストアンサー率47% (95/202)
回答No.1

まず1点は  Messageクラスのコンストラクタですが、   function Message( $ErrorID ) {  という形式が正しいのではないかと。 次に関数ErrorMessage内の記述   switch( $this->ErrorID ) {  という書き方が正しいのではないかと。 最後に印刷されるメッセージについて  print $index;  これでは印刷しているのは$index自体(すなわちtestというクラス)を印刷しています。  "test"という文字が印刷されるには  print $index->ErrorMessage();  となります。  注:上の2点を修正した後にこの文で「test」という文字が印字されます。

atlas112
質問者

補足

ご回答ありがとうございます。 ご指摘の通り改修しましたが、今度は「object」文字列も表示されなくなりました。何か見落とした部分があるのでしょうか? --------------------------------------------------------------- [index.php] -<?php - include_once("message.php"); - class test extends message { - } - - $index = new test("1"); - print $index -> ErrorMessage(); - ?> ------------------------ [Message.php] -<?php - class Message { - function Message($ErrorID) { - $this -> ErrorID = $ErrorID; - } - - function ErrorMessage() { - switch($this -> ErrorID) { - case 1: - $str = "test"; - return $str; - default: - print("Error:予期せ-ぬエラーです。管理者へ連絡して下さい。"); - exit; - } - } - } -?> ---------------------------------------------------------------

その他の回答 (2)

  • asahina02
  • ベストアンサー率47% (95/202)
回答No.3

修正されたものを自環境にコピペするとちゃんと出ますね・・ 何かPHPのバージョンによって動作が違うようなものがあるのでしょうか。 ちなみに  print_r( $index ); と入れるとどのように印字されますか?

atlas112
質問者

お礼

ご指摘ありがとうございました。 問題解決しましたm(_ _)m ご協力感謝します。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

転記するときのミスかもしれませんがphp5のコンストラクタは __construct と先頭に2個の_になります。 それと private $ErrorID; のようにプロパティの定義をしておいた方がいいと思います。

atlas112
質問者

お礼

ご指摘ありがとうございます。 バージョンの違いも頭に入れておかないといけないですね。 以後気を付けたいと思います。 問題は解決しました。 ご協力ありがとうございました。

関連するQ&A