LoginSignup
0
0

More than 5 years have passed since last update.

(できるけど望ましくなさそう)生PHPにて、クラスの外部からグローバル定数を参照

Posted at

やりたかった事

フレームワークを使わず生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クラスには、致命的な問題がある。
外部の、定義されているかどうかわからない定数を使っているため、変な依存関係があることだ!

(定数が定義されていなければ、エラーを発することになる)

そして、実運用においてはもっと良い方法があった。
なんてことはない。

正規表現処理と判定は、クラスの外側でやればよかった(笑)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0