PHPで即時関数を実行して可読性アップ!call_user_func の使い方

PHPで即時関数を実行して可読性アップ!call_user_func の使い方

こんにちは。家系ラーメンを食べるときは必ずかため油少なめにするkojikenです。

PHPでも即時関数が実行できるって知ってました?

PHPは未だにWEB開発においてメジャーな言語ですが、規模の小さいサイトだとフレームワークを使わず、そのままHTMLに直書きすることが多いかと思います。それはそれでいいのですが、大量にグローバル変数が宣言され、変数名がバッティングする問題も起きやすい。

自分が書いたコード以外のファイルで、同じ名前の変数が宣言されていたら、上書きされてしまいますし、予期しない結果を出力することに。

そんな問題も関数で囲むことで解決します。

即時関数としての使い方

このようにそのままループすると、$value の値が残ってしまいますが、

無名関数で囲むことでそのようなバッティングを避けることができ、複数人で開発する場合も競合しにくいかと思います。

今書いているPHPの処理に、無名関数で囲うだけで、どこからどこまでの処理か分かりやすくなり、可読性が大きくアップしますよ。

ぜひ、call_user_func をふんだんに使ってみてはいかがでしょうか。

以下は補足になります。

PHP 7.0~は上記のような書き方も可能になり、より直感的に使いやすくなりました。

即時関数だけでなくコールバック関数としての使い方も

call_user_func は無名関数を引数にとって即時関数のような使い方だけでなく、1番目の引数にコールバックしたい関数を指定し、2番目の引数でコールバック関数の引数を指定するといった使い方も可能。

余談ですが、call_user_func を用いて動的に関数を呼ぶことで、以下のように2つの関数の実行速度を比較することもできます。

実行してみると分かりますが、for 文よりも foreach の方が若干処理が早いです。

最後に

いかがでしたでしょうか?

HTMLに混じって大量のPHPコードが書かれていて、分かりにくい・・・という方にはかなり役立つと思います。

それに変数が全てグローバルですと無法地帯ですからね。是非取り入れてみてはどうでしょう。

それでは !


Previous: WordPress開発:記事関連データベース基本構造と検索解析 Next: 購買意欲を刺激させる!上手な料金の見せ方いろいろ

© 2017 ALL CONNECT Inc. All Rights Reserved.