博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CI之旅
阅读量:6962 次
发布时间:2019-06-27

本文共 6421 字,大约阅读时间需要 21 分钟。

前言

终于换系统了,因为之前一直是Windows7最老的哪个版本,也就是7600没有SP1补丁的版本。导致PHP高于5.2.8的版本都安装不上去, MongoDB最新版装不上去,甚至Python3.6什么的也装不上去。

这下好了,终于可以大展身手学点最新的东西了。于是下午先拿CodeIgniter下手,记录一下。

准备

配置好一个本地的PHP环境即可。我本人的环境是:

  • php7
  • mysql57
  • apache24

然后到 下载CI即可。

下载完把解压后的文件夹拷贝到我们的工作空间即可。
工作目录

目录结构分析

D:\PHP7\Apache24\htdocs\phpstorm\ci>tree .卷 软件安装盘 的文件夹 PATH 列表卷序列号为 0000-4823D:\PHP7\APACHE24\HTDOCS\PHPSTORM\CI├─application│  ├─cache│  ├─config          # 应用配置文件位置。│  ├─controllers     # 控制器,连接MV│  ├─core│  ├─errors│  ├─helpers         # 一些帮助库,生成URL时很有效│  ├─hooks│  ├─language│  │  └─english│  ├─libraries│  ├─logs│  ├─models          #  模型。存放与数据库表相对应的数据│  ├─third_party│  └─views├─system             # CI框架运行的核心│  ├─core│  ├─database│  │  └─drivers│  │      ├─cubrid│  │      ├─mssql│  │      ├─mysql     # 已经不怎么用啦,用下面的那个就好了│  │      ├─mysqli│  │      ├─oci8│  │      ├─odbc│  │      ├─pdo│  │      ├─postgre│  │      ├─sqlite│  │      └─sqlsrv│  ├─fonts│  ├─helpers│  ├─language│  │  └─english│  └─libraries│      ├─Cache│      │  └─drivers│      └─javascript└─user_guide       # 用户帮助,可以查看一些小例子来模仿。    ├─database    ├─doc_style    ├─general    ├─helpers    ├─images    ├─installation    ├─libraries    ├─nav    ├─overview    └─tutorial

原理

一下子给这么多文件,不了解运行原理的话还真的是不好办。所以还是先来把握一下怎么让CI跑起来吧。

MVC

MVC是经典的开发模型,也就是我们经常见到的模型-视图-控制器的组合。好处就是最大限度的分离软件层次,降低耦合。等等等等。

在CI中,我们要学习的顺序是CVM。这也是和CI的运行原理一致的。其中Controller是联系Model和View的桥梁,也是框架工作的核心。

一方面Controller可以把来自View的客户端数据简要的处理一下,另一方面通过调用Model的方法将数据持久化到数据库中。

C

在CodeIgniter中,控制器文件放到Application/controllers目录下。

比如我下面新建了一个MyController.php的文件。

load->view('my_welcome'); }}

有三点需要注意的地方:

  • 控制器文件最好是小写,且以.php结尾
  • 文件前部分添加if ( !defined('BASEPATH') ) exit('No direct script access allowed'); 来维护单入口。
  • 类首字母大写且继承自CI_Controller类

V

视图就比较简单了。放到application/views目录下即可。

里面的内容可以是HTML静态文件,也可以是纯PHP页面,还可以是混合的页面。

M

模型是相当重要的一部分了。如下我新建了一个user_model.php

db->insert('hail_user', $data); } public function lst($param = 1) {
echo "Model works!"; // get的第一个参数是表名(不用添加表的前缀), 第二个参数是将要取得的数据的记录数// $obj = $this->db->get('hail_user', $param); $obj = $this->db->get('hail_user'); return $obj->result_array(); }}

需要注意的有如下几个点:

  • 新建一个以PHP结尾的小写的文件
  • 类名保持和文件名一致,且首字母大写,继承自CI_Model类
  • 在子类的构造方法中手动调用父类的构造方法。

需要注意的地方

下面谈谈需要注意的地方。

自动生成表单action地址

一方面我们可以手动的指定,但是这样的话会难于维护。所以还是借助site_url函数来实现。

使用site_url的前提有如下两个点:

  • 在application/config.php中配置了$config[‘BASE_URL’]
  • 在调用site_url之前使用了$this->load->helper('url');//(作用就是调用了system/helpers/url_helper.php中的site_url方法)

redirect

类似于上面所述。如果不这么处理可能会出现

Undefined function redirect

小案例

下面准备做一个简单的注册的小例子。为了方便就不做数据验证了。

建表

在数据库中建立如下字段的表结构

DROP TABLE IF EXISTS `hail_user`;CREATE TABLE `hail_user` (  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primark key',  `username` varchar(30) NOT NULL,  `password` char(32) NOT NULL,  `email` varchar(30) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;

搭建CI环境

把从官网下载好的文件解压,放到自己的工作空间下。

配置数据库

在application/config/database.php 中对于自己的数据库环境进行配置。

$active_group = 'default';$active_record = TRUE;$db['default']['hostname'] = '127.0.0.1';$db['default']['username'] = 'root';$db['default']['password'] = 'root';$db['default']['database'] = 'test';$db['default']['dbdriver'] = 'mysqli';$db['default']['dbprefix'] = '';$db['default']['pconnect'] = FALSE;$db['default']['db_debug'] = TRUE;$db['default']['cache_on'] = FALSE;$db['default']['cachedir'] = '';$db['default']['char_set'] = 'utf8';$db['default']['dbcollat'] = 'utf8_general_ci';$db['default']['swap_pre'] = '';$db['default']['autoinit'] = TRUE;$db['default']['stricton'] = FALSE;

配置url

$config['base_url'] = 'http://localhost/phpstorm/ci';

新建MVC对应的文件

创建MyController.php

load->view('my_welcome'); } public function add_user() {
$data = [ 'username'=>$_POST['username'], 'password'=>md5($_POST['password']), 'email'=>$_POST['email'] ];// $id = 3;// $username = "assfsfbdfhdbhdb";// $password = "ASDSADDSSDS";// $email = "38324y34y34@7y34y.com";// $data = [// 'username' => $username,// 'password' => $password,// 'email' => $email// ];// $this->load->helper('url');// echo "CI中生成表单action地址的方法。必须现在conf中配置BASE_URL".site_url('mycontroller/add_user'); $this->load->database(); $this->load->model('user_model'); $flag = $this->user_model->add_user($data); if ( $flag == TRUE ) {// echo "Insert Operation Succeed!"; // 使用路径生成器之前必须先引入helper('url') $this->load->helper('url'); redirect('mycontroller/call_user_model'); } else { echo "Insert Operation Failed!"; } } /** * 让前台访问这个网址看到视图。而真正处理表单则是add_user来实现的。 * * 表单中能生成action地址的前提是:helper('url')并且在conf下配置了BASE_URL */ public function show_form() {
$this->load->helper('url'); $this->load->view('my_welcome'); } // 调用模型里面的方法 public function call_user_model() {
echo "It works!"; // 载入数据库操作类 $this->load->database(); // 实例化模型 $this->load->model('user_model'); // 模型实例化之后的调用。经过了load操作的话,系统会将实例化的对象赋值给同名的属性上,可被直接的使用 $users = $this->user_model->lst(); $this->load->view('my_welcome', ['users' => $users]); }}

创建my_welcome.php作为视图文件

个人详细信息

  • 编号:
  • 姓名:
  • 密码:
  • 邮箱:

申请加入

Username:
Password:
Email:

创建user_model.php作为模型层

db->insert('hail_user', $data); } public function lst($param = 1) {
echo "Model works!"; // get的第一个参数是表名(不用添加表的前缀), 第二个参数是将要取得的数据的记录数// $obj = $this->db->get('hail_user', $param); $obj = $this->db->get('hail_user'); return $obj->result_array(); }}

验证环境

首先访问

首页

验证增加用户

如我们所知,CI是基于单入口来运行的。所以访问一个视图需要通过控制器来实现。

所以我们通过下面这种格式来访问一个视图文件。

${base_url}/index.php/控制器名称/返回视图的控制器里面的方法

举个小例子:

  • base_url 就是我们在application/config.php中配置的$config[‘base_url’]。

  • 而mycontroller就是我们自定义的控制器

  • show_form就是mycontroller控制器中的一个用于展示视图的方法。

最终我们看到的效果是:

视图文件

验证入库

下面我们填写完表单,然后提交即可。

填写表单

因为代码中使用了重定向技术所以我们可以看到浏览器地址栏中的地址会发生变化。

注册成功

查看数据库中字段

数据库中成功插入记录

如此,便完成了使用CodeIgniter框架的注册的小案例了。虽然这是简单的不能再简单的案例了。

但是对于这个过程的把握才是最重要的。了解CI的工作原理比单纯的搞一个小案例重要的多。

我觉得只要是理解了控制器控制下的视图与模型的处理,就差不多可以啦。

总结

今天本来不打算写的,因为这实在是没有含金量。写着写着发现没什么可写的。算了,就这样吧。

你可能感兴趣的文章
传入含中文的字符串 返回中文首字母
查看>>
thinkphp5 下 Linux 定时任务
查看>>
IOS 动画组
查看>>
数据库模型设计——关系的实现,主键的设计
查看>>
webistrano的安装方法和一些用法
查看>>
Memcache集群高可用方案
查看>>
mysql数据据存储引擎InnoDB和MyISAM的优势及区别
查看>>
PowerShell中iso8601格式日期和DateTime对象互转实例
查看>>
MySQL Cluster, Fabric, Cobar 三大集群特性对比
查看>>
SpringBoot(八):测试组件-junit
查看>>
Mysql命令
查看>>
使用chmod命令改变权限
查看>>
java程序使用cmd备份和恢复数据库
查看>>
item点击变色
查看>>
tomcat的配置及负载均衡
查看>>
android基本控件及表单(3)
查看>>
Sharepoint多站点通过apache进行多域名访问
查看>>
Windows Azure 安全控制-ACL
查看>>
linux vsftp配置大全—超完整版
查看>>
ActionBar的移除与显示
查看>>