• kohana 简单使用


    声明:基于公司使用的 Kohana 框架写的,不确定是否适用于原生 Kohana

    附:Kohana 3 中文手册,传送门:http://www.lampblog.net/kohana3%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C/

    1)请求和响应

    1.1)获取请求参数

    获取$_GET 或 $_POST 之类的全局变量:

    $this->response->get() 、$this->response->post();

    数组变量获取和空处理:

    Arr::get($this->request->post(), 'user_name', '');
    
    Arr::get($this->request->get(), 'page', 1);

    注:三个参数分别是:要处理的数组、变量key、为空时返回值


    1.2)响应模版或json

    显示模版:

    $this->view('user_index');

    1.2.1)输入变量到模版

    $this->view('user_index')
    
      ->set('user_info', $user_info)
    
      ->set('order_status_nums', $order_status_nums);

    1.2.2)公共头和脚

    modulesmoduleclasses emplate.php 类里 get_header_view 和 get_footer_view 分别处理公共头部和公共脚部

    1.3)重定向跳转

    $this->request->redirect($url);

    2)session 和 cookie

    2.1)使用 session

    Session::instance()->set('user_id', $user_id);
    Session::instance()->get('user_id');

    2.2)使用 cookie

    Cookie::instance()->set('user_id', $user_id);
    Cookie::instance()->get('user_id');

    3)数据库操作

    3.1)增(DB::insert())

    DB::insert(‘table_name’, array(‘column’))->values(array(‘column_value’))->execute();
    如果命令成功,你就能得到一个包含 insert_id 和 total_rows (总共影响到的行数)组成的数组

    3.2)删(DB::delete())

    $total_rows = DB::delete(‘table_name’)->where(‘column’,’=’,’value’)->execute();
    如果命令成功,你就能得到结果中影响到的行数

    3.3)改(DB::update())

    $total_rows = DB::update(‘table_name’)->set(array(‘column’=>’value’))->where(‘column’,’=’,’value’)->execute();
    如果命令成功,你就能得到结果中影响到的行数

    3.4)查(DB::select())

    $result = DB::select()->from(‘table_name’)->where(‘column’,’=’,’value’)->execute()->as_array();

    3.4.1)查询一行

    $result = DB::select('column')->from('table_name')->execute()->current();

    3.4.2)字段别名

    $result = DB::select(array('longcolumnname1', 'col1'), array('longcolumnname2', 'aliascol2'))->from('table_name')->execute()->as_array();

    3.5)使用原生 sql

    $arr = DB::query ( Database::SELECT, $sql )->execute()->as_array();

    query 方法的第一个参数是操作类型,可选值为:Database::SELECT、Database::INSERT、NULL

    类型为select时返回结果集,类型为insert时返回insert_id,类型为null 或 其他值 时返回影响的行数

    3.6)打印上一条查询的 sql

    ORM 或 Model 可使用 last_query() 方法获取上一条查询语句

    Database::instance()->last_query

    3.7)sql 预处理

    DB->select('col1','col2')->form('table_name')->where('user_id', '=', ':id')->param(':id', 1)->execute()->as_array();

     3.8)排序与分页

    $results = DB::select()->from('users')->order_by('id','desc')->limit($page_size)->offset($offset)->execute();

    4)service 和 dao

    service 和 dao 不是必用项,可以按息要求和习惯写或不写都可以,它们本质就是封闭了一些 DB 操作方法(函数)

    公共service 和 dao 分别位于 /modules/module/classes/service/ 和 /modules/module/classes/dao/ 下,你也可以在本应用的 classes 下新建 service 和 dao 来覆盖公共的类(优先级比公共的高)


  • 相关阅读:
    ZJCTF预赛一个.py的逆向题
    if(a)是什么意思
    整理OD一些快捷键和零碎知识点
    NSCTF-Reverse02 超级详细且简单的办法搞定
    CTF实验吧——证明自己吧
    Beat our dice game and get the flag 击败我们的骰子游戏拿到旗子
    CTF-Keylead(ASIS CTF 2015)
    【第三届强网杯】两道杂项题的wp
    【实验吧】该题不简单——writeup
    嵩天老师python网课爬虫实例1的问题和解决方法
  • 原文地址:https://www.cnblogs.com/tujia/p/6652324.html
Copyright © 2020-2023  润新知