jxdiscuz 发表于 2015-8-19 11:47:24

LAMP兄弟连ThinkPHP笔记

   学习笔记
  
  
  一、MVC学习
  a) V    VIEW      视图(模板、    业务员)
  b) C   CONTROL   控制器(模块、    管理层)
  c) M    Model      模型(数据库操作、工厂)
  
  
  二、主入口学习(Index.php)
  a) APP_PATH/APP_NAME:程序路径和程序文件夹名
  b) THINK_PATH:THINK程序路径
  c) STRIP_RUNTIME_SPACE:生成的编译缓存文件是否去注释和空白
  
  
  三、控制器(模块)、动作与URL路径学习
  a) URL路径:
  i. index.php/index/hello   主入口/模块/动作
  b) URL几种模式:
  0    普通      index.php?m=index&a=hello
  1   Pathinfo    index.php/index/hello
  2    rewrite    index/hello
  3   兼容   index.php?s=/index/hello
  
  四、模板学习
  a) 控制器对应路径、动作对应模板
  b) Display()显示模板
  i. 跨模板:display("模板名")
  ii. 跨模块:display("控制器名:动作名")
  iii. 跨皮肤:display("皮肤名@目录:模板名")
  iv. 全路径:display("./Public/模板名") 注:路径相对于主入口
  
  五、路径学习
  __ROOT__:根目录   __SELF__:全URL   __URL__: 模块目录   __APP__: 入口文件目录    __ACTION__:动作目录    TEMPLATE_PATH:模板目录    WEB_PUBLIC_PATH:公用目录
  
  六、模型实例化的几种方法
  1、实例系统模型:    $user = M('User');等价于 $user = new Model('user');       //实例TP中的Model.php
  2、实例自定义模型:$user = D('User');   等价于 $user = new UserModel();//只针对此表操作
  3、跨模型实例:       $user = M('User','CommModel);//用于公用模块、CU RD和关联操作
  4、空模型实例:       $user = M();    //什么都没有
  
  七、CURD和关联操作
  
  1、连贯操作:$list = $user->field('id,name')->where('id=1')->order('id desc')->select();//查询user表中,id为1的 id,name 数据
  
  2、find、findAll和select区别:find--查询一条数据,为一维数组;findAll == select 查询多条数据,为二维数组;
  3、Table:多表操作; $list = $user->table(' user u,order o ')->where(' u.id=o.id ')->select(); //查询user和order表中,id相同的数据
  4、getField:获取指定字段内容; $list = $user->where('id=1')->getField('name');//获取id为1的用户名称
  5、add()和save():添加和保存信息;    $list = $user->add('name=123'); //添加
  $list = $user->where('id=1')->save('name=456');//编辑
  6、setInc()和setDec():数值+1/-1
  
  八、create与自动令牌
  1、什么是令牌?一个在FORM表单中,系统预先定义的一个加密字符串,用于验证是否站外提交.
  如:<input type='hidden' name='__hash__' value='123456789sss'>
  2、create():根据表单提交的POST数据创建数据对象
  
  
  九、查询表达式    $data['id'] = array(array("gt",' 250'),array("gt",' 253'),array('in','251'),'or');    //eq(==) gt(>) lt(<) between(在。。中) in(在。中) like(相似)       //复合表达式    $data['status'] = array( array('egt',2) , array('elt',5) );    $data['id'] = array('lt',60);    $data['_logic'] = 'or';         //关系为OR    $where['_complex'] = $data;       //组合关系   ( (`status` >= 2) AND (`status` <= 5) ) OR ( `id` < 60 ) )    $where['id'] = array('in','56,57'); //AND ( `id` IN (56,57)    //SELECT id,status FROM `rfcms_order` WHERE ( ( (`status` >= 2) AND (`status` <= 5) ) OR ( `id` < 60 ) ) AND ( `id` IN (56,57) )    $list = $member->where($where)->field('id,status')->select();   //统计查询   $list = $member->count();   //统计总条数   $list = $member->sum('price'); //统计总和   $list = $member->avg('price'); //平均数   //定位   $member = new AdvModel('member'); //需要继承AdvModel   $list = $member->order('id desc')->getN(N); //获取N-1条   $list = $member->order('id desc')->first(); //获取第一条   $list = $member->order('id desc')->last();   $list = $member->order('id desc')->top2();//获取前两条
  
  十、分页与验证码
  1、分页
  import('@.Org.page');   //引入分页类
  $member = D('member');   $cnt = $member->count();//统计总条数   $page = new Page($cnt,3); //实例分页 Page('总的记录数','每页显示记录数')   $show = $page->show();    //分页显示输出   $list = $member->field('id,name')->limit( $page->firstRow .','. $page->listRows )->select();   $this->assign('page',$show);   
$this->assign('member',$list);   $this->display();
  2、验证码:
  //生成图像验证码public function verify(){       import('@.Org.Image');       Image::buildImageVerify(); //生成图像验证码
  //Image::GBVerify();生成中文验证注:1、需要拷贝中文字体到'@.Org'目录2、需要修改Image.class.php中322行,msubstr为String::msubstr    }
  html中调用方法:<img src="__URL__/verify"/>
  验证:if (md5($_POST['verify']) == $_SESSION['verify']){.....}
  
  十一、多语言和多皮肤
  1、多语言:A、需要在Lang目录下建立几个语言文件夹,如:zh-cn,zh-tw,en-us;并且新建一个与之相对应的语言集
  B、开启conf/config.php 配置文件中,'LANG_SWITCH_ON'=>true
  C、在TPL文件中引入:<a href="?l=zh-cn">中文</a><ahref="?l=en-us">englist</a>....<div>{$Think.lang.welcome}</div>
  2、多皮肤:A、需要在Tpl目录下建立几个语言文件夹,如:Red,Black,Blue;并且新建一个与之相对应                                                
  B、开启conf/config.php 配置文件中, 'TMPL_DETECT_THEME' =>true;
  C、在TPL文件中引入:<a href="?t=Red">红色</a><ahref="?t=black">黑色t</a>....
  
  十一、动态缓存
  1、S('data',$Data,3600);   // 设置缓存,缓存$Data数据3600秒
  2、$Data = S('data'); // 获取缓存数据
  3、S('data',NULL); // 删除缓存数据
  
  十二、视图
  <?php class UserViewModel extends ViewModel{ //继承视图模型protected   $viewFields = array(   'user' =>array('id,name,pwd'),   'msg'   =>array('title','_on'=>'user.id=msg.uid'), //建立关联);//selectu.*,m.title from user u,msg m where u.id=m.uid
} //TP引用视图:方便表链接查询 $user = new UserViewModel(); $list =$user->select(); dump($list); ?>
  
  
  转自:http://hi.baidu.com/zdy66/item/fd86b908b4adb3c02f4c6b68
  谢了!
页: [1]
查看完整版本: LAMP兄弟连ThinkPHP笔记