0

私は PHP OOP の初心者ですが、OO の背後にある概念についてはかなり理解しています。アプリケーション全体で使用できる一般的なアプリケーション データを含む構成ファイルが必要です。かなり普通ですが、これを行う方法が正確にはわかりません。クラスを作成したくないので、そのクラスを必要とし、それを拡張し、すべてのクラスで構成ファイルを必要とします。私の設定ファイルは次のようになります。

<?php

$configs = array(
   'pagination' => 20,
   'siteTitle' => 'Test site',
   'description' => 'This is a test description',
   'debug' => true
);

?>

これを行うために私が考えることができる唯一のことは次のとおりです。

<?php 

class user {
   public function __construct() {
       require 'config.php';
       if(configs['debug']) {
           echo 'Debugging mode';
       }
   }
}

?>

この方法で見られる問題は、使用するすべてのクラスにこの構成ファイルを手動で含める必要があり、冗長に見えることです。理想的には、ファイルを絶対ルート パスに含めて、任意のクラス内の任意の値を使用できるようにしたいと考えていますが、単にクラス外のファイルが必要な場合、クラスは値にアクセスできません。また、構成クラスを作成したくないので、値を必要とするすべてのクラスで構成クラスを拡張します。繰り返しますが、冗長に思えます。

私が意味を成しているかどうかはわかりませんが、すべてのクラスで構成値を保持し、過度に冗長なコードを入力することなくそれらを使用する簡単な方法が必要です。

前もって感謝します!

4

1 に答える 1

0

あるクラス (config.php) で変数を宣言し、それを別のクラスで使用するのは悪い習慣です。構成ファイルから構成配列を返す必要があります。必要に応じて、それを変数に割り当てるか、引数として渡すことができます。

次のようなことを試してください:

config.php:

<?php
return array( /* ... config values ... */ );

user.php:

<?php
class User { 
    private $config;

    public function __construct(array $config) {
        $this->config = $config;
        if ($this->config['debug']) {
            // debug
        }
    }

    public function someOtherMethod() {
        if ($this->config['debug']) {
            // debug
        }
    }
}

呼び出しコード:

<?php
$user = new User(require 'config.php');
$user->someOtherMethod();
于 2013-02-02T08:01:49.840 に答える