Php “放置在何处”;“设置”;框架结构
这更像是一个概念性的问题。假设你有一个PHP框架来运行一个通用的网站。 当然,您可以通过设置来调整框架行为,问题是:在哪里放置这些设置更自然 我的框架由一些函数组成,这些函数可以帮助我完成一些任务(例如缓存管理) 在这个fw中,我使用了一个通用变量Php “放置在何处”;“设置”;框架结构,php,frameworks,programming-languages,specifications,Php,Frameworks,Programming Languages,Specifications,这更像是一个概念性的问题。假设你有一个PHP框架来运行一个通用的网站。 当然,您可以通过设置来调整框架行为,问题是:在哪里放置这些设置更自然 我的框架由一些函数组成,这些函数可以帮助我完成一些任务(例如缓存管理) 在这个fw中,我使用了一个通用变量 $config = array( 'setting1'=>'value1' etc ); 如果函数需要,它会执行一个全局: function manageCache() { global $config; //> pe
$config = array( 'setting1'=>'value1' etc );
如果函数需要,它会执行一个全局:
function manageCache() {
global $config;
//> perform task with settings from $config
}
考虑到我的框架的过程性,以及有人说global是邪恶的
,您将如何管理设置
谢谢
编辑1:请不要告诉我们使用CONSTATS,我有很多设置,我不想做大量的常数+它们必须是可编辑的
< P>如果你的设置是不变的并且不改变,那么考虑使用<代码>定义())< /> > -<
它们是否需要可编辑,然后您可以使用globals
,但请确保register\u globals
处于禁用状态
如果您使用的是PHP5,那么您可以实现来实现这一点。我倾向于使用一个而不是一个变量,因为这至少可以消除对全局变量的需要
也就是说,您无法(轻松地)通过定义存储复杂的数据类型,例如数组,因此您需要将其考虑在内。将全局值作为函数的参数传递
manageCache($config);
Globals真的很邪恶通常情况下,框架中的某个地方会有一个配置文件夹,在启动时自动包含该文件夹
它可能看起来像这样:
ROOT/
config/
db.php
cache.php
constants.php
$config->get_config('settings_1');
然后,您将拥有类似于Config类的东西,该类负责导入此配置变量并将其转换为实例变量。通过这种方式,您可以访问以下配置变量:
ROOT/
config/
db.php
cache.php
constants.php
$config->get_config('settings_1');
您的配置阵列没有问题。这是一种很常见的方法。全球人都是邪恶的谬论是货运邪教。请忽略
现在,$config
数组本身通常很容易使用。但你可以在这上面展开。例如,初始化后将其转换为ArrayObject非常简单:
$config = new ArrayObject($config, 2);
这将允许您以$config[“setting”]
和$config->setting
的方式访问设置。这对眼睛比较容易
如果您还希望避免到处导入数组,因为有时只需要一个值,那么为了方便起见,可以使用包装函数config(“setting”)
展开
顺便说一句,我自己通常混合使用配置数组和常量。我还为插件制作了一个小管理工具,并在中央config.php
中创建了一个设置数组 不,他们不是。但是模因是邪恶的。如果它是开源的,并且主要是程序框架,请将它添加到。@mario:我写的:(它没有任何文档,否则我会把它放在某个地方:)我会坚持使用全局$config;