PHP HMVC框架kohana 小结1
之前kohana 3的安装见:http://jackyrong.iteye.com/admin/blogs/1186006
1 在bootstrap中设置开发模式:
Kohana::$environment = Kohana::DEVELOPMENT;
再增加如下代码:
if (isset($_SERVER['KOHANA_ENV']))
{
Kohana::$environment = $_SERVER[?KOHANA_ENV?];
}
相关的值有:
PRODUCTION, STAGING, TESTING, and DEVELOPMENT.
2 设置时区
date_default_timezone_set('America/Chicago');
3 启用相关的module
Kohana::modules(array( 中的注释按需要打开
4 创建默认的config文件(这点比CI差了)
在application\config下设置一个比如site.php的文件,放置日常用的变量,比如:
<?php defined('SYSPATH') or die('No direct script access.');
return array(
'name' => 'Egotist',
'tag_line' => "Let's talk about me!"
);
则获得其变量时,这样:
$site_config = Kohana::config('site');
$site_name = $site_config['name'];
$tag_line = $site_config['tag_line'];
甚至可以这样只加载其中的某个变量:
$site_name = Kohana::config('site.name');
也可以数组的形式加载变量,比如:
return array(
'name' => 'Egotist',
'details' => array(
'tag_line' => "Let's talk about me!",
'alt_tag_line' => "Today's subject: ME!";
);
);
加载:
$site_config = Kohana::config('site');
// Echo site name and details
echo $site_config['name']; // Egotist
echo $site_config['details']['tag_line'] // Lets talk about me!
echo $site_config['details']['alt_tag_line'] // Today's subject: ME!
也可以:
echo Kohana::config('site.details.tag_line');
5 controller的命名规范,必须符合如下
Controller_xxxx,XXX放在classes/controller/xxx.php,比如
Controller_User_Profile则为 classes/controller/user/profile.php
6 给view传递数据
controller中:
public function action_index()
{
//3.2只能用这个方法
$view = View::factory('welcome')
->set('site_name', 'Egotist')
->set('random', rand(1,10));
$this->response->body($view);
}
view中:
Welcome to <?php echo $site_name; ?>
<?php echo $random; ?> is a number between 1 and 10
也可以用bind绑定
$view = View::factory('welcome')->bind('site_name', $site_name)
->bind('random', $random);
$site_name = 'Egotist';
$random = rand(1, 10);
$this->response->body($view);
7 使用template controller
class Controller_Welcome extends Controller_Template
{
$content = View::factory('welcome')
->bind('random', $random);
$random = rand(1, 10);
$content->site_name = 'Egotist Beta';
$this->template->content = $content;
}
}
页面中直接输出:
<?php echo $content;?>
8 设置全局变量,以方便在各页面中直接读取
View::set_global('site_name', 'Egotist Beta');
之后可以在任何view中读取:
<?php echo $site_name; ?>
9 在控制层中,写一个基类,保存一些基本的信息,比如css,JAVASCRIPT,常量可以这
样:
abstract class Controller_Application extends Controller_Template {
public function before()
{
parent::before();
View::set_global('site_name', 'Egotist Beta');
$this->template->content = '';
$this->template->styles = array();
$this->template->scripts = array();
}
其他PHP控制层文件再继承之,十分好用