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

时间:2011-04-11 12:00:42

标签: php

我是PHP的新手,并尝试以声音为基础启动PHP项目。 我看过很多网站的源代码,并意识到每个人都有不同的看法。

最初我想在配置类中保存我的数据库设置和本地设置,如Dataformate,Currency formate等 在不使用包含的情况下,每个应用程序都可以访问。

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

非常感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

如果我错了,有人可以纠正我,但我不相信你可以在不使用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
}

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

答案 1 :(得分:0)

如果你想在你的应用程序中每次都包含一个文件&amp;假设每个请求都由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有你的配置类/文件。

如果您正在寻找控制器类&amp;正如你所说,你是新人,我建议你阅读

Pro PHP:模式,框架,测试等 Kevin McArthur

它会让您了解如何创建控制器和放大器。 MVC的其他组件

希望这会有所帮助

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

所以在httpd.conf中你可能有

SetEnv CurrencyFormat SomeFormat

你可以在你的代码中访问:

$currencyFormat = getenv('CurrencyFormat');

但是,我不确定你为什么要避免包含?将您的设置本地化到您的应用程序当然更为标准,这意味着包括某些内容,无论您是否真正包含,或者读取某种类型的config.ini。