- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPコードのクラス化と呼び出し方)
PHPコードのクラス化と呼び出し方
このQ&Aのポイント
- クラス化と呼び出し方についての質問です。パラメータ値を渡してメッセージ文字列を表示する処理をクラス化したいのですが、期待する動作をしてくれません。
- 値は返ってきているように見えますが、「Object」となっています。本当は「test」と表示されるべきですが、なぜか違う結果になります。
- どこが悪いのかご指摘を頂ければと思います。現在作成中のコードを以下に載せます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
まず1点は Messageクラスのコンストラクタですが、 function Message( $ErrorID ) { という形式が正しいのではないかと。 次に関数ErrorMessage内の記述 switch( $this->ErrorID ) { という書き方が正しいのではないかと。 最後に印刷されるメッセージについて print $index; これでは印刷しているのは$index自体(すなわちtestというクラス)を印刷しています。 "test"という文字が印刷されるには print $index->ErrorMessage(); となります。 注:上の2点を修正した後にこの文で「test」という文字が印字されます。
その他の回答 (2)
- asahina02
- ベストアンサー率47% (95/202)
回答No.3
修正されたものを自環境にコピペするとちゃんと出ますね・・ 何かPHPのバージョンによって動作が違うようなものがあるのでしょうか。 ちなみに print_r( $index ); と入れるとどのように印字されますか?
質問者
お礼
ご指摘ありがとうございました。 問題解決しましたm(_ _)m ご協力感謝します。
- php504
- ベストアンサー率42% (926/2160)
回答No.2
転記するときのミスかもしれませんがphp5のコンストラクタは __construct と先頭に2個の_になります。 それと private $ErrorID; のようにプロパティの定義をしておいた方がいいと思います。
質問者
お礼
ご指摘ありがとうございます。 バージョンの違いも頭に入れておかないといけないですね。 以後気を付けたいと思います。 問題は解決しました。 ご協力ありがとうございました。
補足
ご回答ありがとうございます。 ご指摘の通り改修しましたが、今度は「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; - } - } - } -?> ---------------------------------------------------------------