使用php类中的配置文件

时间:2013-02-02 07:40:42

标签: php file class config

我是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';
       }
   }
}

?>

我用这种方法看到的问题是,我必须在我想要使用的每个类中手动包含此配置文件,这似乎是多余的。理想情况下,我希望将文件包含在绝对根路径中,然后能够使用任何类中的任何值,但是如果您只需要类外的文件,则该类将无法访问这些值。我也不想创建一个配置类,然后每个需要这些值的类都会扩展配置类。这似乎是多余的。

不确定我是否有意义我只是想要一种简单的方法来在每个类中携带配置值并使用它们而不必输入过多的冗余代码。

提前致谢!

1 个答案:

答案 0 :(得分: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();