2013-02-02 60 views
0

我对PHP OOP是一种新手,但我对OO背后的概念有相当不错的理解。我想要一个配置文件,它具有可以在整个应用程序中使用的通用应用程序数据。很正常,但我不确定如何做到这一点。我不想创建一个类,然后需要这个类,扩展它,或者需要每个类中的配置文件。我的配置文件看起来是这样的:在php类中使用配置文件

<?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'; 
     } 
    } 
} 

?> 

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

不知道我是否很有道理我只是想要一种简单的方法来在每个类中传递配置值并使用它们而不必输入过多的冗余代码。

在此先感谢!

+2

使用引导文件和负载你的配置在里面。 – Havelock

+0

指向一些引导指针的指针:http://stackoverflow.com/questions/3313950/php-bootstrapping-basics – Carl

+0

在顶部包含'config.php',然后访问$ GLOBALS ['config'] ['debug'] any其中 – 2013-02-02 08:27:59

回答

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(); 
+0

我最终看着Wordpresses方法,并且他们使用PHP定义了我最喜欢的帮助! –