我过去曾使用过codeigniter,但在我目前的项目中,我正在转向Kohana。常数的最佳实践是什么?
在codeigniter中有实际的constants.php,但是通过Kohana的来源我没有看到类似的东西。
答案 0 :(得分:2)
从未使用kohana,但经过快速谷歌搜索后,我发现您可以使用config API创建自己的配置,以容纳您需要的常量。
This thread建议如果您要存储数据库敏感项,将它们放在database.php配置等中。使它们相对于它们存储的数据类型。
答案 1 :(得分:1)
我熟悉Kohana,但不熟悉CI,所以我猜错了你的意思。'常数。'我相信最接近这一点的确是Kohana的配置API。因此,如果您想让模板知道某些网站范围内的常量,例如您的网站名称,那么使用配置API是件好事。
要实现此目的,您需要在/ config文件夹下创建一个配置文件,可能位于/ application目录中。你所谓的它并不重要,但由于它包含网站信息,我们称之为site.php。
要快速开始,这就是您希望在该文件中拥有的内容:
<?php defined('SYSPATH') or die('No direct script access.');
return array(
// Your site name!
'name' => 'Oh me, Oh my',
);
现在,您可以通过执行以下操作将其带入模板:
更好的方法(使用哑模板)将在控制器中将其指定为模板变量。因此,假设您设置了一些默认控制器,代码将为:
public function action_index() {
$this->template->site_name = Kohana::config('site.name');
}
然后你的模板会有这样的东西:
<title><?php echo $site_name; ?></title>
Kohana的配置API非常有趣,因为它是分层的,这意味着您可以在现有配置结构的基础上覆盖和合并新的配置值。当您调用Kohana::config('site.name')
时,引擎会查看名为site.php的所有配置文件,运行所有这些配置文件并将结果合并到一个数组中。应用程序级配置文件将覆盖模块,这将覆盖系统等...然后,基于该结果数组,Kohana将尝试查找名称&#39;键并返回。
答案 2 :(得分:0)
假设你想要全局常量......以下对我来说效果很好。
应用/配置/ constants.php:
define('MY_COOL_CONSTANT', 'foo');
return array();
的index.php:
Kohana::$config->load('constants');
MY_COOL_CONSTANT应该全球可用。