やりたかった事
フレームワークを使わず生PHPを使用しているWebサイトにおいて・・・
不特定多数のページで同一のものを使う設定を、設定ファイルに記載し使用箇所で参照する。
その設定を、クラスの中でも使いたい。
この定数、クラス定義の中からでも参照できないかな?と考えた。
環境
PHP 5.4
実装例
サーバ内において、
/page.php
というファイルから
/conf/config.php
という設定ファイルおよび
/function/someone.php
というクラスが記載されているファイルを参照すると仮定。
page.php
<?php
//設定ファイルとクラスファイルを参照する
require_once("/conf/config.php");
require_once("/function/someone.php");
//インスタンス作ってメソッド呼び出し
$so = new someOne();
$so->hello();
?>
/conf/config.php
<?php
//設定ファイル。説明に関係有るものだけ記載する。
define(TEXT_REGEX,"/^invalid/");
?>
/function/someone.php
<?php
//クラスの定義(説明用なのでごく単純)
class someOne{
public function hello(){
echo TEXT_REGEX;
}
}
?>
ブラウザでの表示結果
page.phpをブラウザで開くと、確かにグローバル定数の内容が表示される
page.php
/^invalid/
できたけど、致命的な問題があるし、もっと他の方法があったのでやめた
このsomeOneクラスには、致命的な問題がある。
外部の、定義されているかどうかわからない定数を使っているため、変な依存関係があることだ!
(定数が定義されていなければ、エラーを発することになる)
そして、実運用においてはもっと良い方法があった。
なんてことはない。
正規表現処理と判定は、クラスの外側でやればよかった(笑)