処理をデータとして定義する方法
文章ではうまく説明できないのですが、例えば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で処理をデータとして定義する方法はありますか?
あるとしたらどのように実装するのでしょうか?
※もしないなら「ない」と断定してくだされば、あきらめがつきますのでそのような情報も助かります。
よろしくお願いします。
お礼
ありがとうございました。 参考URL大変勉強になりました。