本文共 6421 字,大约阅读时间需要 21 分钟。
终于换系统了,因为之前一直是Windows7最老的哪个版本,也就是7600没有SP1补丁的版本。导致PHP高于5.2.8的版本都安装不上去, MongoDB最新版装不上去,甚至Python3.6什么的也装不上去。
这下好了,终于可以大展身手学点最新的东西了。于是下午先拿CodeIgniter下手,记录一下。
配置好一个本地的PHP环境即可。我本人的环境是:
然后到 下载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是经典的开发模型,也就是我们经常见到的模型-视图-控制器的组合。好处就是最大限度的分离软件层次,降低耦合。等等等等。
在CI中,我们要学习的顺序是CVM。这也是和CI的运行原理一致的。其中Controller是联系Model和View的桥梁,也是框架工作的核心。
一方面Controller可以把来自View的客户端数据简要的处理一下,另一方面通过调用Model的方法将数据持久化到数据库中。
在CodeIgniter中,控制器文件放到Application/controllers目录下。
比如我下面新建了一个MyController.php的文件。load->view('my_welcome'); }}
有三点需要注意的地方:
if ( !defined('BASEPATH') ) exit('No direct script access allowed');
来维护单入口。视图就比较简单了。放到application/views目录下即可。
里面的内容可以是HTML静态文件,也可以是纯PHP页面,还可以是混合的页面。
模型是相当重要的一部分了。如下我新建了一个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(); }}
需要注意的有如下几个点:
下面谈谈需要注意的地方。
一方面我们可以手动的指定,但是这样的话会难于维护。所以还是借助site_url函数来实现。
使用site_url的前提有如下两个点:
$this->load->helper('url');//(作用就是调用了system/helpers/url_helper.php中的site_url方法)
。类似于上面所述。如果不这么处理可能会出现
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;
把从官网下载好的文件解压,放到自己的工作空间下。
在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;
$config['base_url'] = 'http://localhost/phpstorm/ci';
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]); }}
个人详细信息
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的工作原理比单纯的搞一个小案例重要的多。
我觉得只要是理解了控制器控制下的视图与模型的处理,就差不多可以啦。
今天本来不打算写的,因为这实在是没有含金量。写着写着发现没什么可写的。算了,就这样吧。