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             入口文件

访问形式                                                                                     

在\application\controllers\welcome.php中添加函数:

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

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";
        }
    }
?>

注意:

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

加载视图                                                                                    

application\views\view_test.php或者application\views\view\test.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");
}

效果:

分配变量                                                                                     

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

public function addView()
        {
            $this->load->vars("title","value");
            $list = array(
            array(‘id‘=>1,‘name‘=>‘jack‘,‘email‘=>‘[email protected]‘),
            array(‘id‘=>2,‘name‘=>‘jack2‘,‘email‘=>‘[email protected]‘),
            array(‘id‘=>3,‘name‘=>‘jack3‘,‘email‘=>‘[email protected]‘)
            );
            $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>

效果:

load网站进去,控制器:

public function addView()
        {
            $this->load->vars("title","value");
            $list = array(
            array(‘id‘=>1,‘name‘=>‘jack‘,‘email‘=>‘[email protected]‘),
            array(‘id‘=>2,‘name‘=>‘jack2‘,‘email‘=>‘[email protected]‘),
            array(‘id‘=>3,‘name‘=>‘jack3‘,‘email‘=>‘[email protected]‘)
            );
            $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>

显示效果:

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 />";
        }

效果:

加载数据库                                                                                 

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

在\application\config\database.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();

为了方便,可以将数据库的加载设置成自动加载,在\application\config\autoload.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);

ci框架(一),布布扣,bubuko.com

时间: 2024-10-11 08:16:42

ci框架(一)的相关文章

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

后盾网-CI框架学习笔记

CI框架: 表单验证: 载入验证类 $this->load->library('form_validation'); 设置规则 $this->form_validation->set_rules('name值','规则'); 执行验证 $this->form_validation->run() 表单验证辅助函数: $this->load->helper('form'); 1. set_value('name') //重填数据 2. form_error('n

CI框架3.0版本以后,前后台分离的方法。

笔者认为,CI框架官方其实并没有考虑这个前后台分离的问题,所以没有官方的分离方法.而且,2.0版本的分离,也被官方认为这是一个bug.所以在前后台分离这个问题上,其实并不如thinkphp框架. 在CI框架2.0版本时的,大多数人认为可以这样做,前后台分离是可以直接在controller下,分admin和home目录的. 这是2.0版本时 其实,今天我用的是3.0版本的CI框架.在前后台分离这个问题,我也纠结了比较久.但是为了项目结构目录的清晰,还是要做前后台分离的. 我大概是做了这样一个分离.

CI框架剖析一

CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而"优雅"的工具包,它可以为开发者们建立功能完善的 Web 应用程序.本人使用CI框架有一段时间了,现在决定把该框架源码剖析一遍,理解其构架的用意与精妙之处.分析完所有的源码后,我才来总结CI框架的优缺点,以及适用于哪些场景开发. 目前CI最新的版本是 3.1.4, 4.0版本也即将发布.我们先分析3.1.4版本,然后再看看4.0有哪些重大突破. 首先是查看根目录下index.php文件了,主要定义了几个常量:

【ci框架基础】之部署百度编辑器

在ci框架下加载编辑器,现在复习下内容.我的框架文件名称为ci 1.下载百度编辑器ueditor,http://ueditor.baidu.com/ 一般情况下下载ubuilder版即可,并将ueditor复制到ci框架的根目录下. 下载好的编辑器目录为:-ueditor----dialogs     弹出对话框对应的资源和JS文件----lang        编辑器国际化显示的文件----php         涉及到服务器端操作的后台文件----themes      样式图片和样式文件-

ngnix 配置CI框架 与 CI的简单使用

ngnix 支持 CI框架1.修改config.php 参考网址:https://www.chenyudong.com/archives/codeigniter-in-nginx-and-url-rewrite.html 2. ci小样例 http://www.mamicode.com/info-detail-514033.html 控制器的默认配置文件: routes.php, 不修改默认为跳转到welcome控制器 3.修改CI为子目录 https://yq.aliyun.com/artic

CI框架源码分析

这几天,把ci源码又看了一遍,于是有了新的收获.明白了在application目录下core文件夹的作用,就是用来写ci核心文件的扩展的, 而且需要在配置文件中添加类前缀MY_. CI框架整体是但入口文件,入口文件是Index.php在该文件中定义了一些系统变量,比如BASEPATH和 APPPATH等,最后加载ci框架的核心文件CodeIgniter文件,该文件位于system文件夹下的core文件夹下,此文件夹是ci的核心文件,包括了 controller,model,router,conf

CI框架程序--本地调试之后部署新浪SAE

转载之前写的一点点东西,希望可以帮助到一些朋友 前几天给朋友写了个简单的网站, 想想还是部署到服务器上让朋友看一下效果! 用CI框架写的,有个SAE新浪云的账号,可以用!就部署到上面去了!途中遇到了一些问题!一一解决了! 在这里分享一下 供遇到这些问题的朋友们做个参考! 首先遇到的问题就导入SQL数据的时候出错,由于我SAE上之前写过一个程序,导入数据的时候,怎么选都选不到刚创建的MySql上, 貌似是要绑定一下! 我用的mac 火狐浏览器, 好像SAE上的MySQL的phpmyadmin跟这个

CI框架源码阅读笔记5 基准测试 BenchMark.php

上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI的核心骨架. 从本篇开始,将进一步去分析各组件的实现细节,深入CI核心的黑盒内部(研究之后,其实就应该是白盒了,仅仅对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 按照惯例,在开始之前,我们贴上CI中不完全的核心组件图: 由于BenchMa

CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程

最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时刻提醒自己:借鉴和学习才有出路,忘记过去意味着背叛! 基本术语说明 在本文开始之前,有必要对文中反复出现的术语做一个简单的说明,如果你对这一部分已经熟谙,完全可以略过.本文中反复出现和提及的术语包括: 前端控制器(Front Controller): 用于集中控制用户的所有请求的组件,将用户的请求发