PHP5.3までは、constはクラス内でしか使えず、グローバルには使えませんでした。
使えるのは、コンスタントなオプションを設定したいときや、そのクラスに属する設定をしたいときでした。
あ、enumを作成したいときも使いますね。
defineも同様に使えますが、一番の違いはグローバルに使えるところです。
アプリケーション全体に影響するようなグローバル設定をする際に、defineを使用します。
constの使い方の良い例は、マジックナンバーをなくすために使用することです。
たとえば、PDOクラスの定数を見てみましょう。
fetchの種類を特定するには、
PDO::FETCH_ASSOC
と書きます。
constを使えないとしたら、35とか、FETCH_ASSOCが定義されている通りに書いていくことになります。
しかし、読む方からしたら、この数字に何の意味があるのかわからず、
理解するのが難しくなってしまいます。
それに対してdefineは、アプリケーションのルートパスであったり、ライブラリのバージョンであったりを特定するのが良い使い方だと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。