【PHP框架】之ThinkPHP

来源:互联网 发布:手机通话变声软件 编辑:程序博客网 时间:2024/06/10 06:54

ThinkPHP 框架是首款中国人自己开发的PHP框架,它诞生于2006年,2007年正式发布并成型,由于采用了MVC模式进行整体设计,整个框架可以快速的生成CMS网站,如OA系统,个人网站,新闻发布系统等。下面介绍开发的简单流程和关键点。

  • ThinkPHP 下载
  • ThinkPHP 结构
    • 文件结构
    • 配置结构
  • MVC 结构 与快捷方法
      • 控制器的定义
      • 模型的定义
      • 视图的定义
        • volistforeachif 标签
      •  标签函数的定义
    • 快捷方法
      • U方法
      • I 方法
      • M方法
      • D方法

ThinkPHP 下载

首先下载ThinkPHP完整版(http://www.thinkphp.cn),下载完成后,放置到PHP服务器(如PHPStudy等),打开框架的入口地址index.php, 关键代码如下:

// 引入ThinkPHP入口文件require './ThinkPHP/ThinkPHP.php';

入口地址加载了模板的核心文件ThinkPHP.php文件。

ThinkPHP 结构

文件结构

ThinkPHP    /Application   - 应用目录        |-/Admin  - 后台目录 (主要)   用户自行添加        |-/Common - 配置文件目录 (主要)        |-/Home   - 前台目录  (主要)系统自动生成        |-/Runtime- 系统内置运行库     /Public   -  公共资源目录,如CSS/JS代码、图片等     /ThinkPHP -  框架核心部分

配置结构

框架的核心部分包括ThinkPHP\Library\Think 目录下的几个文件,包括Model.class.php、 View.class.php、Controller.class.php。它们是所有MVC模式的类函数的父类。实现的业务逻辑要继承这些父类方法。
另外在ThinkPHP\Conf 目录下的Convention.php 定义了系统内置的函数和一些配置,包括数据库连接的配置。如果修改这些配置,由于Convention.php定义的是全局的配置和函数,所以要到应用目录下的局部配置文件config.php中去修改,不要在Convention.php中修改。

/* 数据库设置 */    'DB_TYPE'               =>  '',     // 数据库类型    'DB_HOST'               =>  '', // 服务器地址    'DB_NAME'               =>  '',          // 数据库名    'DB_USER'               =>  '',      // 用户名    'DB_PWD'                =>  '',          // 密码    'DB_PORT'               =>  '',        // 端口    'DB_PREFIX'             =>  '',    // 数据库表前缀    'DB_PARAMS'             =>  array(), // 数据库连接参数        'DB_DEBUG'              =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志    'DB_FIELDS_CACHE'       =>  true,        // 启用字段缓存    'DB_CHARSET'            =>  'utf8',      // 数据库编码默认采用utf8    'DB_DEPLOY_TYPE'        =>  0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)    'DB_RW_SEPARATE'        =>  false,       // 数据库读写是否分离 主从式有效    'DB_MASTER_NUM'         =>  1, // 读写分离后 主服务器数量    'DB_SLAVE_NO'           =>  '', // 指定从服务器序号

MVC 结构 与快捷方法

以建立前台为例,后台设计类似与前台。前台的文件目录结构如下

    Home             - 前台入口目录        -Conf        - 前台配置目录 可以放置数据库连接的配置项目        -Common      - 前台配置函数        -Controller  -控制器目录        -Model       -模型目录        -View        -视图目录

定义一个Test控制器的例子如下:

控制器的定义

        <?php            // 申明命名空间             namespace  Home\Controller;             // 导入父类的命名空间             use Think\Controller;             class TestController extends Controller{                //定义一个test方法                 public function test(){                    phpinfo();                 }             }

根据以上的定义的控制器,可以从浏览器上访问这个控制器,访问的地址是http://localhost/index.php/Home/Test/test (假设服务器的地址是localhost,且端口设置为80)

模型的定义

在ThinkPHP中,模型的定义往往和数据库有关,我们这里连接的数据库为MySQL.定义的模型的如下:

    <?php            // 申明命名空间            namespace Home\Model;            //引入父类的命名空间            use Think\Model;            class UserModel extends Model{                // 模型端验证表单的正确性                  protected $_validate = array(                        //  默认情况下用正则进行验证                        array('verify','require','验证码必须!'),                   // 在新增的时候验证name字段是否唯一                        array('name','','帐号名称已经存在!',0,'unique',1),                    // 当值不为空的时候判断是否在一个范围内                     array('value',array(1,2,3),,2,'in'),                    // 验证确认密码是否和密码一致                   array('repassword','password','确认密码不正确',0,'confirm'),                   // 自定义函数验证密码格式                     array('password','checkPwd','密码格式不正确',0,'function'),                      );            }

视图的定义

视图是为了显示控制器的内容,默认情况下,视图HTML文件应该放在Home/View/Test/test.html. 其中Test目录与控制器的名称相同(TestController 除掉Controller),test.html文件名与方法名test相同,这样相同可以顺利找到对应的视图。
test要显示控制器的方法,要使用到ThinkPHP 定义的模板标签。默认情况下,控制器中的对象方法在HTML使用要使用如下格式:{$对象名}
对于快捷函数要使用的格式如下:{:U(‘test’)}(获取test方法的路径地址)

volist/foreach/if 标签

    <volist name="对象名" id="vol">....{$vol.成员对象名}...</volist>    <foreach name='对象名' item='fo'>.......</volist>    <if condition=''>...<elseif condition=''/>...<else/>... </if>

注意:css/js 文件无法解析ThinkPHP 标签,只能在HTML 文件中使用。

 标签函数的定义

  通过对控制器中的对象进行一定的函数封装,可以输出适合用户的需求的内容。例子如
输出10个* ,其中10这个参数是控制器传过来的参数。

    //控制器端    public function test(){        // 赋值一个变量        $data=10;        // 传递参数到模板视图文件中        $this->assign('data',$data);        // 展示模板        $this->display();    }    //html模板端    <html>        ......        <body>        // 格式为{$变量|函数名称=参数1,参数2}(str_repeat是PHP内置函数,它需要2个参数,###表示参数为变量本身)            {$data | str_repeat='*',###}         </body>    </htm>

快捷方法

ThinkPHP 定义了大量的快捷方法,其中常用的快捷方法包括,U方法、I方法、M方法、D方法

U方法

U方法主要是获取控制器方法的地址,在ThinkPHP中大量使用,如表单提交、跳转等,他的格式如下
U(‘控制器名称/方法名’)(控制器名称为除掉Controller的类名),在同一个控制器,控制器名称可以省略。
即U(‘方法名’)

I 方法

I方法主要是获取表单提交的内容,常用的在表单提交上,如I(‘post.’)获取所有post 提交的表达所有内容,
I(‘post.id’)获取表单中id对象的值。 I(‘get.t’)获取get方法提交的t对象值。如http://localhost/index.php/Home/Test/test/t/300, I(‘get.t’) 获取值300。

M方法

M方法是用于数据库对象的实例化,它主要是实例化父类模型,即数据库表,所以它的格式为 M(‘数据库表名’)。

D方法

D方法是用于实例化模型对象,它主要实例化定义的模型,所以它的格式为 D(‘定义的模型名称’)

  • END
原创粉丝点击