--------------------------------------------------------------------------------------------------------------------------------------------------javascript
授课过程当中若是涉及到文件夹或目录时,可以使用缩进进行演示:php
applicationcss
|-----librarieshtml
|-----xxx_helper.php前端
systemjava
|-----librariesweb
|-----url_helper.phpsql
-----------------------------------------------------------------------------------------------------------------------------------------------------thinkphp
1、什么是框架?数据库
2、框架的优缺点分析及为何要选择框架$route['default_controller'] = "common";//默认执行的控制器
二10、如何设置url路由及url后缀
$config['url_suffix'] = '';//url后缀,如:http://www.kuxiu.net/common/index.html
二11、总结:
一、关于缩略图的配置项目能够放在config.php文件中
二、$this->db->insert("user",$data);//要求数据表中除主键字段外,其它字段在$data关联数组中都有默认值才能执行成功,提示:$data通常为一维关联数组
$this->db->insert_batch("user",$data);//$data通常为二维关联数组
三、跳转:header("location:".site_url("common/login"));
四、设置时区
$config['time_zone']=date_default_timezone_set('Asia/shanghai');
五、推荐使用链式操做
$query=$this->db->query($sql);
$data_array=$query->result_array();
等价于:
$data_array=$this->db->query($sql)->result_array();
六、如何配置ueditor编辑器文件上传的路径,如:将图片上传到根目录下面的 php/upload/ 下
首先:将ueditor/php/ 文件夹复制粘贴到根目录下
而后:在模板文件中修改文件上传路径:
{literal}
<!--注意:js文件的引入必须在body体中,不然不生效-->
<script type="text/javascript" src="http://www.kuxiu.net/public/js/ueditor/editor_config.js"></script>
<script type="text/javascript" src="http://www.kuxiu.net/public/js/ueditor/editor_all.js"></script>
<script type="text/javascript">
var ue = new UE.ui.Editor({
initialFrameWidth:750,//编辑器初始化宽度
initialContent:'',//编辑器初始化内容
imagePath:"/php/",//图片上传路径,默认状况下图片上传路径的upload文件夹与图片上传脚本同目录,因此这样配置生成以下效果:"/php/upload/"
imageUrl:"/php/imageUp.php"//图片上传脚本文件
}
);
ue.render('content')//给id为content的textarea表单控件渲染一个编辑器
</script>
{/literal}
思考:默认状况下,编辑器是按照日期自动建立存储的文件夹的,如何修改这一规律?
找到php/Upload.class.php文件中的getFolder()函数,修改以下:
/**
* 按照日期自动建立存储文件夹
* @return string
*/
private function getFolder(){
$pathStr = $this->config[ "savePath" ];//保存路径
if ( strrchr( $pathStr , "/" ) != "/" ) {//保存路径必须以"/"结尾
$pathStr .= "/";
}
$pathStr .= date( "Ymd" );//年月日
if ( !file_exists( $pathStr ) ) {//若是目录不存在
if ( !mkdir( $pathStr , 0777 , true ) ) {//层级建立目录
return false;//建立失败返回false
}
}
///return $pathStr;//建立成功返回路径
}
七、系统加载类库:core/Loader.php
以下函数都在此类库中定义
$this->load->model("");
$this->load->library("");
$this->load->database("");
$this->load->helper("");
$this->config->load();
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<?php 一、在讲解文件所在目录方面的问题时: application |-----core |-----MY_Controller.php system |-----core |-----Controller.php 思路: 1、目前在企业中使用比较多的框架有以下几种: 一、zendframework框架:此框架由zend公司开发并负责维护,入门比较困难一点,可是听说功能很强悍,属于一款偏重量级的MVC框架 二、Yii框架:又称为 "易框架",在外企使用居多 三、thinkphp框架:是国人开发的一款框架,因为它的注释和使用文档都是中文,因此很受国人的喜欢 四、codeigniter框架:简称CI框架,是国外一款流行的框架,跟前面的框架比较,ci框架是最轻量级的,也是最容易上手的 2、咱们选择这款框架来学习,主要有如下几点缘由: 一、ci是一个轻量级的框架,关于轻量级,可从两方面来理解: 一、体积小,解压后不到4M,zendframework解压后60M左右 二、占用资源少:ci应用程序在运行的时候,只是将正常运行所必须的几个核心类库载入到了内存中,其它类库在请求的时候才会加载,这样就达到了资源的最小化,这跟那些须要不少资源的框架是不同的,有些框架在运行的时候,会将全部的类库首先载入内存中,而无论这些类库是否可以用的到,如:cakephp 三、可是这个轻量级,并不影响它开发大型的web应用程序,为何这么说呢? 首先,它自身所提供的类库,已经可以帮助咱们完成web应用程序中的大部分功能 再者,ci框架在整合第三方类库方面也有独到的优点,几乎不须要进行任何配置 二、整合第三方类库简单,几乎不须要进行任何配置 三、不须要使用模板引擎技术 你们知道,php原生态的语法结构执行效率是最高的,由于跟使用了模板引擎技术的程序相比较,它少了一个编译的过程 3、下面,咱们就来进行ci框架的安装: ci框架的安装,咱们只须要按照以下步骤进行操做就能够了 一、官网:http://www.codeigniter.com 去下载ci框架最新的版本,目前最新版本为2.1.3 中文网站:http://www.codeigniter.org.cn 二、下载完毕后,解压,并将其复制粘贴到程序的主目录(d:/wamp/xmall/),而后再将其重命名为"myshop",那么"myshop" 就做为ci项目名称存在了 三、为咱们的ci项目搭建一个虚拟主机: 首先,找到httpd.conf配置文件,开启虚拟主机的配置 而后,找到httpd-vhosts.conf配置文件,进行虚拟主机的配置 最后,找到hosts配置文件,为咱们的ci项目添加dns映射 四、在浏览器中输入 http://www.myshop.com/index.php 回车,如能看到以下欢迎界面,则表示咱们的ci项目安装成功了 4、ci框架的目录结构分析: 了解ci框架的目录结构,有助于帮助咱们快速创建起对ci框架的一个总体认识 打开"myshop"项目,有以下文件和目录 使用协议说明文档、英文版的用户手册,这两项不是项目所必须的,可暂时将其删除 myshop |-----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 入口文件 5、ci框架中的url路由规则: 浏览器中输入 http://www.myshop.com/index.php/welcome/index/ 回车时,默认状况下会找到 application |-----controllers |-----welcome.php 控制器文件,并执行其中的index方法 |-----admin 子目录 |-----category.php 控制器文件 究竟是不是呢?咱们打开welcome.php控制器文件,并在index方法中添加一些代码,运行输出,证实确实如咱们所料 咱们能够将浏览器中的url概括以下:http://域名/入口文件/控制器/方法/参数列表 当输入网址回车时,默认状况下会直接从controllers目录下寻找控制器文件, 若是咱们的控制器文件放在controllers目录下的子目录中,又该如何访问呢? 例如:在controllers目录创建一个admin子目录,而后呢,在admin子目录下建立一个category.php控制器文件 那么,咱们在访问category.php控制器文件中的addcategory方法时,在浏览器中怎样访问呢? 咱们能够这样来访问: http://www.myshop.com/index.php/admin/category/addcategory/ 即:http://域名/入口文件/controllers下的子目录/控制器/方法/参数列表 咱们在浏览器中输入http://www.myshop.com/index.php 后面没有跟 "控制器/方法/参数列表" 回车时,默认状况下也会执行welcome.php控制器中的index方法。 这是由于ci框架为咱们指定了一个默认的控制器和方法 默认控制器的设置在 "application/config/routes.php" 配置文件中进行设置的,咱们能够从新设置默认的控制器 6、项目的部署:咱们在实际部署大型项目时,还能够创建一些子目录及文件来帮助咱们更好的管理咱们的项目 一、子目录及入口文件的建立 controllers |-----admin 后台控制器 |-----home 前台控制器 models |-----admin 后台模型文件 |-----home 前台模型文件 views |-----admin 后台模板文件 |-----category 后台商品分类模块相关的模板文件 |-----addcategory.html |-----public 后台公共模板文件 |-----top.html |-----left.html |-----footer.html |-----home 前台模板文件 core |-----MY_Controller.php 扩展后的控制器文件,继承CI_Controller public 素材文件 |-----images images文件 |-----admin 后台images文件 |-----home 前台images文件 |-----css css文件 |-----admin 后台css文件 |-----home 前台css文件 |-----js js文件 |-----admin 后台js文件 |-----home 前台js文件 uploads 上传附件 admin.php 后台入口文件:访问后台控制器,都必须通过admin.php入口 index.php 前台入口文件:访问前台控制器,都必须通过index.php入口 二、将后台模板文件及素材文件部署到咱们的ci项目中来 css文件中采用绝对路径 模板文件中采用绝对路径 三、创建后台控制器文件: application |-----controllers |-----admin |-----index.php index.php控制器文件 |-----user.php 用户控制器文件 控制器的命名规范 $this->load->view("admin/index.html");//将后台模板文件显示出来 四、将先后台素材文件的路径写到常量文件中:application/config/constants.php define("IMG_PATH","http://www.myshop.com/public/images/"); //images路径 define("CSS_PATH","http://www.myshop.com/public/css/"); //css路径 define("JS_PATH","http://www.myshop.com/public/js/"); //js路径 直接在控制器中获取常量的值: $data['img_path']=IMG_PATH; $data['css_path']=CSS_PATH; $data['js_path']=JS_PATH; 将$data数组传递给模板文件: $this->load->view("admin/index.html",$data);//参数2:关联数组 五、也能够将素材文件的路径放到application/config/config.php配置文件中 $config['img_path']="http://www.myshop.com/public/images/"; $config['js_path']="http://www.myshop.com/public/css/"; $config['js_path']="http://www.myshop.com/public/js/"; 在控制器中获取application/config/config.php配置文件中的配置项: $data['img_path']=$this->config->item("img_path"); $data['css_path']=$this->config->item("css_path"); $data['js_path']=$this->config->item("js_path"); 将$data数组传递给模板文件 $this->load->view("admin/index.html",$data);//参数2:关联数组 六、创建后台模型文件: application |-----models |-----admin |-----user_model.php 用户模型文件 模型文件的命名规范 如何在控制器中调用模型文件: //一、实例化后台的user_model类对象,对象名称为user_model //二、将user_model实例化对象做为控制器的user_model属性 //三、所以,咱们能够在控制器中经过 $this->user_model 来获取user_model类对象,继而能够调用对象中的方法 $this->load->model("admin/user_model"); $this->user_model->adduser(); 七、数据库操做: 数据表的建立:gt_users 导入一些数据 查询用户:首先在model中链接数据库,$this->load->database();而后咱们能够在模型类的方法中查询全部的数据 在ci框架中操做数据库可分为两种方式 (1)方式一:普通查询:经过sql语句及db类的query()方法来完成,以下所示: 下面,咱们先经过第一种方式来完成用户管理系统 //insert、delete、update操做返回布尔true或false //select操做成功时返回结果集对象,失败时返回布尔值false $query=$this->db->query($sql); //经过结果集对象的方法将结果集转化为数据或对象 $data_array=$query->result_array();//将结果集转换为二维关联数组 $row_array=$query->row_array();//将结果集转换为一维关联数组 //获取查询到的行数 $num=$query->num_rows(); //db类中insert_id():返回最后一次插入数据的id $id=$this->db->insert_id(); //分页类库的载入: $this->load->library("pagination");//载入system/libraries/pagination.php分页类库 //分页配置: $config['base_url']="http://www.myshop.com/index.php/user/userlist/"; $config['total_rows']=200;//总记录数,可从数据库获取 $config['per_page']=10;//每页显示的记录数 $config['...']="...";//其余配置 //初始化配置,使得分页配置生效 $this->pagination->initialize($config); //建立默认风格的分页代码 $pages=$this->pagination->create_links();//$content['pages'] //limit的值 $limit=($page-1)*$config['per_page']; //注意:传递给模板文件的数据都必须放到关联数组中,会将关联数组中元素作为变量 $this->load->view("login.html",$content);//至关于extract($content) //将分页配置信息放到application/config/pagination.php配置文件中 //载入pagination.php配置文件 $this->config->load("pagination"); //获取配置选项 $per_page=$this->config->item("per_page");//每页显示的记录数 链式操做:可采用链式操做 $data_array=$this->db->query($sql)->result_array(); $row_array=$this->db->query($sql)->row_array(); (2)方式二:快捷查询:主要经过快捷操做类来进行数据库操做(ActiveRecord) 什么是快捷操做类:主要用来将sql语句的拼接放到类的方法中来完成。 下面,咱们再使用第二种方式来完成用户管理系统 //查询操做 $this->db->get("users",10,20);//参数2:每页显示的记录数 参数3:开始查询位置 $this->db->get_where("users",array('id'=>1),10,20);//参数3:每页显示的记录数 //案例1:在函数内部帮助咱们自动拼接sql语句 $this->db->select("*");//一、返回一个db类实例化对象 二、将实例化对象做为模型类的db属性 $this->db->from("users"); $this->db->where("id",3); $this->db->order_by("id","desc"); $this->db->get(); //案例2: $this->db->select("*"); $this->db->where("id",3); $this->db->order_by("id","desc"); $this->db->get("users"); $this->db->count_all_results();//获取查询到的总记录数 //插入操做: $this->db->insert("users",$data_array);//参数1:表名 参数2:关联数组 //更新操做: $this->db->update("users",$data_array,$where);//参数1:表名 参数3:关联数组 //删除操做: $this->db->delete("users",$where);//参数1:表名 参数2:关联数组 //关于$where条件分析: 单条件时:使用键值对形式的条件 作比较时:使用运算符格式的条件 多条件时:使用关联数组的格式 链式操做: //将结果集转化为二维关联数组 $data_array=$this->db->select('title')->from('mytable')->where('id', $id)->limit($limit, $pagesize)->get()->result_array(); //将结果集转化为一维关联数组 $row_array=$this->db->select('title')->from('mytable')->where('id', $id)->get()->row_array(); ?>