• ci框架(一)


    ci目录结构                                                                                   

    |-----system                框架程序目录  
        |-----core              框架的核心程序  
            |-----CodeIgniter.php   引导性文件  
            |-----Common.php    加载基类库的公共函数  
            |-----Controller.php    基控制器类文件:CI_Controller  
            |-----Model.php     基模型类文件:CI_Model  
            |-----Config.php    配置类文件:CI_Config  
            |-----Input.php     输入类文件:CI_Input  
            |-----Output.php    输出类文件:CI_Output  
            |-----URL.php       URL类文件:CI_URl  
            |-----Router.php    路由类文件:CI_Router  
            |-----Loader.php    加载类文件:CI_Loader  
        |-----helpers           辅助函数  
            |-----url_helper.php    url相关的辅助函数,如:创建url的辅助函数  
            |-----captcha_helper.php创建图形验证码的辅助函数  
        |-----libraries         通用类库  
            |-----Pagination.php    通用分页类库  
            |-----Upload.php    通用文件上传类库  
            |-----Image_lib.php 通用图像处理类库  
            |-----Session.php   通用session类库  
        |-----language          语言包  
        |-----database          数据库操作相关的程序  
            |-----DB_active_rec.php 快捷操作类文件(ActiveRecord)  
        |-----fonts             字库  
          
    |-----application           项目目录  
        |-----core              项目的核心程序  
        |-----helpers           项目的辅助函数  
        |-----libraries         通用类库  
        |-----language          语言包  
        |-----config            项目相关的配置  
            |-----config.php    项目相关的配置文件     
            |-----database.php  数据库相关的配置文件  
            |-----autoload.php  设置自动加载类库的配置文件  
            |-----constants.php 常量配置文件  
            |-----routes.php    路由配置文件  
        |-----controllers       控制器目录  
            |-----welcome.php   控制器文件,继承CI_Controller  
        |-----models            模型目录  
            |-----welcome_model.php 模型文件,继承CI_Model  
        |-----views             视图目录  
            |-----welcome.php   视图模板文件,默认后缀名为.php  
        |-----cache             存放数据或模板的缓存文件  
        |-----errors            错误提示模板  
        |-----hooks             钩子,在不修改系统核心文件的基础上扩展系统功能  
        |-----third_party       第三方库  
        |-----logs              日志  
      
    |-----index.php             入口文件

    访问形式                                                                                     

    在applicationcontrollerswelcome.php中添加函数:

    public function hello()    
    {    
        echo "test";   
    }

    image

    CI的访问url使用的是pathinfo,入口文件.php/控制器/动作

    自己新建控制器,hello.php:

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
        class Hello extends CI_Controller 
        {
            public function sayHello($name)
            {
                echo $name,",Hello World";
            }
        }
    ?>

    image

    注意:

    • 方法名以下划线开头的是不能访问成功的,只能间接访问。
    • 只能访问public修饰的方法。
    • 尽量不要与类名相同的方法,会当作构造函数。

    加载视图                                                                                    

    applicationviewsview_test.php或者applicationviewsview est.php(这中做法主要是方便同一类型的视图可以放在同一个文件夹下方便管理)

    <html>
    <head>
    </head>
    <body>
    test_ci_hello_world
    </body>
    </html>

    控制器:

    public function addView()
    {
        $this->load->view("view_test");
    }

    或者:

    public function addView2()
    {
        $this->load->view("view/test");
    }

    效果:

    image

    image

    分配变量                                                                                     

    把数据从控制器中传到视图中,控制器:

    public function addView()
            {
                $this->load->vars("title","value");
                $list = array(
                array('id'=>1,'name'=>'jack','email'=>'123@123.com'),
                array('id'=>2,'name'=>'jack2','email'=>'1233@123.com'),
                array('id'=>3,'name'=>'jack3','email'=>'12333@123.com')
                );
                $data['new_title']="标题";
                $data['list']=$list;
                $this->load->vars($data);
                
                $this->load->view("view_test");
            }

    视图:

    <html>
        <head>
        </head>
        <body>
            <h1><?php echo $title;?></h1>
            <h1><?php echo $new_title;?></h1>
            test_ci_hello_world
            <table>
                <?php foreach($list as $item):?>
                <tr>
                    <td><?=$item['id']?></td>    
                    <td><?=$item['name']?></td>
                    <td><?=$item['email']?></td>                
                </tr>
                <?php endforeach;?>
            </table>
        </body>
    </html>

    效果:

    image

    load网站进去,控制器:

    public function addView()
            {
                $this->load->vars("title","value");
                $list = array(
                array('id'=>1,'name'=>'jack','email'=>'123@123.com'),
                array('id'=>2,'name'=>'jack2','email'=>'1233@123.com'),
                array('id'=>3,'name'=>'jack3','email'=>'12333@123.com')
                );
                $data['new_title']="标题";
                $data['list']=$list;
                $this->load->vars($data);
                
                $this->load->view("view_test");
                $this->load->view("footer");
            }

    视图view_test:

    <html>
        <head>
        </head>
        <body>
            <h1><?php echo $title;?></h1>
            <h1><?php echo $new_title;?></h1>
            test_ci_hello_world
            <table>
                <?php foreach($list as $item):?>
                <tr>
                    <td><?=$item['id']?></td>    
                    <td><?=$item['name']?></td>
                    <td><?=$item['email']?></td>                
                </tr>
                <?php endforeach;?>
            </table>

    视图footer:

    CI_hello_world!!!
    </body>
    </html>

    显示效果:

    image

    uri参数获取                                                                                

    控制器:

    public function getUri($id,$name,$year)
            {
                echo "id--->".$id."---name--->".$name."---year--->".$year."<br />";
                echo "segment(1)--->".$this->uri->segment(1)."<br />";
                echo "segment(2)--->".$this->uri->segment(2)."<br />";
                echo "segment(3)--->".$this->uri->segment(3)."<br />";
                echo "segment(4)--->".$this->uri->segment(4)."<br />";
                echo "segment(5)--->".$this->uri->segment(5)."<br />";
            }

    效果:

    image

    加载数据库                                                                                 

    这个操作在MVC中是放到model中做的。

    在applicationconfigdatabase.php中配置数据库参数,注意dbprefixswap_pre这两个参数。在php中写的是前缀,会默认当作swap_pre,然后放到数据库中的时候会转成dbprefix,但是最好两个都弄成一样的。

    还有$active_group,默认是default,如果要连接两个数据库,把default另外取名,然后在函数中写明参数就OK。

    必须继承数据核心类CI_Model,同时重载父类中的构造方法。

    class Model_name extends CI_Model
    {
        function __construct()
        {
            parent::__construct();
        }
    }

    在每次使用数据库的时候,都需要加载一次数据库:

    $this->load->database();

    为了方便,可以将数据库的加载设置成自动加载,在applicationconfigautoload.php中。

    $autoload['libraries'] = array('database');

    对于数据库访问对象,装载到超级对象的属性中 $this->db

    $res = $this->db->query($sql);//返回对象
    $res->result();//返回数组,数组中是一个一个的对象
    $res->result_array();//返回二维数组,里面是关联数组
    $res->row();//返回第一条数据,直接是一个对象

    AR操作数据库                                                                              

    在database.php文件中,将$active_recoed的值改为TRUE,这样就可以使用AR了。

    //查询
    public function index()
    {
        $res = $this->db->get('表名');//这里自动调用前缀
        foreach($res->result() as $item)
        {
            echo $item->name."<br />";
        }
    }
    //插入
    public function index()
    {
        $data=array(
            'name'=>'lisi',
            'password'=>md5('lisi')
        );
        $bool = $this->db->insert("表名",$data);
        var_dump($bool);
    }
    //更新
    public function index()
    {
        $data=array(
            'name'=>'wangwu',
            'password'=>md5('wangwu')
        );
    
        $bool = $this->db->update('表名',$data,array('id'=>3));
        var_dump($bool);
    }
    //删除
    $bool = $this->db->delete('表名',array('id'=>2));
    var_dump($bool);
  • 相关阅读:
    匈牙利算法
    Tabbed Activity = viewpager + fragment ?
    gdb调试多线程多进程
    gdb 调试,当发现程序退出,需要定位程序退出位置时。
    将Linux的信号量sem_t封装成事件对象
    Golang包管理工具govendor的使用&go mod
    go get命令详解
    GoLand生成可执行文件(Windows、Linux)
    Linux下线程pid和tid
    理解Linux的进程,线程,PID,LWP,TID,TGID
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3836447.html
Copyright © 2020-2023  润新知