※ ChatGPTを利用し、要約された質問です(原文:処理をデータとして定義する方法)
PHPで処理をデータとして定義する方法はある?
このQ&Aのポイント
PHPで処理をデータとして定義する方法はあるのか?質問者はJavaScriptで行っているような処理の追加や編集をif文などの分岐を使わずに行いたいと考えている。
質問者は、JavaScriptでは容易に実装できるが、PHPではどう書けばいいかわからず困っている。
もし存在すれば、その実装方法を教えてほしいと質問者は求めている。もし存在しない場合は、それを断言する情報も欲しいとしている。
文章ではうまく説明できないのですが、例えばJavaScriptで以下のような感じの処理をPHPでやるにはどうしたらいいかということです。
var algos = {
md5 : function(input) {…},
base64enc : function(input) {…},
originalHashA : function(input) {…},
originalHashB : function(input) {…}
};
var v = document.getElementById("selectAlgos");
var input = document.getElementById("input");
var result = algos[v](input);
画面で選択されたアルゴリズムで処理をするという感じです。例としてHash系を上げましたが、それに限るわけではありません。今の私のPHP力で実装しようとすると、if文が羅列する処理になってしまいます…。
これだとアルゴリズムが追加されるたびにif文を追加するなど処理を修正しなければなりません。しかしそうではなく、あくまでもデータの追加のみで済ませたいと思っています。宗教的な思想の違いに過ぎないかもしれませんが、algos内の処理を追加・編集するのは問題ないということです。別の見方をすると、「if文などの分岐を使わずに処理を分岐する」と考えてもいいと思います。
JavaScriptではよくやっていることだし簡単に実装できるのに、PHPではどう書いたらいいかわからずもやもやしています。
PHPで処理をデータとして定義する方法はありますか?
あるとしたらどのように実装するのでしょうか?
※もしないなら「ない」と断定してくだされば、あきらめがつきますのでそのような情報も助かります。
よろしくお願いします。
お礼
あ、これでいいんですね。このようなコードはPHPではみたことがなかったのでできないのだと思い込んでいました。 参考になりました。ありがとうございました