《PHP与MySQL程序设计(第3版)》――19.6 创建配置文件
开发人员一直使用配置文件来存储确定应用程序行为和操作的数据。例如,php.ini文件负责确定PHP的大量行为。对于Smarty,模板设计人员也可以利用配置文件的强大作用。例如,设计人员可以使用配置文件存储页面标题、用户消息以及有必要集中存储的任何信息。
以下是一个示例配置文件(名为app.config):
中括号包围的项称为节(section)。节之外的项都认为是全局的。这些项应当在定义任何节之前定义。下一节将展示如何使用config_load函数来加载配置文件,还会解释如何在模板中引用配置变量。最后,注意warning变量数据包围在三个引号中。如果字符串包含文件的多行内容就必须使用这种语法。
注解 当然,Smarty的配置文件不会取代层叠样式表(CSS)。可以在网站设计(背景颜色、字体等等)中使用CSS,而在CSS不支持的方面(如页面标题)使用配置文件。
19.6.1 config_load
配置文件存储在configs目录中,并使用Smarty函数config_load加载。下面是加载配置文件app.config的示例:
但是要记住,此调用只能加载配置文件的全局变量。如果要加载特定的节,需要使用section属性指定。所以,可以使用以下语法加载app.config的节Aggregation:
另外两个可选参数的介绍如下所示。
qscope。确定所加载的配置变量的作用域。默认情况下设置为local,表示变量只能用于本地模板。其他可能的设置包括parent和global。作用域设置为parent时,变量可用于本地模板和调用模板。作用域设为global时,变量则可以用于所有模板。
qsection。指定加载配置文件的特定节。因此,如果只对某个特定节感兴趣,可以只加载该节,而非整个文件。
19.6.2 引用配置变量
配置文件中变量的引用方式与其他变量的引用方式有所不同。实际上,这些配置变量使用几种不同的语法来引用,下面各小节将介绍这个内容。
1. #
在Smarty模板中,可以在变量前面加上#号来引用配置变量。例如:
2.Smarty的$smarty.config变量
引用配置变量时,如果喜欢更为正式的语法,可以使用Smarty的$smarty.config变量。例如:
3.get_config_vars()方法
get_config_vars()方法返回一个数组,包含加载的所有配置变量值。如果只对某个变量值感兴趣,可以通过variablename传入该变量。例如,如果只对以上app.config配置文件中Aggregation节的$title变量感兴趣,可以首先使用config_load函数加载该节:
然后,在模板中启用PHP的节中调用get_config_vars(),如下:
当然,无论选择哪一种获取配置参数的语法,都不要忘记首先使用config_load函数加载配置文件。