※ ChatGPTを利用し、要約された質問です(原文:phpのクラスについて)
phpのクラスについて
このQ&Aのポイント
phpのクラスについて学習中の私が、オブジェクト指向を使ってセキュリティやエラー対策をまとめようとしていると、エラーが発生しています。関数では正常に動いていたのですが、クラスのメソッドにするとエラーが出てしまいます。
関数であったときは正常に動いていたセキュリティやエラー対策のプログラムを、クラスのメソッドにまとめたいと思っています。しかし、メソッドの引数の受け渡しや結果の受け取りについて、理解が足りていないため、うまくいっていません。
オブジェクト指向を学ぶために、関数をクラスにまとめようとしていますが、うまくいっていません。クラスを使う必要があるのか、関数のままにしておくべきなのか迷っています。
phpで会員制サイトの制作を勉強しています。
データベースへはPDOで接続しています。
MySQLデータベースを使用しています。
現在、クラスを作成してみようとオブジェクト指向について学習しています。
試しに、既に作ってあった、POSTされた文字列をhtmlspecialcharsやfilter_inputするようなセキュリティやNoticeエラー対策に使うプログラム関数を
class Checkのメソッドとしてまとめようとしています。
関数にしていたときは正常に動いたのですが、
クラスのメソッドにするとFatal error: Cannot use object of type Check as array in ~というエラーが出てしまいます。
恐らく、引数の受け渡し($_POSTの値の受け渡し)の時点でうまくいっていないのか、
私的には、メソッド結果の受け取りがあまり理解できていないので、
メソッド結果の値を配列で返すのがうまくいっていないのだと思います。
<関数>
function postFilter($before)
{
foreach($before as $key=>$value)
{
$after[$key] = filter_input(INPUT_POST, $key);
}
return @$after;
}
*呼び出し*
$post = postFilter($_POST);
$email = $post["email "];
<クラス>
class Check {
public function エスケープ処理 {
エスケープ処理のメソッド
}
//POSTで受け取ったものをfilter_inputでフィルタリング
public function filterPost($before){
foreach($before as $key=>$value)
{
$after[$key] = filter_input(INPUT_POST, $key);
}
return $after;
}
・
・
・
}
*呼び出し*
$post = new Check();
$post -> filterPost($_POST);
$email = $post ["email "];
そもそもクラス化する必要がない気がして、関数のままにしておこうかと思ったのですが、
オブジェクト指向はどのプログラムを学ぶにあたっても、重要だと思い、
わからないまま放置したくないので質問しました。
添削いただけませんでしょうか?
よろしくお願いします。
お礼
ご回答ありがとうございます。 確かに使用頻度の高い関数の関数名は短くするべきですね。 また、filter_inputのご指摘とフレームワーク学習のお勧めありがとうございます。 参考URL、大変助かります!