ThinkPHP学习笔记1

   ThinkPHP 提供了三个 Model 类,供别的的 Model 进行持续。Model 类中是
MVC 中的模型类,它是调用 漫长层
的上层类。感觉这样描述难点重重,不过有怎么样措施呢?但是,那些 Model
有时不能满意大家的有的必要,因而大家须求自定义三个 Model
类出来,然而自定义的 Model 形似要持续 TP 提供的 Model
类,而把大家自定义的 Model 类作为大家项目中的 Model
基类。笔者怎么认为自身在说绕口令,等等…我有一点晕。

//TP 恶补ing... 

近来可比绕风乐趣地读书PHP,看完了一些基本功语法、学会了动用SMA宝马7系Y模版,进而看了ThinkPHP框架,

—恢复生机内容发轫—

 

风姿罗曼蒂克、定义数据表模型

此框架的刚劲超过本身的意料之外,它的ROHighlander真是强,还会有内置的CRUD,比JAVA的框架更智能。

前言
TP的手册比非常多,其实不用再出如此的贴子,论技巧,笔者也是生手一个,同有的时候间也在学习当中。
观察论坛上多了众多新对象,不菲在抱怨手册看不懂,那本人就姑且引玉之砖,尝试与新情大家更简便易行地、手把手地进去TP的使用中去。疏解进程中有错的地点,我们支持指正。

庸俗的必要

1.模型映射

有支持记念性的求学转发了一些之下小说

其风姿罗曼蒂克种类,开首定下的目的为,从零初阶,以TP示例主题中的Form为例实行教学,以实施为主,理论为辅,
将TP的最基本内容逛叁回,最少让大家黄金年代并学会如何实行最简便易行的对数码举行查、增、改、删操作并出口到模板。

  在利用 Java 的开源项目 JeeSite
时,养成了一个不佳的习于旧贯,习于旧贯给每张表都扩展create_by、create_date、update_by、update_date、remarks 和 del_flag
这么多少个字段。若是每张表都有那多少个字段,那么对每张表进行 insert
时都会对上述的字段举行安装,对每张表实行 update
时都会对中间有的字段进展翻新,对每条记下进行 delete 时都其实是对
del_flag 字段进展置位。重复操作比很多,一些操作方法被涂改。那么,那时将在自定义一个温馨的
Model 来作为项目标 基类 了,这一个 Model 就背负干上边小编说的这些事情了。

要测量检验数据库是不是健康连接,最直白的主意便是在时下调整器中实例化数据表,然后使用
dump 函数输出,查看数据库的链接状态。代码:

CUEvoqueD知识之大器晚成 C 成立(create)

由于大家说的是稳中求进,所以自身用步骤式来评释,只要一步一步跟着做,相信聪明的你在选拔进程中就可以精晓TP的使用了。

 

public function testdb(){        $obj=M("User");      dump($obj);  }

名词深入分析:
1  CURD:表示数据库八个基本操作:创造:create,更新:update,读取:read,删除:delete

留意:以下的手续,仅仅是TP灵活的安顿方式之中生机勃勃种,实际费用中能够依附本身的情事去重新设定。
至于缘何那么做,大家会在最后再作总括,我觉着先实际操作然后再扩充认证比较便于领悟。以下不再重复解释。

自定义一个 Model

这个时候浏览器输出:

2  模型对象:即数据对象,你项目里每二个Model类文件都会对应着三个数据表(或许视图),模型与数量表存在生机勃勃种炫酷关系。TP约定了命名要遵照一定的正统,要是不切合,则须要依照情形进行额外的相应设置。举例Model类的tableName属性

============================================

  自定义三个 Model,Model 中起码重新 TP 提供的 Model 中的
add、save、delete 和 select 方法。

图片 1图片 2

在第1节时,曾略为涉嫌Model类文件命名,今后再纪念一下那有个其余剧情:
我们事先在数据库中,已创建了二个think_form数据库表,而且在安排文件config.php中,我们定义了数据表的前缀是think_,
模型类(Model卡塔 尔(阿拉伯语:قطر‎文件的命名法规是:

黄金时代  异常快伊始贰个品种

  定义代码如下:

object(Model)#5 (20) {    ["_extModel:private"] => NULL    ["db:protected"] => object(DbMysql)#7 (18) {      ["dbType:protected"] => string(5) "MYSQL"      ["autoFree:protected"] => bool(false)      ["model:protected"] => string(7) "_think_"      ["pconnect:protected"] => bool(false)      ["queryStr:protected"] => string(28) "SHOW COLUMNS FROM `tpk_user`"      ["modelSql:protected"] => array(1) {        ["user"] => string(28) "SHOW COLUMNS FROM `tpk_user`"      }      ["lastInsID:protected"] => NULL      ["numRows:protected"] => int(2)      ["numCols:protected"] => int(0)      ["transTimes:protected"] => int(0)      ["error:protected"] => string(0) ""      ["linkID:protected"] => array(1) {        [0] => resource(27) of type (mysql link)      }      ["_linkID:protected"] => resource(27) of type (mysql link)      ["queryID:protected"] => resource(28) of type (mysql result)      ["connected:protected"] => bool(true)      ["comparison:protected"] => array(10) {        ["eq"] => string(1) "="        ["neq"] => string(2) "<>"        ["gt"] => string(1) ">"        ["egt"] => string(2) ">="        ["lt"] => string(1) "<"        ["elt"] => string(2) "<="        ["notlike"] => string(8) "NOT LIKE"        ["like"] => string(4) "LIKE"        ["in"] => string(2) "IN"        ["notin"] => string(6) "NOT IN"      }      ["selectSql:protected"] => string(96) "SELECT%DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT% %UNION%%COMMENT%"      ["bind:protected"] => array(0) {      }    }    ["pk:protected"] => string(2) "id"    ["tablePrefix:protected"] => string(4) "tpk_"    ["name:protected"] => string(4) "user"    ["dbName:protected"] => string(0) ""    ["connection:protected"] => string(0) ""    ["tableName:protected"] => string(0) ""    ["trueTableName:protected"] => string(8) "tpk_user"    ["error:protected"] => string(0) ""    ["fields:protected"] => array(5) {      [0] => string(2) "id"      [1] => string(8) "username"      ["_autoinc"] => bool(true)      ["_pk"] => string(2) "id"      ["_type"] => array(2) {        ["id"] => string(7) "int(11)"        ["username"] => string(11) "varchar(20)"      }    }    ["data:protected"] => array(0) {    }    ["options:protected"] => array(0) {    }    ["_validate:protected"] => array(0) {    }    ["_auto:protected"] => array(0) {    }    ["_map:protected"] => array(0) {    }    ["_scope:protected"] => array(0) {    }    ["autoCheckFields:protected"] => bool(true)    ["patchValidate:protected"] => bool(false)    ["methods:protected"] => array(13) {      [0] => string(5) "table"      [1] => string(5) "order"      [2] => string(5) "alias"      [3] => string(6) "having"      [4] => string(5) "group"      [5] => string(4) "lock"      [6] => string(8) "distinct"      [7] => string(4) "auto"      [8] => string(6) "filter"      [9] => string(8) "validate"      [10] => string(6) "result"      [11] => string(4) "bind"      [12] => string(5) "token"    }  }

不包含前缀的数据库表表名还要首字母大写+Model.class.php

名词解释:

 1 <?php
 2 namespace Admin\Model;
 3 use Think\Model;
 4 
 5 /**
 6  * 项目中其他 Model 类的基类
 7  * 该类继承自 TP 提供的基类 Model
 8  */
 9 class BaseModel extends Model {
10     
11     /**
12      * 继承基类 Model 的 add 方法
13      * 自动插入 id create_by create_date update_by update_date del_flag
14      */
15     public function add($data='',$options=array(),$replace=false) {
16         
17         $data["id"]          = $this->getUuid();
18         $data["create_by"]   = "";
19         $data["create_date"] = date("Y-m-d H:i:s");
20         $data["update_by"]   = "";
21         $data["update_date"] = date("Y-m-d H:i:s");
22         $data["del_flag"]    = '0';
23         
24         return parent::add($data, $options, $replace);
25     }
26     
27     /**
28      * 获得 未删除 的所有数据
29      * 记录是否被删除通过 del_flag 字段来进行确定
30      */
31     public function select($options=array()) {
32         $map["del_flag"] = 0;
33         $this->where($map);
34         
35         return parent::select($options);
36     }
37     
38     /**
39      * 获取 全部 的所有数据
40      */
41     public function selectAll($options=array()) {
42         return parent::select($options);
43     }
44     
45     /**
46      * 更新数据
47      * 更新数据时,要更新 update_by update_date 两个字段
48      */
49     public function save($data='',$options=array()) {
50         $data["update_by"]   = "";
51         $data["update_date"] = date("Y-m-d H:i:s");
52         
53         return parent::save($data, $options);
54     }
55     
56     /**
57      * 删除也是更新
58      * 设置 删除 标志位即可
59      */
60     public function delete($data='',$options=array()) {
61         $data["del_flag"] = 1;
62         
63         return parent::save($data, $options);
64     }

据此在此之前大家为think_form数据表在Myapp/Lib/Model目录下树立二个文件FormModel.class.php

花色:你要支付的系统,称之为项目。

  那样,我们的 BaseModel 就定义好了,以后项目中的 Model 就不再接续 TP
的 Model 类了,而是继续我们自定义的 BaseModel 了。

假定未有提醒错误即为成功。

模型类的特殊命名还足以智能识别驼峰式的表命名,假诺大家有个是相近think_new_table那样的表
能够命名字为NewTableModel.class.php。暗中同意配置便得以智能识别自动对应think_new_table表,因此不必修正配置。

进口文件:你能够领略为那么些项目标不二法门意气风发道门,未来全体的操作都会透过那道门去奉行拍卖。
毋庸理会什么意思,你还能够先把它看成是index.php正是进口文件

 

M(“User”) 就是模型映射,M 函数等于 new Model() ,Model
类是模型的基类,也是数据库操作的基类, “User”
是此类的一个成员属性,表示模型名称,模型名称与数据库中的数据表进行映射。注意:User
“U” 要大写,数据库中那个时候理应留存一张 user
表,系统会依照布署文件中的设置给 user 表增添前缀,比方tpk_user。要是不须求为表增加前缀,将模型名称首字母改为小写,举例M(“user”)。

支出进程中,只要轻易地定义好与数据表对应的模子类(xxxModel.class.php卡塔尔国,就可以进行对数码操作了。
如何让这几个模型支撑活动验证,自动填充,自动过滤这一个文化,在上面涉及届时会作相应讲授。

TP: ThinkPHP框架的简单称谓

世襲大家定义的基类

 

诚如的话,在表中添增加少都是通过表单来确立,为了更加直观地球科学习CU中华VD中的C,我们接下去创建个表单来进展加多数据的操作。
此前大家已在Myapp/Lib/Model/下树立好FormModel.class.php类—-模型(M)
同一时候也在Myapp/Lib/Action/下增添了多个Index应用模块和写下了叁个index操作—-调整器(C卡塔尔
还要在Tpl目录下树立了与之相应的模板目录Index及index.html模板文件 ——-视图(V卡塔尔国
MVC方式的开垦已反映了出来。
tdweb曾简要地满含了TP中那三者的涉嫌,

1 下载TP1.5正式版

  世襲的 BaseModel 的法门和继续 Model 的秘籍是相近的,只是利用 use
引进命名空间到当前遵从域时的内需改过为大家的命名空间,并不是再去采纳 TP
提供的命名空间。代码如下:

2.自定义模型

C的功用,正是从M中获得数据到V,

2 拟好您的项目名称,我们这里以 Myapp 为项目名称

1 <?php
2 namespace Admin\Model;
3 use Admin\Model\BaseModel;
4 
5 class TrunkModel extends BaseModel {

D
函数用于赶快实例化自定义模型,可以张开复杂的数据库操作,比方数据印证、数据缓存、数据加工等。自定义模型贮存在
Lib/Model 目录下,举个例子为数量表 tpk_article
数据表建模映射,则要求创制 ArticleModel.class.php,然后接纳 D
函数实行实例化,ArticleModel 模型将与 tpk_article 表进行映射。

运用TP以表单提交数据到库,流程和您所理解的表单提交未有啥分别,只是TP简化了数额操作的管理进程。
大家在实操中心得一下。
先来走访大家所定义的数目表form的字段:

3 在www根目录下,将TP框架全体文件全体复制过去,文件夹名称是ThinkPHP

  use 引入的命名空间是 Admin\Model\BaseModel ,因为我们定义的
BaseModel 的命名空间是 Admin\Model,因为此地的 TrunkModel 和 BaseModel
在三个命名空间下,省去 use 也是能够的。

例:使用 select() 输出 tpk_article 表的数据 ( select()
方法用于列出装有切合条件的数据 ) :

  1. ‘id’,//自动编号
  2. ‘title’,//标题
  3. ‘content’,//内容
  4. ‘create_time’,//创造时间
  5. ‘update_time’//更新时间
  6. ’email’,//邮箱
  7. ‘status’,//状态

4 与ThinkPHP同级新建一个文件夹,起名叫 Myapp,相当于项目名称

 

class IndexAction extends Action {          public function article(){        $obj=D("Article");      $rows=$obj->select();                  dump($rows);     }  }

复制代码

5 在www根目录下,创设四个PHP文件,起名index.php,那就是进口文件

  那样,在大家用 D 方法实例化 TrunkModel 的靶子后,使用 add
方法插入数据时,就能先调用 BaseModel 中的 add
方法了,那样我们每张表都有的 create_by 等一四种字段就都会自行获得了。

浏览器输出:

其中的create_time字段是为了记录数据插入的岁月,大家能够使用TP的数额自动填充来管理。

入口文件index.php代码:

图片 3图片 4

在Model类定义 $_auto
属性,能够产生多少自动管理效果,用来管理默许值和别的 onclick=”tagshow(event)”>系统写入字段。
小心1:该机关填写只怕会覆盖表单提交项目。其目标是为了防卫表单非法提交字段。
介怀2:要利用Model类的create方法创立数量对象的时候才会自行举办表单数据管理。

  1. <?php
  2.     // 定义ThinkPHP路径
  3.     define(‘THINK_PATH’,’./ThinkPHP’);
  4.     // 定义项目名称
  5.     define(‘APP_NAME’,’Myapp’);
  6.     // 定义项目路径
  7.     define(‘APP_PATH’,’./Myapp’);
  8.     // 加载入口文件
  9.     require(THINK_PATH.’/ThinkPHP.php’);
    1.     // 实例化那几个项目
    1.     $App = new App();
    1.     // 实施开头化
    1.     $App->run();
  10. ?>

array(6) {    [0] => array(7) {      ["id"] => string(1) "1"      ["title"] => string(4) "test"      ["content"] => string(12) "test_content"      ["category"] => string(13) "test_category"      ["area"] => string(6) "北京"      ["add_user"] => string(5) "admin"      ["add_time"] => string(19) "2014-11-20 23:03:44"    }    [1] => array(7) {      ["id"] => string(1) "2"      ["title"] => string(12) "吼吼吼吼"      ["content"] => string(18) "任溶溶柔然人"      ["category"] => string(14) "test_category2"      ["area"] => string(6) "河北"      ["add_user"] => string(5) "admin"      ["add_time"] => string(19) "2014-11-22 15:16:12"    }    [2] => array(7) {      ["id"] => string(1) "4"      ["title"] => string(7) "test2_m"      ["content"] => string(4) "haha"      ["category"] => string(0) ""      ["area"] => string(6) "福建"      ["add_user"] => NULL      ["add_time"] => string(19) "2014-11-22 11:44:26"    }    [3] => array(7) {      ["id"] => string(1) "5"      ["title"] => string(2) "22"      ["content"] => NULL      ["category"] => string(0) ""      ["area"] => string(6) "福建"      ["add_user"] => NULL      ["add_time"] => string(19) "2014-11-22 12:40:58"    }    [4] => array(7) {      ["id"] => string(1) "6"      ["title"] => string(1) "1"      ["content"] => string(1) "2"      ["category"] => string(0) ""      ["area"] => string(6) "福建"      ["add_user"] => NULL      ["add_time"] => NULL    }    [5] => array(7) {      ["id"] => string(1) "7"      ["title"] => string(6) "lalala"      ["content"] => string(6) "hohoho"      ["category"] => string(0) ""      ["area"] => string(6) "北京"      ["add_user"] => NULL      ["add_time"] => NULL    }  }

1 展开Myapp/Lib/Model/FormModel.class.php文件,更改代码为

复制代码

  1. <?php
  2. class FormModel extends Model {
  3. // 自动填写设置
  4. protected $_auto  =  array(
  5.   array(‘status’,’1′,’ADD’),
  6.         array(‘create_time’,’time’,’ADD’,’function’),
  7. );
  8. }
  9. ?>

就这么轻易几行,然后打开浏览器,输入
叁个TP项目就这么创设出来了。你会看到

 

代码知识要点:
Model类的$_auto属性由多个填充因子组成的数组,填充因子定义格式:

  1. ^_^ Hello,迎接使用ThinkPHP!

例2:让 tpk_article 表的剧情听新闻说客户所在之处呈现本地的信息:

array(填充字段,填充内容,填充条件,附加法则)

复制代码

ArticleModel.class.php:

填充字段:便是急需进行拍卖的表单字段,这一个字段并不必需假如数据库表中的字段,对于表单内的帮扶检查测量检验字段譬喻重复密码和验证码也能够管理。
填充条件:ADD | UPDATE | ALL(注意,此是1.5本子表达,1.6已改为1 2
3,后续教程有表达)
当为ADD时,会在疯长多少时自动填充,那是私下认可的管理情势
当为UPDATE时,在改过数据的时候会自动填写
当为ALL时,全数意况下都会进展自动填写

那行字。并自动为您成立好项目标目录。接下来,大家这几个项目遮风避雨。

<?php  class ArticleModel extends Model{            public function article(){                $rows=$this->where("area='{$this->checkUserArea()}'")->select();          return $rows;      }        protected function checkUserArea(){                return "北京";          }

外加准绳:叠合准则是指向填充内容来说,表示该内容填充的措施,包罗function,callback,田野,string
对于田野同志使用别的字段实行填空和string间接标示字符串作为值实行填写很好精通。举个例子地点

=============================================

调整器代码:

  1. array(‘status’,’1′,’ADD’),

二简约认知项目里的相继文件夹

IndexAction.class.php:

复制代码

名词解释:

<?php  class IndexAction extends Action {        $obj=D("Article");      $rows=$obj->article();      $this->assign("list",$rows);      $this->display();

纵使将状态status字段的值直接以1填充.

Action:模块调控器类,你临时能够领略为三个Action文件表示着一个运用模块,Action文件中的每一个措施(function)代表着贰个操作,操作分为有出口到模板的操作和只具试行无需输出的操作。对于有出口的操作,则意味着了您的种类中一个出示给客户使用的web页面。(注意:那不是正统的术语解释卡塔尔

同一时候视图代码:

上边重要说说function与callback那四个附加法则。

Model:数据表相对应的Model类,能够领悟为多个Model文件对应着你项目数据库的内部叁个表。命名关系请参见这里:

TPL/Index/article.html:

  1. protected $_auto  =  array(
  2. array(‘create_time’,’time’,’ADD’,’function’),
  3. );

在遮风避雨从前,我们有必要认知一下大器晚成一文件夹的用场。

<!DOCTYPE html>  <html>  <body>    <volist name="list" id="vo">      <li><{$vo.title}> - <{$vo.area}> - <{$vo.content}></li>  </volist>    </body>  </html>

上面create_time代表了要管理的字段,填充内容是time,附加法规是function使用函数,填充条件是ADD新添时管理,那么整行代码表示对create_time字段在增加生产总量的时候使time函数作为该字段的值举行活动填写。
再看叁个function作为附加法规的例证

开辟Myapp文件夹,里面TP已令你很方便地营造了最中央的目录。个中:

附:数据表 tpk_article 的表结构为:

  1. protected $_auto  =  array(
  2. array(‘password’,’md5′,’ADD’,’function’),
  3. );

Cache文件夹:项目自动生成的模版缓存会产出在这里间

图片 5

当使用function作为附加法规时,第三个填充内容就意味着了这些因子是三个函数名称,该函数的参数正是表示填充字段的值,例如password的值是123456,则上面包车型大巴代码会先将这几个值使用函数md5(‘123456’),那样管理后再插入到数据表中去。
对此function(函数卡塔尔和callback(回调方法卡塔尔理论是同风度翩翩的,只不过一个是表示填充内容所写的是函数名,另一个是象征填充内容是类中的方法名。函数可以是PHP5内置函数或你和谐所写的函数。而callback是时下模型类所能调用的叁个办法。 至于数据填充方面的详细资料,请参见官方使用手册
《ThinkPHP数据操作指南》

Common文件夹:你的项目中要用到的友善写的函数,能够在此个文件夹下成立一个名叫common.php文件,
在此个文件中书写函数,那个函数能够用在你项目标次第类,同期也得以在模板变量中利用,TP框架会自行加载。

总结:自定义模型映射,八个模子对应三个数据表,全体增加和删除改查都在模型类中成就。M
实例化的参数是数据库的表名,D 实例化的是友善在 model
文件夹下建设构造的模型文件。

2 张开Myapp/Tpl/default/Index/index.html文件,大家修正代码将form写进去

Conf文件夹:项目标周转配置文件config.php将放在这里个文件夹里,(还应该有路由配置,调节和测量试验配置等,请先忽视)

 

  1. <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0
    Transitional//EN”>
  2. <html>
  3. <head>
  4. <title>{$title}</title>
  5. </head>
  6. <body>
  7. <form action=”__URL__/add” method=”post” name=”formname”
    id=”formname”>
  8.     <p>
  9.            <label for=”title”>标题:</label>
  10.            <input name=”title” type=”text” id=”title” />
  11.     </p>
  12.     <p>
  13.            <label for=”email”>邮箱:</label>
  14.           <input name=”email” type=”text” id=”email” />
  15.     </p>
  16.     <p><label
    for=”content”>内容:</label></p>
  17.     <p>
  18.         <textarea name=”content” rows=”5″ cols=”25″
    id=”content” ></textarea>
  19.     </p>
  20.     <p><input type=”submit” value=”提交” /></p>
  21. </form>
    </body>
    </html>

Data文件夹:TP会把品种的数据库表字段生成到此地,此外。。。那一个先不要理会。

3.create 方法

在地点代码中,大家简要地建了一个form表单,并将标题统大器晚成行使一个模板变量{$title}。
action提交到的管理地方是__URL__/add,其中__URL__是叁个常量定义,表示这几天模块地址,TP模板引擎会自动将那句解释为/index.php/Index/add,不着疼热的沙盘使用的常量有

Lang文件夹:项目标语言设置目录,先不要理会。

TP 对数码的插入和更新都做了莫大封装:提供了 create()
方法用于创设数量对象。

__ROOT__    网址根目录地址
__APP__         当前项目(入口文件卡塔 尔(阿拉伯语:قطر‎地址
__URL__         当前模块地址
__ACTION__   当前操作地址
__SELF__       当前 URL 地址

Lib文件夹:应用类库目录,在此文件夹内还会有三个公文夹:Action和Model,Action目录放置命名叫xxxAction.class.php的调节器文件,Model目录放置对应数据库表的命名叫xxxModel.class.php的类公事。

概念:数据对象 ——
数据字段与数据表之间的关联,数据会被映射为类成员,再与数据表映射,最终完成数量的插入或更新。

3 设置模板变量 {$title} ,扩张add操作方法

Logs文件夹:项目中活动发出的日志文件会寄存在此。暂不必理会。

create() 方法是贯穿操作、CUTiggoD 操作的群集 (
包含数据创造、数据印证、表单验证、自动完结等 )。

展开Myapp/Lib/Action/IndexAction.class.php文件,改正代码如下

Temp文件夹:数据缓存目录,寄存项目中自动生成的类别运作缓存文件等,以至利用文件措施时的缓存文件等

cerate() 的数据源由 POST 表单提供,举例表单中有 username
表单成分,则该因素会被自动映射为数据表中的 username
字段。数据对象成立成功之后,对象被存放于内存中。

  1. <?php
  2. class IndexAction extends Action{
  3.     public function index() {
  4.        
       $this->assign(‘title’,’增多数据’);//这里安装了模版变量{$title}
  5.            $this->display();
  6.     }
  7.     // 管理表单数据的法子
  8.     function add()  {
  9.           $Form = D(“Form”);
  10.           if($Form->create()) {
  11.                    $Form->add();
  12.                    $this->redirect();
  13.           }else{
  14.                    header(“Content-Type:text/html;
    charset=utf-8”);
  15.                    exit($Form->getError().’ [ <A >返
    回</A> ]’);
  16.          }
  17.     }
  18. }//类定义 end
  19. ?>

Tpl文件夹:模板文件目录,内有三个default文件夹,也便是暗许的品格。
品类转移的目录结构就先简要介绍到此地,下一步大家要简明地对品种张开最中央的配备。

相关文章