[PHP] サンプルコードの趣旨について

今まで、いくつかサンプルコードを掲載してきて気がついたことがあります。
何を根拠にそんなコードを書くの??
これを最初に決めておくべきですよね。

全体のファイル数が少しで収まるようなシステムであればガチガチにclassを乱用しても開発効率が悪くなるだけですし、ファイル数が数百になるような大規模なシステムで数人のチーム体制であればclass無しでの開発は苦しくなると思います。

省けるコードはどんどん省きたい

どの程度のアクセスに耐えられるか?どの程度のスペックのwebサーバを用意できるかも考えに入れる必要があるかもしれません。レンタルサーバーを利用する場合ならなおのこと負荷は少ないに越したことはありません。

例えば、1秒間に100回のアクセスがあるとして、プログラムを1行を削ることができると、【1行分の処理時間 x 100回】分の処理時間を節約できることになります。しかも、PHPでは1行に見えても、内部的には多くのステップが掛かっている場合がありますので、削る場所によっては高い効果を得ることが可能になります。

オブジェクト指向なのか?関数型なのか?

結論としては、両方を混ぜ合わせた形です。
PHPに限らずプログラムには、人間が理解しやすいコードは重くなり、軽くしようとすると人間が理解しづらいコードになる。という特徴があります。
class化のメリットはメンテナンスのしやすさです。つまり人間が理解しやすいコードです。
システム上、複雑な構造になりやすい箇所はclass化してメンテナンス性を確保しつつ、そうでない箇所はclass化しない方向ですすめていきます。

頻繁に使うようなコードはfunction()化し、Utility.phpなどと名前を付けたファイルにまとめます。
間違っても、class Utility{} などとせずに、そのままfunction()だけを書き連ねます。
なお、こんな方法ではやってられない!と言う場合は・・・それって結構、チーム体制で開発してますよね?
中小規模のシステム、また1人で開発するなら大規模のシステムでも経験上、この方法でメンテナンス性を確保できるかと思います。

グローバル変数の使いどころ

$hoge = "hoge";
function getHogeAndFuga($fuga){
  global $hoge;  // こうするとfunctionの外にある$hogeが使える
  return $hoge . $fuga;
}
$ret = getHogeAndFuga("fuga"); // $ret は、 "hogefuga" です

基本的にはグローバル変数はあまり使用するべきではありません。
なぜなら訳が分からなくなるから。
でも、グローバル変数を利用するメリットのほうが大きいのであれば、無理やり他の方法を用いずに素直にglobal変数として使えばよいと思います。
但し、最低限のルールは作っておくべきです。
例えば、変数名は、$_G_HOGE のように、$_G_ で始めるとか、グローバル化する可能性のある変数は、ある特定のファイルの中で必ず初期化とコメントを書くなどです。

広告