kohana 框架学习
kohana 框架是一个相对比较小众的php框架 ,是有一个开源组织开发的mvc框架。
Controller 篇
1.接受参数
$this -> request -> param('key') //返回的是route路由里定义的参数
Arr :: get($_GET, 'key') //获取的是GET作用于里key对应的值
2. 重定向
$this -> request -> redirect()
3. 页面渲染一个模板
$this -> resposne -> body(string $content)
4. before() and after() 的作用
before 是action在被执行之前所执行的操作, 你不必改变Controller 的__construct() 方法
after 是action执行之后所执行的操作
Medel 篇:
1.使用model,增删改查
自定义model类要继承Model基类,如果要使用数据库继承Model_database 即可
插入数据
$sql="INSERT INTO `kohana`.`user` (`name` ,`age` )VALUES ( 'test', '1'), ( 'test2', '2')";
$dat=$this->_db->query(Database::INSERT,$sql,false);
return 返回的两个值中,第一个是自动增长的ID,如果有的话,第二是影响的行数
更新数据
$sql="UPDATE `ko_users` SET `user_name` = 'test111q1' ";
$dat=$this->_db->query(Database::UPDATE,$sql,false);#return 返回影响行数
删除数据
$sql="DELETE FROM `kohana`.`user` WHERE `user`.`id` = 1";
$dat=$this->_db->query(Database::DELETE,$sql,false);#return 返回影响行数
查询数据
$sql="select * from ko_com_var";$res=$this->_db->query(Database::SELECT,$sql,false);
得到所有查询数据
$res->as_array();
得到一条查询结果
$res->offsetGet(0);
取得特定记录的指定字段值
$res->get("name");
移动指针并取得指定字段
$res->next()->get("name");$res->prev()->get("name");
计算取得结果总数
$res->count();
第二种(查询器模式)
$query = DB::insert('user', array('user', 'age'))
->values(array('test1', '11'));
$query->execute();#返回和上面一样
$query = DB::update('user')
->set(array('age' => '100'))
->where('user', '=', 'test1');
$query->execute();#返回和上面一样
$query = DB::delete('user')
->where('age', 'IN', array('100', '11'));
$query->execute();#返回和上面一样
$query = DB::select()->from('user')->where("id","=","1");$res=$query->execute();
#和上面一样,$res是Database_Result_Cached对象$res->as_array();#其他方法不演示了~
$query = DB::query(Database::INSERT, 'INSERT INTO users (username, password) VALUES (:user, :pass)')
->bind(':user', $username)
->bind(':pass', $password);foreach ($new_users as $username => $password){
$query->execute();
}
View 篇
1.如何在action里使用一个模板
View :: factory(’ temlate fiels path)
2. 如何往页面上传值
View :: factory(’ temlate fiels path, data数组(传到页面上的数据))
3. 如何在模板里包含公用模板
在模板里面 <?php echo View :: factory('temlate files path') ?>
4.如何往公共模板里传值
View :: set_golbal(‘key’, $val) 或者bind_global(‘key’, $val)
config 篇
1如何自定义一个配置文件
普通的PHP文件,存储在config /目录中,返回一个关联数组
2.如何访问
$config = Kohana::$config->load('myconf');
$options = $config->get('options')
或者 $options = $config->get('myconf.options')
message篇
$forms = Kohana::message('message 文件名', 'key' )
message文件返回一个关联数组,key是代表键,多维数组的 key1.key2访问
log 日志篇
第一种方法Kohana_log_File
$writer = new Kohana_Log_File(APPPATH . 'logs/mylog');
$writer -> write(array(array('level' => Kohana_Log::INFO, 'body' => 'log body', 'time' => time())));
第二种方法
$writer = new Kohana_Log_File(APPPATH . 'logs/mylog');
Kohana_Log::instance() ->attach($writer) ->add(Kohana_Log::INFO, 'log body');
附 http://www.kofans.org/3.2/guide/kohana/conventions#编码标准
route 路由篇
建立子目录路由
http://localhost/kohana-v/admin/index/ok/1
Route::set('admin', '(<directory>(/<controller>(/<action>(/<id>))))')
->defaults(array(
'directory' => 'admin',
'controller' => 'index',
'action' => 'index',
));
public function action_ok()
{
//接收参数得到id
echo $this->request->param('id');
$this->response->body('hello, world!');
}
一点警告!!
一些事情必项知道。上面设置的路由示例假定你所有的控制器都是用了子目彔。如果你仅仅有一些控制器位亍
子目彔,最好考虑下为每一个都定义像下面示例这样的路由,只是admin后台使用了子目录结构
Route::set('admin', '(admin(/<controller>(/<action>(/<id>))))')
->defaults(array(
'directory' => 'admin',
'controller' => 'index',
'action' => 'index',
));