zoukankan      html  css  js  c++  java
  • CodeIgniter的学习

    经过两天对CodeIgniter的学习, CI的官方手册没有说得详细,特别是还有很多没有翻译完整。比起ThinkPHP框架的手册来说,可是差远了,也是CI不是国产嘛,呵呵。

    本人EN不好看起来很是吃力的说,so,看完了总会有些体会吧总结了一些东东放上来,希望对学习这个框架的新手有点帮助。

    URL的访问:

    格式:http://域名/index.php/类/函数/参数
    说明:
    1. 第一段表示调用控制器类。
    2. 第二段表示调用类中的函数或方法。
    3. 第三及更多的段表示的是传递给控制器的参数,如 ID 或其他各种变量。


    保留字:
     函数名 : 
      is_really_writable(), load_class(),  get_config(), config_item(), show_error(), show_404(), log_message(), _exception_handler(), get_instance()
     变量名 : 
      $config, $mimes, $lang


    控制器类:
     class Blog extends Controller 
     {
      //默认执行的方法
      function index([参数名1=初值1[,参数名2=初值2,...]]){  
       echo 'hello world!';
       echo $参数名1,$参数名2;
      }
     }
     访问方式: http://域名/index.php/blog/参数值1/参数值2
     注意:类名必须首字母大写 ; 类文件名必须与类名一致(首字母无须大写,如: blog.php)。
     将控制器放入子文件夹中:
      application/controllers/文件夹名称/shoes.php
      那么对应的访问方式:
      http://域名/index.php/文件夹名称/shoes


    目录结构:
    / 根目录
    /application 应用程序所在的目录(即,这里是我们工作的目录)
     config/ 网站的一些常用配置
      autoload.php 自动加载资源配置文件
      database.php 数据库配置,可以设置成2维数组以现实多数据库配置
      
     controllers/ 存入所有控制器程序文件
     views/ 视图文件夹,存入模板文件的地方(模板默认扩展文件名为*.php)
     helpers/ 优先载入的辅助函数,项目中的
     plugins/ 优先载入的插件,项目中的
     libraries/ 用户自定义的功能类库
     errors/ 显示错误信息的页面模板
     
    /helpers 框架的辅助函数
    /plugins 插件
    /libraries 框架自带的类库文件
    /language 语言包文件
     

    更改框架的文件夹路径:
     index.php (入口文件) 文件里:
      $system_folder = "CodeIgniter框架所在的路径";
      $application_folder = "应用程序所在的路径";

    数据库的操作:
       
      建立模型类:
      class 模型类名称 extends Model {
       //初始化模型
       public function __construct( ) 
       {
         parent::Model( );
         $this -> load -> database( );
       }
       public function 方法名称(参数列表)
       {
         [$this -> db ->方法(xxx); //操作数据库
         语句...]
       }    
      }
     注意: 模型类名称首字母大写, 文件名无须大写
     载入模型: 
      在控制类的方法中使用 $this->load->model('模型类名称'); 载入指定模型
     载入后就可以这样使用了: $this->模型类名称->方法名称([参数]); 

     数据库的连接:
      自动连接: 可在autoload.php文件中的 library 数组里添加 database
      手动连接: 可以在你有需要的函数里手工添加: $this->load->database([数据库信息配置的数组名]);
      得到数据库操作对象: $this->db , 如果多个数据库连接:
       $DB1 = $this->load->database('group_one', TRUE);
       $DB2 = $this->load->database('group_two', TRUE); 
       则数据库操作对象为: $DB1 和 $DB2

    查询:
        1. 无条件查询
        $query = $this->db->get('数据表名'[,每页纪录数,偏移]);
        //遍历查询到的记录
        foreach ($query->result() as $row)
        {
            echo $row->title;
        }    
        2. 带多条件查询    
        $query = $this->db->get_where('数据表名',条件数组[,每页纪录数,偏移]);
        3. 自定义查询 (推荐使用)
        $this->db->where("name='Joe' AND status='boss' or status='active'");
        $query = $this->db->get('数据表名');
        4. 取出记录数和记录集数组
        $rs = $query->result_array(); //取得查询中的记录(数组型式)
        $n = $query->num_rows(); //取得查询中的记录数
       5.统计数据表中的记录总数
       $this->db->where(条件); //条件
       $num = $this->db->count_all_results('数据表名'); //统计记录数量,(如果省略上一行条件,则统计表中所有记录数)
       6.联合查询 join()
       $this->db->select('*');
       $this->db->join('comments', 'comments.id = blogs.id');
       $query = $this->db->get(
    '数据表名');

    添加记录:
        //设置记录的各字段值到数组中
        $data['title'] = $title;
        $data['name'] = $name;
        $data['date'] = $date;
        //写入记录
        $this->db->insert('数据表名', $data);
        //返回刚才插入的记录的id,需要紧跟在insert操作之后才能返回正确的结果.
        $id = $this->db->insert_id(); 
        //取得受影响的记录数
        $n = $this->db->affected_rows();

    修改记录:
        //设置要修改的字段的值
        $data['title'] = $title;
        $data['name'] = $name;
        $data['date'] = $date;
        //修改记录
        $this->db->where('uid', $uid);
        $this->db->update('数据表名',$data);
        //取得受影响的记录数
        $this->db->affected_rows();
        
    删除记录:
        $this->db->delete('数据表名',"条件语句字符串"); 
        //取得受影响的记录数
        $this->db->affected_rows();
        
    事务处理:
        //开始一个事务
        $this->db->trans_start();
        //提交事务
        $this->db->trans_complete(); 
        //回滚
        $this->db->trans_rollback();



    缓存: 可以将每个页面缓存
     只需将下面的代码放在你的controller的function中的任何位置: 
      $this->output->cache(要缓存的分钟数);
      如果缓存文件过期,它将被删除并重新生成。

    开发中使用[分析器]:
     在控制器中设置以下方法以激活该分析器
      $this->output->enable_profiler(TRUE);
     分析器激活后将产生一个报告并插入您的页面底部


    分页类:
    //载入分页功能类
    $this->load->library('pagination');
    //设置分页参数:
    $config['base_url'] = 'http://example.com/index.php/test/page/'; 這是一個完整的 URL 路徑通向包含你的分頁控制器類/方法。
    $config['total_rows'] = '200'; //记录总数
    $config['per_page'] = '20'; //每页记录数
    $config['uri_segment'] = 3; //指定页码的参数所在URL中是第几个参数(默认是第3个)
    //初始化分页类
    $this->pagination->initialize($config);
    //输出分页代码 
    echo $this->pagination->create_links();

    模板:
    $arr[0]['字段名'] = 字段值; //记录1数据
    $arr[1]['字段名'] = 字段值; //记录2数据
    //将模板中的变量值存入数组
    $data['数组名'] = $arr;
    $data['变量名'] = "My Real Title";
    //载入模板,以及数据,合成页面并输出
    $this->load->view('blogview', $data);
    //载入模板与数据,返回一个变量(合成后的页面)
    $html = $this->load->view('blogview',$data,true);

    标签:
    对于模板中用于程序控制的部分不如直接使用<?php ... ?>代码来得更快。
    普通变量输出: {变量名}
    数组循环输出:
    {数组名} 
     {数组元素名1}
     {数组元素名2}
    {/数组名}

    快速操作:

    Session 操作:
    //载入Session类
    $this->load->library('session');
    //单个写入
    $this->session->set_userdata('some_name', 'some_value');
    //批量写入
    $newdata = array('username'=>'johndoe','email'=>'johndoe@some-site.com','logged_in'=>TRUE);
    $this->session->set_userdata($newdata);
    //清除现有的 session
    $this->session->sess_destroy();

  • 相关阅读:
    虽然非常简单但是效果不错
    Google地图开发总结
    笔记(一):ES6所改良的javascript“缺陷”
    ex6的选择器
    android中的style部分属性值介绍
    Android ImageSwitcher
    c# Winform退出程序的方法
    Android ImageView获取网络图片
    循环向数据库(sql server)插入10W条数据
    Android Handler+Thread实现更新Ui
  • 原文地址:https://www.cnblogs.com/xigua1hao/p/3936171.html
Copyright © 2011-2022 走看看