存储数据库和本地配置设置的最佳位置


Best place to store Datebase and Local Config setting

我是PHP的新手,并试图开始一个PHP项目与良好的基础。我看过很多网站的源代码,发现每个人都做得不一样。

最初我想保存我的数据库设置和本地设置,如Dataformate,货币格式等在配置类它可以在任何地方的应用程序中访问,而不需要使用include。

我将需要一个好的控制器类,我不想使用任何框架!

提前感谢您的帮助

如果我错了,有人可以纠正我,但我不相信你可以不使用include设置PHP变量,即使你可以,这将是一个糟糕的主意。如果这是可能的,任何以后维护你的代码的人都会非常困惑。

可以做的是,它创建一个__autoload函数(参见:http://php.net/manual/en/language.oop5.autoload.php),当你需要它时,它会加载一个带有变量的类。然而,这比仅仅包含文件要昂贵得多。

如何创建自动加载器

index . php:

<?php
include("autoloader.inc.php");
$vars = new settings(); //this procs the __audoload() function

autoloader.inc.php:

<?php
function __autoload($class) {
    include $class . '.php';
}

settings.php:

<?php
//settings functions
date_default_timezone_set('America/Los_Angeles');
//... more stuff

//variable container class
class settings {
    public static $dbuser = "billybob";
    //... more stuff
}

自动加载器的优点是,如果您不总是需要这些信息,则可以避免在不需要时加载设置文件。或者根据需要加载其他类

如果你想在应用程序中每次都包含一个文件&假设每个请求都由index.php处理,您可以这样做

$lib_paths = array();
$lib_paths[] = "c:/web/htdocs/appname/lib";  // you can more paths in this array
$inc_path = implode(PATH_SEPARATOR, $lib_paths);
set_include_path($inc_path);

假设lib有你的配置类/文件。

如果你正在寻找一个控制器类&你说你是新来的,我建议你读

Pro PHP: Patterns, Frameworks, Testing and More by Kevin McArthur

它会告诉你如何创建你的控制器&MVC的其他组件

希望能有所帮助

将所有配置变量存储到ini或yaml文件(web服务器的不可访问路径)。我更喜欢Yaml文件。因为它比ini更舒适。

读取ini文件,可以使用php中的parse_ini_file()函数。对于yaml,使用symfony yaml组件。

创建一个基本配置类来读取它。

如果运行apache,可以使用SetEnv设置一个变量,该变量将在任何php脚本中使用getenv()来访问它。

在httpd.conf中可能会有

SetEnv CurrencyFormat SomeFormat

,你可以在你的代码中像这样访问:

$currencyFormat = getenv('CurrencyFormat');

然而,我不确定你为什么要避免include?本地化你的设置到你的应用当然是更标准的,这意味着包括一些东西,不管你是否做一个真正的包括,或者读一个config.ini之类的。