在最开始,用最简洁的文字来描述和解决这个问题。后面会贴上oschina的一篇不错的文章。
【问题起源】还是访问地址的整合,多个页面都需要跳转到某一个指定的地址,当然不想每次地址变更就得去重复修改包含这个地址的文件咯。所以最好的方法就是将这个地址设为常量或置入系统配置文件中。
【问题解决】
在项目的conf下的配置文件中添加自己的配置参数就可以了,
如:
<?php return array( //'配置项'=>'配置值' 'APP_DEBUG'=>true, 'TMPL_L_DELIM'=>'<{', 'TMPL_R_DELIM'=>'}>', 'DEFAULT_CHARSET' => 'utf-8', // 默认输出编码 'MY_CONF' => '123456', //自定义配置参数项 ); ?>那怎么调用这个自定义配置参数呢?
项目中,用C('MY_CONF')来访问配置参数。
模板中,用<{$Think.config.sitename}
在类里,用$Think.config.sitename
【附】:---------------------在thinkphp里加入自定义的配置属性方法-------------------------
这里先说明下, 我当前的想法是在thinkphp配置文件外(conf目录下config.php)建立一个配置文件,这个配置文件用来放我自己系统的一些常量,如网站 名称,网站url,网站logo,网站keyword等信息,有别于thinkphp里的一些配置,所以,想要单独拿出来配置
配置文件名称:siteconfig.inc.php
我想把它放在系统的根目录下的Public目录 路径:根目录/Public
在config加载的同时,这个文件也被加载使用.
(参考的dwz+thinkphp)方法如下:
修改config.php,在头部加:(我的config位于APP叫Web应用下;具体路径是:根目录/Web/conf/config.php)
文件:config.php
=====
<?php $siteconfig = require '../Public/siteconfig.inc.php'; $config=array( 'URL_MODEL'=>1, // 如果你的环境不支持PATHINFO 请设置为3 'DB_TYPE'=>'mysql', 'DB_HOST'=>'localhost', 'DB_NAME'=>'wk_cms', 'DB_USER'=>'root', 'DB_PWD'=>'123456', 'DB_PORT'=>'3306', 'DB_PREFIX'=>'wk_', //... ); //config.php 末端 加上一句: return array_merge($config,$siteconfig); ?>
=====
文件 siteconfig.inc.php
=====
<?php //网站配置文件 if (!defined('THINK_PATH')) exit();//判断是否加载thinkphp,如果否则退出 return array( 'SITENAME'=>'DWZ富客户端框架 - thinkphp2.0', 'EMAIL'=>'[email protected]', 'CONTACT'=>'张慧华', 'COMPANY'=>'dwz研发组', 'PHONE'=>'', 'FAX'=>'', 'ADDRESS'=>'', 'OFFLINEMESSAGE'=>'本站正在维护中,暂不能访问。<br /> 请稍后再访问本站。', 'SITEURL'=>'http://thinkphp.dwzjs.com', 'DEMOURL'=>'http://demo.dwzjs.com', 'BBSOURL'=>'http://bbs.dwzjs.com', ); ?>
====
Q:新加载进来的静态变量如何在模板里调用?
A:{$Think.config.sitename}
不必担心大小写,官方推荐将静态变量大写;但是无论大写还是小写,统统会被转成小写处理
Q:新加载进来的静态变量如何在类里面调用?
A:$Think.config.sitename
个人的一点体会:
由于可以设定静态变量到文件,所以,没有必要写入数据库;如果写入数据库又需要频繁调用;会影响速度
所以,当前流行的做法都是将常用配置写到文件,然后在后台写一个replace的脚本;
为了便于管理,我在app叫admin(系统管理后台)的config.PHP也加载了siteconfig.inc.php;目的就是在后台可以加载,并可以在后台修改;所以,我把siteconfig.inc.php放到了public目录下
--------------------------------------------------------------------------------------------------------------------------------------------
【参考】
THINKPHP如何自定义一个常量 >>