码迷,mamicode.com
首页 > Web开发 > 详细

thinkphp的那点事儿(笔记)

时间:2015-08-09 16:53:54      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

ThinkPHP(3.2.3版本)是基于MVC模式的并支持多层mvc的架构设计
M 项目目录/应用目录/Home/Model
 V 项目目录/应用目录/View
 C 项目目录/应用目录/Home/Controller
首先引入单入口文件
技术分享
 URL模式
1.PATHINFO 模式    http ://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2
2.普通模式    http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2
3.REWRITE模块    http://域名/项目名/模块名/方法名/键1/值1/键2/值2
4.兼容模式    http://域名/项目名/入口文件?s=模块名/方法名/键1/值1/键2/值2
在conf/conf.php的配置来URL_MODEL
技术分享 
 例如:
<?php
// 本类由系统自动生成,仅供测试用途
class IndexController extends Controller {
    public function index(){
        echo "hello library";
}
    public function add(){
        echo "你好,yonghu<br>";
        echo ‘填写书名‘.$_GET[‘bookname‘].‘作者是‘.$_GET[‘author‘];
    }
}
public function add(){
      echo ‘填写书名‘.$_GET[‘bookname‘].‘作者是‘.$_GET[‘author‘];*/
      $bookname=‘狼图腾‘;
      $this->assign(‘bookname‘,$bookname);
      $this->display();
 }
<meta http-equiv="content-type" content="text/html;charset=utf-8">
一些动态的数据可以通过assign()方法分配给模板显示
<h1>访问了add方法。</h1>
<p>你好!{$bookname}</p>
D:\wamp\www\library\App\View\Index
 
需要在方法中通过new Model(表名)的形式操作数据库
  $m=new Model(‘User‘);
  $arr=$m->select(); 
//连接数据库配置
 ‘DB_TYPE‘=>‘mysql‘,   //设置数据库类型
 ‘DB_HOST‘=>‘localhost‘,//设置主机
 ‘DB_NAME‘=>‘library‘,//设置数据库名
 ‘DB_USER‘=>‘root‘,    //设置用户名
 ‘DB_PWD‘=>‘‘,        //设置密码
 ‘DB_PORT‘=>‘3306‘,   //设置端口号
 ‘DB_PREFIX‘=>‘tb_‘,  //设置表前缀
 
技术分享
 $user=new Model(‘User‘);//实例化$user(
还有一种简单实用模型的方式
 M();等效为 new Model();
 $m=M(‘User‘);
);
 
    $arr=$user->select();
    var_dump($arr);
    $this->display();

CURD操作

使用模型的实例可以对数据进行操作,操作的工作一般就是对数据库进行 增删改查 CURD
 增 -C Create $m->add();
 改 -U Update $m->save();
 查 -R Read   $m->select();
 删 -D Delete $m->delete();
a、模板可以遍历数组
在html文件遍历数组
①<volist name=‘data‘ id=‘vo‘>
   {$vo.id}----{$vo.bookname}-----{$vo.author}<br/>
  </volist>
②<foreach name="data" item="v">
  {$v.id}----{$v.bookname}-----{$v.author}<br/>
</foreach>
 
 b、我们可以开启调试功能中的page_trace
  1.开启调试功能
//index.php单入口文件加入
   define(‘APP_DEBUG‘,true);
  2.需要设置配置文件,开启页面trace
   ‘SHOW_PAGE_TRACE‘=>true,//开启页面Trace
 
读取数据
 对数据的读取 Read
 $m=M(‘User‘);  //实例化
 select:$m->select();    //获取所有数据,以数组形式返回
 find:$m->find($id);    //获取单条数据
 getField(字段名)    //获取一个具体的字段值
 $arr=$m->where(‘id=2‘)->getField(‘bookname‘);
创建数据   
技术分享
删除数据   
   技术分享
更新数据
 技术分享
 
技术分享
技术分享
技术分享
技术分享
技术分享
技术分享技术分享技术分享
技术分享技术分享技术分享技术分享技术分享
==================================================================================================================================================================================================
查询方式:
一、普通查询方式
 a、字符串查询
  $arr=$m->where("id=1 and bookname=‘狼图腾‘")->find();
 b、数组查询
  $data=array(
  ‘id‘=>‘1‘,
  ‘bookname‘=>‘狼图腾‘
);
  $arr=$m->where($data)->find();
  注意:这种方式默认是and的关系.
二、表达式查询方式
  $data[‘id‘]=array(‘lt‘,6);    $arr=$m->where($data)->select();
  EQ 等于,NEQ不等于, GT 大于,EGT大于等于, LT 小于,ELT小于等于,LIKE 模糊查询
   $data[‘bookname‘]=array(‘like‘,‘.%bookname%.‘);  
   $arr=$m->where($data)->select();
  BETWEEN
   $data[‘id‘]=array(‘between‘,array(5,7));    $arr=$m->where($data)->select();
   //sql语句SELECT * FROM `tp_user` WHERE ( (`id` BETWEEN 5 AND 7 ) )
   $data[‘id‘]=array(‘not between‘,array(5,7));    $arr=$m->where($data)->select();
  IN
   $data[‘id‘]=array(‘in‘,array(4,6,7));    $arr=$m->where($data)->select();
   //sql语句SELECT * FROM `tp_user` WHERE ( `id` IN (4,6,7) )
   $data[‘id‘]=array(‘not in‘,array(4,6,7));    $arr=$m->where($data)->select();
   //sql语句SELECT * FROM `tp_user` WHERE ( `id` NOT IN (4,6,7) )
三、区间查询
  $data[‘id‘]=array(array(‘gt‘,4),array(‘lt‘,10));    //默认关系是 and 的关系
  //SELECT * FROM `tp_user` WHERE ( (`id` > 4) AND (`id` < 10) )
  $data[‘id‘]=array(array(‘gt‘,4),array(‘lt‘,10),‘or‘)     //关系就是or的关系
  $data[‘name‘]=array(array(‘like‘,‘%2%‘),array(‘like‘,‘%五%‘),‘gege‘,‘or‘);
四、统计查询
  count  //获取个数;max   //获取最大数;min   //获取最小数;avg   //获取平均数;sum   //获取总和
五、SQL直接查询
 a、query 主要是处理读取数据的:成功返回数据的结果集,失败返回boolean false
  $m=M();
  $result=$m->query("select *  from t_user where id >50");
  var_dump($result);
 b、execute 用于更新个写入操作:成功返回影响行数,失败返回boolean false
  $m=M();
  $result=$m->execute("insert into t_user(`username`) values(‘ztz3‘)");
  var_dump($result);
 
‘DB_LIKE_FIELDS‘=>‘title|content‘     //查询语句中条件自动变为模糊查询%%
技术分享
技术分享
技术分享
技术分享
=====================================================================================================
技术分享
技术分享
技术分享
==================================================================================================================================================================================================
视图:
一、模板的使用        
 a、规则
  模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].html(.tpl)
  更换模板文件的后缀名(修改配置文件)
  ‘TMPL_TEMPLATE_SUFFIX‘=>‘.html‘,    //更改模板文件后缀名
 b、修改模板文件目录层次
  ‘TMPL_FILE_DEPR‘=>‘_‘,    //修改模板文件目录层次
 c、模板主题
  ‘DEFAULT_THEME‘=>‘library‘,    //设置默认模板主题
  需要在TPL下面新建一个library文件夹作为模板主题文件夹
  如何动态修改模板主题?
  1、在后台准备一个功能,修改config.php文件中的默认模板项
  2、通过url传递 t=主题 参数可以修改不同的模板
   ‘DEFAULT_THEME‘=>‘library‘,//设置默认模板主题
   ‘TMPL_DETECT_THEME‘=>true,//自动侦测模板主题
   ‘THEME_LIST‘=>‘library‘,‘book‘//支持的模板主题列表
二、输出模板内容   
 a、display
  1.display中没有参数:$this->display();
//注:如果是不带参数的display默认访问的是以当前所在控制器为命名的html/htm/php文件保存在View目录下
  2.可以带参数
   $this->display(本模块文件夹下的其他模板文件);
   $this->display(‘index2‘);
   $this->display(其他文件夹下的模板文件);
   $this->display(‘Public:error‘);    //注意,仅仅需要在View下有Public文件夹以及其中的error.html即可,不需要一定有Public模块
   $this->display(其他主题下的 文件夹下的 模板文件);    //需要开启主题支持
   $this->display(‘my:Index:index‘);
   $this->display(一个URL路径);
   $this->display(‘./Public/error.html‘);
   $this->display(‘./Public/error.html‘,‘utf-8‘,‘text/xml‘);
   $this->show($content);
  
三、模板中的赋值      
  $this->assign(‘data‘,$data);
  $this->display();
四、模板替换      
__PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/
__ROOT__: 会替换成当前网站的地址(不含域名)
__APP__: 会替换成当前项目的URL地址 (不含域名)
__GROUP__:会替换成当前分组的URL地址 (不含域名)
__URL__: 会替换成当前模块的URL地址(不含域名)
__ACTION__:会替换成当前操作的URL地址 (不含域名)
__SELF__: 会替换成当前的页面URL
  更换模板变量规则,修改配置项
  ‘TMPL_PARSE_STRING‘=>array(           //添加自己的模板变量规则
  ‘__CSS__‘=>__ROOT__.‘/Public/Css‘,
  ‘__JS__‘=>__ROOT__.‘/Public/Js‘,
 ),
 
技术分享技术分享
==================================================================================================================================================================================================
模板中的变量:
一、变量输出        
  1.标量输出
  2.数组输出
    {$name[1]}    {$name[‘k2‘]}    {$name.k1}
  3.对象输出
    {$name:k}    {$name->k}
二、系统变量
 
三、使用函数
  {$name|strtoupper} 生成的编译后文件是: <?php echo (strtoupper($name)); ?>
  {$name|date=‘Y m d H:i:s‘,###}
四、默认值
  {$name|default=‘这里是默认值‘}
五、运算符
  + - * / % ++ --        {$name++}
 
模板中的基本语法:
一、导入CSS和JS文件      
 1、<link rel=‘stylesheet‘ type=‘text/css‘ href=‘__PUBLIC__/Css/test.css‘/>
      <script src=‘__PUBLIC__/Js/test.js‘></script>
2.load
  <load href=‘__PUBLIC__/Js/test.js‘ />     //方法可以自动检测导入的文件类型
二、分支结构
  技术分享
三、循环结构
 1.for
  <table border=‘1‘ width=‘500‘>
       <for start=‘10‘ end=‘00‘ name=‘j‘ step=‘-2‘ comparison=‘gt‘>
            <tr><td>{$j}</td><td>abc</td></tr>
       </for>
  </table>
 2.volist
  <volist name=‘data‘ id=‘v‘>
   {$v.bookname}<br/>
  </volist>
 3.foreach
  $user=M(‘User1‘);
  $arr=$user->select();
  $this->assign(‘list‘,$arr);
  $this->display();
 
 <foreach name=‘data‘ item=‘v‘>
      <tr>
           <td>{$v.id}</td>
           <td>{$v.bookname}</td>
           <td>{$v.author}</td>
           <td>{$v.published}</td>
      </tr>
 </foreach>
 
四、其他标签使用
 1、在模板中直接使用PHP代码
  <php> var_dump($data); </php>
 2、建议更改左右定界符
  在配置文件中改变
   ‘TMPL_L_DELIM‘=>‘<{‘, //修改左定界符
   ‘TMPL_R_DELIM‘=>‘}>‘, //修改右定界符
 
 
==================================================================================================================================================================================================
控制器的模块和操作:
一、空模块和空操作
 1、空操作
  public function _empty($name){
   $this->show("$name 不存在 <a href=‘__APP__/Index/index‘>返回首页</a>");
  }
 2.空模块
 class EmptyController extends Controller{
     public function index(){
           $city=M(‘City‘);
           $data=$city->select();
           $this->assign(‘data‘,$data);
           $name=MODULE_NAME;
           $this->display("City:$name");
  }
 }
二、前置操作和后置操作
 1、前置操作: _before_操作名
 2、后置操作: _after_操作名
技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享
 
技术分享技术分享
==================================================================================================================================================================================================
URL:
‘URL_CASE_INSENSITIVE‘=>true,//url不区分大小写
‘URL_HTML_SUFFIX‘=>‘html|shtml|xml‘,//限制伪静态的后缀
一、URL规则
1、默认是区分大小写的
2、如果我们不想区分大小写可以改配置文件
‘URL_CASE_INSENSITIVE‘=>true,    //url不区分大小写

二、URL生成
页面跳转
 $this->success(‘查询成功‘,U(‘Index/select‘));
 $this->redirect(‘Index/select‘‘,‘‘,5,‘页面正在跳‘);
‘APP_GROUP_LIST‘ => ‘Home,Admin‘, //项目分组设定
‘DEFAULT_GROUP‘  => ‘Home‘, //默认分组

thinkphp的那点事儿(笔记)

标签:

原文地址:http://www.cnblogs.com/wanghengjia/p/4714897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!