【PHP框架】之ThinkPHP

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

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值