[转]赵桐正thinkphp教程笔记

原文: ,有修改

常用配置

    常用配置config.php:

'配置值' 'URL_PATHINFO_DEPR' => '/',
'TMPL_L_DELIM' => '<{',<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;左定界符</span>
'TMPL_R_DELIM' => '}>',<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;右定界符

//数据库相关</span>
'DB_PREFIX' => 'mb_','DB_DSN' => 'mysql://root:admin@localhost:3306/myblog',<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;打开页面跟踪</span>
'SHOW_PAGE_TRACE' => <span style="color: #0000ff;"&gt;true</span>,<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;模板文件</span>
'TMPL_TEMPLATE_SUFFIX' => '.tpl',<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;后缀名</span>
'TMPL_FILE_DEPR' => '_',<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;修改模板文件目录层次

//模板主题</span>
'DEFAULT_THEME' => 'my','TMPL_DETECT_THEME' => <span style="color: #0000ff;"&gt;true</span>,'THEME_LIST' => 'your,my',<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;支持的模板列表

//自定义模板常量</span>
'TMPL_PARSE_STRING' => <span style="color: #0000ff;"&gt;array</span><span style="color: #000000;"&gt;(
    </span>'__CSS__' => __ROOT__.'/Public/css','__JS__' => __ROOT__.'/Public/js'<span style="color: #000000;"&gt;
)</span>,<span style="color: #000000;"&gt;

);
?>

    在config.php中配置:

'DB_TYPE'=>'mysql', 'DB_HOST'=>'localhost', 'DB_NAME'=>'thinkphp', 'DB_USER'=>'root', 'DB_PWD'=>'', 'DB_PORT'=>'3306', 'DB_PREFIX'=>'tp_', 'DB_DSN'=>'mysql://root:root@localhost :3306/thinkphp',

    连接:需要在方法中通过new Model(表名)的形式操作数据库

= Model('User'=->select();

=M('User'=->select();

add() 

    删 -D Delete $m->delete() 

    改 -U Update $m->save() 

    查 -R Read   $m->select() 

 通过 $m->getDbError(); 可以输出数据库的错误信息

读取数据

    对数据的读取 Read

= Model('User'=M('User'<span style="color: #008000;">//<span style="color: #008000;">select
<span style="color: #800080;">$m
->select();<span style="color: #008000;">//
<span style="color: #008000;">获取所有数据,以数组形式返回

//find
<span style="color: #800080;">$m->find(<span style="color: #800080;">$id);<span style="color: #008000;">//<span style="color: #008000;">获取单条数据

//getField(字段名)//获取一个具体的字段值
<span style="color: #800080;">$arr=<span style="color: #800080;">$m->where('id=2')->getField('username');

    对数据的添加 Create  

= Model('User'=M('User'字段名=值 -> 'name' = 'tim' = ->

删除数据

    对数据的删除

=M('User' = ->delete(2);

<span style="color: #800080;">$ret = <span style="color: #800080;">$m->where('id=2')->delete(); <span style="color: #008000;">//<span style="color: #008000;">与上面效果相同,也是删除id为2的数据
//返回值$ret是受影响行数

更新数据

    对数据的更新

=M('User'['id']=1['username']='ztz2' = ->save(

    a、字符串

=->where("sex=0 and username='gege'")->find();

    b、数组

['sex']=0['username']='gege'=->where()-><span style="color: #008000;">//<span style="color: #008000;">注意:这种方式默认是and的关系,如果使用or关系,需要添加数组值
<span style="color: #800080;">$data
['sex']=0<span style="color: #000000;">;
<span style="color: #800080;">$data
['username']='gege'<span style="color: #000000;">;
<span style="color: #800080;">$data
['_logic']='or';

2、表达式查询方式

['id']=('lt',6=->where()-><span style="color: #008000;">//<span style="color: #008000;">其他比较操作符
//EQ 等于
//NEQ不等于
//GT 大于
//EGT大于等于
//LT 小于
//ELT小于等于
//LIKE 模糊查询

<span style="color: #800080;">$data
['username']=<span style="color: #0000ff;">array
('like','%ge'<span style="color: #000000;">);

<span style="color: #008000;">//<span style="color: #008000;">NOTLIKE
<span style="color: #800080;">$data['username']=<span style="color: #0000ff;">array('notlike','%ge%'); <span style="color: #008000;">//<span style="color: #008000;">notlike中间没有空格

//注意:如果一个字段要匹配多个通配符
<span style="color: #800080;">$data['username']=<span style="color: #0000ff;">array('like',<span style="color: #0000ff;">array('%ge%','%2%','%五%'),'and');<span style="color: #008000;">//<span style="color: #008000;">如果没有第三个值,默认关系是or关系
<span style="color: #800080;">$arr=<span style="color: #800080;">$m->where(<span style="color: #800080;">$data)-><span style="color: #000000;">select();

<span style="color: #008000;">//<span style="color: #008000;">BETWEEN
<span style="color: #800080;">$data['id']=<span style="color: #0000ff;">array('between',<span style="color: #0000ff;">array(5,7<span style="color: #000000;">));
<span style="color: #008000;">//<span style="color: #008000;">SELECT * FROM tp_user WHERE ( (id BETWEEN 5 AND 7 ) )
<span style="color: #800080;">$data['id']=<span style="color: #0000ff;">array('not between',7));<span style="color: #008000;">//<span style="color: #008000;">注意,not 和 between中间一定要有空格

//IN
<span style="color: #800080;">$data['id']=<span style="color: #0000ff;">array('in',<span style="color: #0000ff;">array(4,6,7<span style="color: #000000;">));
<span style="color: #008000;">//<span style="color: #008000;">SELECT * FROM tp_user WHERE ( id IN (4,7) )

//NOT IN
<span style="color: #800080;">$data['id']=<span style="color: #0000ff;">array('not in',7<span style="color: #000000;">));
<span style="color: #008000;">//<span style="color: #008000;">SELECT * FROM tp_user WHERE ( id NOT IN (4,7) )

['id']=(('gt',4),('lt',10)); 4) AND (`id` < 10) )

<span style="color: #800080;">$data['id']=<span style="color: #0000ff;">array(<span style="color: #0000ff;">array('gt',10),'or') <span style="color: #008000;">//<span style="color: #008000;">关系就是or的关系
<span style="color: #800080;">$data['name']=<span style="color: #0000ff;">array(<span style="color: #0000ff;">array('like','%2%'),<span style="color: #0000ff;">array('like','gege','or');

avg sum

    a、query 主要数处理读取数据的

    成功返回数据的结果集,失败返回boolean false

==->query("select * from t_user where id >50"

        成功返回影响行数,失败返回boolean false

==->execute("insert into t_user(`username`) values('ztz3')");

    1.where 帮助我们设置查询条件

    2.order 对结果进行排序

=->order('id desc')->=->order(('id'=>'desc','sex'=>'asc'))->select();

limit(2,5'2,5'10)

field('username as name,id'('username'=>'name','id''id',)

    6.group

    7.having

    8.other

alias page * union* distinct lock cache relation validate auto filter scope*

 a、display

  1.display中没有参数

->display();

->->display('index2'<span style="color: #800080;">$this-><span style="color: #000000;">display(其他文件夹下的模板文件);
<span style="color: #800080;">$this
->display('Public:error');<span style="color: #008000;">//<span style="color: #008000;">注意,仅仅需要在Tpl下有Public文件夹以及其中的error.html即可,不需要一定有Public模块

<span style="color: #800080;">$this->display(其他主题下的 文件夹下的 模板文件);<span style="color: #008000;">//<span style="color: #008000;">需要开启主题支持
<span style="color: #800080;">$this->display('my:Index:index'<span style="color: #000000;">);

<span style="color: #800080;">$this-><span style="color: #000000;">display(一个url路径);
<span style="color: #800080;">$this->display('./Public/error.html'<span style="color: #000000;">);
<span style="color: #800080;">$this->display('./Public/error.html','utf-8','text/xml'<span style="color: #000000;">);
<span style="color: #800080;">$this->show(<span style="color: #800080;">$content);

   获得模板文件中的内容,以字符串形式返回

=->fetch('Public:error');

   不需要模板文件,可以直接输出模板内容

=->fetch('Public:error'=('h1','i',->show();

->assign('name','赵桐正'<span style="color: #008000;">//<span style="color: #008000;">or
<span style="color: #800080;">$this->name='赵桐正2'<span style="color: #000000;">;

<span style="color: #800080;">$this->display();

__PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/

__ROOT__: 会替换成当前网站的地址(不含域名) 

__APP__: 会替换成当前项目的URL地址 (不含域名)

__GROUP__:会替换成当前分组的URL地址 (不含域名)

__URL__: 会替换成当前模块的URL地址(不含域名)

__ACTION__:会替换成当前操作的URL地址 (不含域名)

__SELF__: 会替换成当前的页面URL

更换模板变量规则,修改配置项:

'TMPL_PARSE_STRING'=>( '__CSS__'=>__ROOT__.'/Public/Css','__JS__'=>__ROOT__.'/Public/Js',,

  1.标量输出

  2.数组输出

{[1['k2'.k1}

{:->k}

{.get.id}

 

{|<span style="color: #008000;">//<span style="color: #008000;">生成的编译后文件是
<?php <span style="color: #0000ff;">echo (<span style="color: #008080;">strtoupper(<span style="color: #800080;">$name)); ?>

<span style="color: #008000;">//<span style="color: #008000;">如果值不是函数的第一个参数,可以用###占位
{<span style="color: #800080;">$name|<span style="color: #008080;">date='Y m d H:i:s',<span style="color: #008000;">#<span style="color: #008000;">##}

 

{|='这里是默认值'}

+ - * / % ++ -- {++}

导入CSS和JS文件       

 1、css link, js src

<span style="color: #008000;">
<span style="color: #0000ff;"><<span style="color: #800000;">import <span style="color: #ff0000;">type<span style="color: #0000ff;">='js' <span style="color: #ff0000;">file<span style="color: #0000ff;">='Js.my' <span style="color: #ff0000;">basepath<span style="color: #0000ff;">='./Other'<span style="color: #0000ff;">/>

 1、if

<span style="color: #0000ff;"><<span style="color: #800000;">if <span style="color: #ff0000;">condition<span style="color: #0000ff;">='$age <span style="color: #ff0000;">lt 18'<span style="color: #0000ff;">><span style="color: #000000;">
未成年
<span style="color: #0000ff;"><<span style="color: #800000;">elseif <span style="color: #ff0000;">condition<span style="color: #0000ff;">='$age <span style="color: #ff0000;">eq 18'<span style="color: #0000ff;">/><span style="color: #000000;">
青春年少
<span style="color: #0000ff;"><<span style="color: #800000;">else <span style="color: #0000ff;">/><span style="color: #000000;">
成年
<span style="color: #0000ff;"></<span style="color: #800000;">if<span style="color: #0000ff;">>

    常用的比较操作符有:

<span style="color: #008000;">//<span style="color: #008000;"><
<span style="color: #000000;">lt

<span style="color: #008000;">//<span style="color: #008000;">==
<span style="color: #000000;">eq

<span style="color: #008000;">//<span style="color: #008000;"><=
<span style="color: #000000;">elt

<span style="color: #008000;">//<span style="color: #008000;">>=
<span style="color: #000000;">egt

<span style="color: #008000;">//<span style="color: #008000;">!=
<span style="color: #000000;">neq

<span style="color: #008000;">//<span style="color: #008000;">===
<span style="color: #000000;">heq

<span style="color: #008000;">//<span style="color: #008000;">!==
nheq

 2、switch

< name='number'> < value='1'>一个和尚挑水吃> < value='2'>两个和尚台水吃> < value='3'>三个和尚没水吃> </>>

 1.for

<{$j}<abc

 1、比较标签

  in

在这些数字里面不在这些数字的范围内 在这些数字里面不在这些数字的范围内

{$n}在1-10之间{$n}不在1到10之间

  标签来判断模板变量是否已经赋值:

m有赋值m没有赋值

  empty标签判断模板变量是否为空:

n为空赋值n有值

  判断常量是否已经定义

 6.Define

  在模板中定义常量

 7.Assing

  模板中变量赋值

 8.在模板中直接使用PHP代码

"我是赵桐正"

模板包含 

<span style="color: #0000ff;"><<span style="color: #800000;">include <span style="color: #ff0000;">file<span style="color: #0000ff;">="header"<span style="color: #ff0000;"> title<span style="color: #0000ff;">="ThinkPHP框架"<span style="color: #ff0000;">keywords<span style="color: #0000ff;">="开源WEB开发框架"<span style="color: #0000ff;">/>
<span style="color: #008000;">

<span style="color: #0000ff;"><<span style="color: #800000;">include <span style="color: #ff0000;">file<span style="color: #0000ff;">='file1,file2' <span style="color: #0000ff;">/>

模板渲染 

 1、自动开启模板渲染 设置配置文件 

'LAYOUT_ON'=>,

   如果在摸一个具体模板中不希望使用渲染模板,可以在页首添加{__NOCONTENT__}

 2、不开启自动模板渲染可以在每一个具体页面的页首添加 

  在渲染模板文件中也可以使用其他模板文件的内容

这里是渲染页面!!!

空模块和空操作 

 1、空操作,在action文件中定义 

 2.空模块

EmptyAction =M('City'=->->assign('list',=->display("City:"

前置操作和后置操作           

1、前置操作: _before_操作名2、后置操作: _after_操作名

URL规则

    1、默认是区分大小写的 

    2、如果我们不想区分大小写可以改配置文件

'URL_CASE_INSENSITIVE'=>,

    3、如果模块名为 UserGroupAction

 那么url找模块就必要要写成

http:

4、如果'URL_CASE_INSENSITIVE'=>false

 那么url也可以写为

http:

URL伪静态

'URL_HTML_SUFFIX'=>'html|shtml|xml',

URL路由

 1、启动路由

 要在配置文件中开启路由支持

 2、使用路由

 (1).规则表达式配置路由

'my'=>'Index/index', ':id/:num'=>'Index/index', 'year/:year/:month/:date'=>'Index/index', 'year/:year\d/:month\d/:date\d'=>'Index/index', 'my/:id$'=>'Index/index',

 (2).正则表达式配置路由

'/^year\/(\d{4})\/(\d{2})\/(\d{2})/'=>'Index/index?year=:1&month=:2&date=:3'

 (3)、注意事项:

 1).越复杂的路由越往前面放

'URL_ROUTE_RULES'=>'my/:year/:month:/:day'=>'Index/day','my/:id\d'=>'Index/index','my/:name'=>'Index/index',

2).可以使用$作为完全匹配的路由规则

'URL_ROUTE_RULES'=>'my/:id\d$'=>'Index/index','my/:name$'=>'Index/index','my/:year/:month:/:day$'=>'Index/day',

3).用正则匹配的方式

'URL_ROUTE_RULES'=>'/^my\/(\d+)$/'=>'Index/index?id=:1','/^my\/(\w+)$/'=>'Index/index?name=:1','/^my\/(\d{4})\/(\d{2})\/(\d{2})$/'=>'Index/day?year=:1&month=:2&day=:3',

__ROOT__:网站根目录地址

__APP__: 当前应用(入口文件)地址

__MODULE__:当前模块的URL地址

__CONTROLLER__:当前控制器的URL地址

__ACTION__:当前操作的URL地址

__SELF__:当前URL地址

__INFO__:当前的PATH_INFO字符串

__EXT__:当前URL地址的扩展名

相关文章

(1)创建数据表: CREATE TABLE IF NOT EXISTS `think_form` ...
组合查询的主体还是采用数组方式查询,只是加入了一些特殊的...
(1)创建模版:/App/Home/View/Form/edit.html   <FORM m...
自定义配置文件user.php: <?php return array(    \'se...
在一些成熟的CMS系统中,后台一般都包含一个配置中心(如织梦...
废话不多说先上图预览下,即本博客的分页; 这个分页类是在...