初学CI框架遇到的一些问题,与Thinkphp框架对比的不同之处。

system             是框架核心

application        是项目目录

index.php          是项目入口文件

其他目录可以删除

控制器命名规则

 

控制器不加 Controller 后缀,

如 user.php 这就是一个控制器

修改默认控制器和方法

 

默认控制器是welcome.php,不喜欢可以改掉。

修改方法如下:

在 config/routes.php 中

$route['default_controller'] = 'welcome';

改为

$route['default_controller'] = 'index/home';

为什么不该成“index/index”呢???

因为CI中的控制器命名中没有后缀,所以index类的index方法会默认为析构方法__construct();

所以不可以这样搞,如果改成"index/index"则index方法会被调用两次。

加载视图文件

 

$this->load->view('index/home');

这个视图文件放在/application/view/index/home.php

看到这个文件的后缀了吗?它是一个php文件,不是html文件

在CI中 view() 方法可以使用多次,也就是可以加载多个模板

可以这样写:

1.在 /application/view/index目录下有这样几个模板文件

header.php

main.php

footer.php

2.在index控制器的home方法中

1
2
3
4
5
6
public function home(){
    //按顺序加载模板文件
    $this->load->view('index/header');
    $this->load->view('index/main');
    $this->load->view('index/footer');
}

给模板分配变量

 

CI框架中的模板是直接写php代码的,如分配一个hello的变量:

$this->load->vars('hello','heheheh');

在模板中直接写 <?php echo $hello;?>变量将变量输出。

还可以这样:

$data['hello'] = 'hello xxoo---';

直接写入关联数组

$this->load->vars($data);

在模板中关联数组健名就是模板里的变量名

<?php echo $hello; ?>

CI超级对象($this)中的装载器load

 

文件在system/core/loader.php,被实例化成一个属性

$this->load 属性是经常用到的,这里有几个常用的方法

$this->load->view()

$this->load->vars()

$this->load->database()

$this->load->model()

还可以这样写

1
2
3
4
$data['one'] = 'one';
$data['two'] = array(1,2,3,4,5);
//加载模板并分配变量
$this->load->view('user/user',$data);

获取url中的参数$this->uri

文件在system/core/URI.php

如:url为 localhost/CodeIgniter/index.php/index/home

echo $this->uri->segment(1);

输出为:index

还可以这样

url为:http://localhost/CodeIgniter/index.php/index/home/1

public function home($id){

echo $id;

}

输出 1

多个参数同样,只不过顺序有限制

输入对象 $this->input

类文件目录同上

$this->input->post('username');//同$_POST['username'];

$this->input->server('HTTP_REFERER');//同$_SERVER[HTTP_REFERER'']

$this在视图中也可以使用

关于数据库的操作

pdo设置

在application/config/database.php 中找到并填写成如下:

$db['default'] = array(

'dsn'=> 'mysql:host=localhost;dbname=test;port=3306',

'hostname' => '',

'username' => 'root',

'password' => '123456',

'database' => '',

'dbdriver' => 'pdo',

);

// 设置默认加载的数据库的配置

$active_group = 'default';

$query_builder = TRUE;

// 这个数组可以有多个,不同数据库填写不同数组名称

$db['default'] = array(

);

$db['hello'] = array(

);

从数据库中获取数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public function home(){
     
    // 1.转载数据库操作类
    $this->load->database('default');//默认为default可以不写
     
    $sql "select id,title from article limit 10";
    // 2.执行sql
    $obj $this->db->query($sql);
     
    // 3.获取结果集
    $data $obj->result();
     
    echo "<pre>";
    var_dump($data);
     
}

CI框架与Thinkphp框架的一些区别的更多相关文章

  1. [麦先生]初学Laravel框架与ThinkPHP框架的不同(2)

    在经过了一段时间的开发后,我对Laravel框架的认识又在逐步的加深,对于这个世界占有量NO.1的框架...  我想说,我已经在逐步的感受到他的恐怖之处... 一.建表--Laravel在数据库建表上 ...

  2. 初学Laravel框架与ThinkPHP框架的不同

    作为一个PHP菜鸟初学Laravel框架 在学习过程中我发现了其与TP框架的不同点,由于时间问题和认识还不够完善我先写出其中几点,有错误的地方希望各位大牛斧正... 1.渲染模版方式的不同:在Lara ...

  3. Laravel框架与ThinkPHP框架的不同

    作为一个PHP菜鸟初学Laravel框架 在学习过程中我发现了其与TP框架的不同点,由于时间问题和认识还不够完善我先写出其中几点,有错误的地方希望各位大牛斧正... 1.渲染模版方式的不同:在Lara ...

  4. ThinkPHP框架知识

    php框架 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格 ...

  5. ThinkPHP框架知识(比较全的知识)

    php框架 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格 ...

  6. ThinkPHP框架概述

    框架概述 1.什么是框架 框架,即framework.其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统. 2.框架的应用场景 ① 代码重用 ② 合理分工 ③ 解决团队协作开发问题 3. ...

  7. 【PHP ThinkPHP框架】小bug汇总[更新]

    目录结构 1.函数调用 2.绑定select下拉框数据 3.PHP查询功能 4.格式化时间和价钱 5.IF标签比较两个变量 6.eq标签比较两个变量 7.新增信息或者修改信息的自动验证和自动填充 8. ...

  8. Thinkphp 框架基础

    ThinkPHP 一.php框架介绍 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项 ...

  9. ThinkPHP框架一

    1.1 框架的概念 框架其实就是可重用代码的集合,框架的代码是框架架构的代码,不是业务逻辑代码,框架代码保护类.方法.函数等等,框架代码按照一定的规则组合起来就形成了框架. 1.2 不使用框架开发的时 ...

随机推荐

  1. BZOJ3193 [JLOI2013]地形生成 【dp】

    题目链接 BZOJ3193 题解 注意\(key\)是小于 第一问,显然按高度降序排序,逐个插入 如果高度各不相同,那么之前插入的都比当前插入的\(i\)大,可插入的位置个数就确定了 由于存在高度相同 ...

  2. 解题:POI2008 Building blocks

    题面 显然我们需要考虑每一个区间,而这个问题显然我们都会做,这不就是这道题么,也就是说假如中位数是$mid$,区间和是$sum$,那么代价就是$\sum\limits_{i=l}^r |mid-num ...

  3. (转)丢掉鼠标吧,使用最好用的eclipse快捷键

    背景:eclipse作为自己经常使用的一款开发工具,熟练运用,能够达到事半功倍的效果.下面这篇文章总结了一些平时经常要使用的快捷键,十分的方便. 介绍Eclipse快捷键的文章很多,但大多都不详细,且 ...

  4. pyspider框架的599证书问题

    使用PySpider 框架出现错误 HTTP 599: SSL certificate problem: unable to get local issuer certificate,如下 HTTP ...

  5. 管理KVM虚拟机(二)

    管理KVM虚拟机 工具:libvirt 官网:http://libvirt.org/ 介绍:Libvirt 库是一种实现 Linux 虚拟化功能的 Linux® API,它支持各种虚拟机监控程序,包括 ...

  6. git push --set-upstream

    我在本地建了一个分支wangxiao,开发完之后,提交代码 git add .git commit -m '注释'git push 出现下面的问题,这个意思是:当前分支没有与远程分支关联. 因此导致了 ...

  7. ZCMU 1894: Power Eggs

    http://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1894 题意: 有M个鹰蛋,N层楼,鹰蛋的硬度是E,也就是说在1~E层楼扔下去不会碎,E+1层楼扔 ...

  8. ASP.NET批量下载文件

    一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到 ...

  9. 【转】[.Net] 确定当前网站的物理文件路径

    确定当前网站的物理文件路径 在应用程序中,您可能需要确定服务器上的文件或其他资源的路径.例如,如果应用程序以编程方式对文本文件进行读写操作,则必须为用于读取和写入的方法提供该文件的完整物理路径. 将物 ...

  10. js数组方法forEach,map,filter,every,some实现

    Array.prototype.map = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "fun ...