thinkphp框架相关研究(一)

小编最近开始正式研究thinkphp框架,在此写下研究的整个历程,从最最基本的搭建网站开始,一步步记录。希望对大家有所帮助。

1.菜鸟从下载框架到建站

参考网址:http://blog.csdn.net/ruby97/article/details/7574851

使用软件:wampServer64+Epp4+webstorm

a.在thinkphp官网下载thinkphp 3.2.2 核心版本

b.在Epp4下建立一个新项目,将下载的 thinkphp3.2.2核心版本里面的THinkphp文件夹复制到空白项目下

c.在创建的项目下添加一个新的admin.PHP(这个名字你可要自己定,不过最好别用index.php),打开文件添加如下代码

<?php
 define(‘THINK_PATH‘,‘./fram/ThinkPHP/‘);//框架路径,这个主要是用来找到你的框架放置位置 我把ThinkPHP框架放在/wamp/www/phptest/fram/Thinkphp
 define(‘APP_PATH‘,‘./admin/‘);//应用程序存放路径
 define(‘APP_NAME‘,‘admin‘);//应用程序名称
 define(‘APP_DEBUG‘,true);//是否开启调试模式
 require THINK_PATH.‘ThinkPHP.php‘//请求显示框架里的首页
?>

d.在浏览器中输入:http://localhost/(你建立的项目名称)/admin.php,出现欢迎页面,则搭建完成,你会发现你的项目下多出如下文件夹

->thinkphptest (项目名称)

-》admin

->Common  公共模块

->Home  你所需要用的 view model controler都在这个里面定义

->Runtime 调试模块

-》fram

-》ThinkPHP  框架

2.从model及数据库的链接开始学习

    参考网址:http://document.thinkphp.cn/manual_3_2.html#extend_config

      1.首先来说数据库的连接配置吧

       thinkphp框架里面有一系列的配置文件       惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置 (优先级为从右到左)

        惯例配置位置:ThinkPHP/Conf/convention.php 该配置文件在我们下载的thinkPHP框架里面,系统建议大家不要修改,保持其默认值不变,那如果我们需要设置自己的相关配置怎么办呢?

       应用配置位置:Application/Common/Conf/config.php  如上面建立的项目,在admin/Common/conf/conf.php 在这里面来写相关配置信息,该文件没有配置之前样子

<?php
return array(
    //‘配置项‘=>‘配置值‘
);

可以在里面进行相关配置,比如:

<?php
return array(
    ‘DB_TYPE‘            =>    ‘mysql‘,
    ‘DB_HOST‘            =>    ‘localhost‘,
    ‘DB_NAME‘            =>    ‘guestbook‘,//需要新建一个数据库!名字叫
    ‘DB_USER‘            =>    ‘root‘,        //数据库用户名
    ‘DB_PWD‘            =>    ‘‘,//数据库登录密码
    ‘DB_PORT‘            =>    ‘3306‘,
    ‘DB_PREFIX‘        =>    ‘think_‘,//数据库表名前缀
);
?>

也可以使用扩展配置

比如 1.你在admin/Common/Conf/user.phpadmin/Common/Conf/db.php

  可以在上述配置中加入一条:

       ‘LOAD_EXT_CONFIG‘ => ‘user,db‘

  2.如果你在其它地方创建了配置文件,可以通过以下方式来放入

// 如果在 根目录下创建了 config.inc.php 如下<?php
return array(
    ‘DB_TYPE‘            =>    ‘mysql‘,
    ‘DB_HOST‘            =>    ‘localhost‘,
    ‘DB_NAME‘            =>    ‘guestbook‘,//需要新建一个数据库!名字叫
    ‘DB_USER‘            =>    ‘root‘,        //数据库用户名
    ‘DB_PWD‘            =>    ‘‘,//数据库登录密码
    ‘DB_PORT‘            =>    ‘3306‘,
    ‘DB_PREFIX‘        =>    ‘think_‘,//数据库表名前缀
);
?>

可以在应用配置中如下写入:

<?php

$arr1=array(
    //‘配置项‘=>‘配置值‘
    ‘URL_MODEL‘    =>1,//path-info 模式
    //‘SHOW_PAGE_TRACE‘ =>true,
    //‘SHOW_RUN_TIME‘ =>true,   //显示运行时间
    //‘SHOW_ADV_TIME‘ =>true,   //显示详细的运行时间
    //‘SHOW_DB_TIMES‘=>true,//显示数据库操作次数
    //‘SHOW_CACHE_TIMES‘=>true,//显示缓存操作次数
    //‘SHOW_USE_MEM‘=>true,//显示内存开销
);

$arr2=include ‘./Common/conf/config.inc.php‘; //这个地方要和你的文件放置的位置一样

return array_merge($arr1,$arr2);
?>

经过上述的配置,数据库的链接配置就没有什么问题了。至于读取配置以及其他更为细节的东西,请参考3.2的开发手册:http://document.thinkphp.cn/manual_3_2.html#extend_config

2.关于model的相关学习

首先 先来一张model的代码供大家参考

<?php
class ArticleModel extends Model{

    //标题自动验证
    protected $_validate=array(
        array(‘subject‘,        ‘require‘,        ‘文章标题必须非空‘),
        array(‘subject‘,        ‘callback_checklen‘,    ‘标题内容过长‘,    0,    ‘callback‘),
        array(‘message‘,        ‘require‘,        ‘文章内容必须非空‘),
    );

    //字段长度验证回调函数(ThinkPHP会自动帮我们传递参数)
    function callback_checklen($data){
        if(strlen($data)>200){
            return false;
        }
        return true;
    }

    //自动完成,在create时自动执行
    //array(‘填充字段‘,‘填充内容‘,‘填充条件‘,‘附加规则‘);
    //填充字段
    protected $_auto=array(
            array(‘createtime‘,‘time‘,1,‘function‘),
    );
}

?>

我想初次接触thinkphp的小伙伴们肯定和我有一样的困惑,配置里面定义了数据库的链接,model里面定义了模型,那模型和数据库的表的对应究竟是如何做的呢?

   我也一直很困惑,后来查了开发手册,把我的理解写在下面,仅供大家参考:

  1.模型类的作用大多数情况是操作数据表的,如果按照系统的规范来命名模型类的话,大多数情况下是可以自动对应数据表。

     命名规范:1.建立数据库表的时候要求要有前缀(可以没有,后面会说没有的解决方案)

                   2.模型定义class ArticleModel extends Model {} 要求去掉前缀后的表名+Model。

                    例如,如果你数据库有一个表 st_user   前缀为:st_    表名为:user  model命名:userModel

                       你肯定会问,那系统怎么知道我的前缀是什么呢?系统其实是不知道的,这个前缀需要我们在刚刚提到的admin/Common/Conf/conf.php配置文件里面,或者其他的你配置数据库的时候写的那些配置里面指明。需要添加一句 ‘DB_PREFIX‘ => ‘st_‘,//数据库表名前缀。 若果你数据库里面的表没有前缀,务必将参数配置为空,否则会调用系统的DB_PREFIX。,会报错。

2.如果我们的命名规范什么的并不是和系统要求的一样,我需要用的表也不一样,那该在呢么写这个model呢?

        下面让我们来认识几个参数:

                   

属性 说明
tablePrefix 定义模型对应数据表的前缀,如果未定义则获取配置文件中的DB_PREFIX参数
tableName 不包含表前缀的数据表名称,一般情况下默认和模型名称相同,只有当你的表名和当前的模型类的名称不同的时候才需要定义。
trueTableName 包含前缀的数据表名称,也就是数据库中的实际表名,该名称无需设置,只有当上面的规则都不适用的情况或者特殊情况下才需要设置。
dbName 定义模型当前对应的数据库名称,只有当你当前的模型类对应的数据库名称和配置文件不同的时候才需要定义。

如果我们需要使用和配置文件不一样的数据库及其表的话,可进行如下配置:

    namespace Home\Model;
    use Think\Model;
    class CategoryModel extends Model {    protected $tablePrefix=‘‘;//如果你的数据库中的某个表没有前缀,可以设置为空
    protected $tableName = ‘categories‘;//当前你定义的Model只是CategoryModel,和实际的表不一样,可以改成这样,保证前缀是一样的,所以前缀不用写,写表名    protected $trueTableName=‘‘;//当你定的前缀和名字都和配置文件中的不一样,那就要使用真实的表名,前缀也需要写出来,即写出全名。    protected $dbName=‘‘;//如果你使用的不是配置的数据库,可以更改数据库
    }

未完待续...........

时间: 2024-11-25 03:39:14

thinkphp框架相关研究(一)的相关文章

thinkphp框架的相关总结

参考链接地址:http://gongwen.sinaapp.com/article-205.html 1. 模板中不能使用的标签 {$content} {$i} 2. If标签 如: <if condition="$name eq 1 "> 试验后总是有想不到的错误, 这样,还不如直接用<?php if(...){ ...?>来得快些呢. 约定: 1.所有类库文件必须使用.class.php作为文件后缀,并且类名和文件名保持一致 2.控制器的类名以Action为

关于Thinkphp框架模型应用过程中出现的错误Undefined class constant MYSQL_ATTR_INIT_COMMAND

今天在用thinkphp框架做网站的时候,在调用model模型是意外发生Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]错误, 下面是我百度的结果,大部分说解决问题可以分为以下两类: 1. windows下iis7.5+php5.4.11(FastCGI) 缺少pdo,编辑php.ini 取消注释: extension=php_pdo_mysql.dll 重启iis PHP数据对象(PDO)扩

ThinkPHP 框架模型

本文和大家分享的主要是ThinkPHP 框架模型相关内容,一起来看看吧,希望对大家学习php有所帮助. 1 在MainController.class.php 控制器中有一个test的方法,同时还有一个deng的方法,我想在test方法中使用deng方法 表示为 <?phpnamespace Home\Controller;use Think\Controller;class MainController extends controller{ public function test() {

ThinkPHP框架系统源码解析——URL路由解析

1 一.ThinkPHP框架目录 2 /test/index.php //项目入口文件 3 /ThinkPHP/ThinkPHP.php //框架入口文件 4 5 Common 框架公共文件目录(函数库) 6 ThinkPHP/Common/runtime.php //框架初次运行文件 7 ThinkPHP/Common/common.php //框架基础函数库 8 ThinkPHP/Common/functions.php //标准模式公共函数库 9 10 Conf 框架配置文件目录 11 T

ThinkPHP框架的部署

1.将ThinkPHP框架的框架文件放到想要放置的地方,与创建的应用文件夹同级 2.vhost文件中设置虚拟目录 3.在hosts文件中配置 4.在应用目录中创建入口文件index.php 5.在入口文件中引入框架 6.从浏览器访问入口文件 7.应用中自动生成相关文件

iOS OpenGLES 框架相关 24 篇文档排序整理

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. OpenGLES Use a compact, efficient subset of the OpenGL API for 2D and 3D

ThinkPHP框架一

1.1 框架的概念 框架其实就是可重用代码的集合,框架的代码是框架架构的代码,不是业务逻辑代码,框架代码保护类.方法.函数等等,框架代码按照一定的规则组合起来就形成了框架. 1.2 不使用框架开发的时候遇到的问题 1.代码编写没有统一的规范 2.项目功能不能很好的拆分 3.一个局部的微小改动可能会影响全局 4.项目的升级比较麻烦 1.3 使用框架的好处 1.有利于团队统一的代码风格 2.将精力全部集中到业务逻辑上,无需关心底层框架 3.快速.稳定高效的搭建程序 4.节省大量代码 5.后期维护升级

ThinkPHP框架知识的注意点

ThinkPHP框架 访问入口文件后在application文件夹中会出现一些文件夹,其中的home文件夹是前端模块,也可以在application文件夹中新建文件夹.home文件夹模块中Conf文件夹的config配置文件,是对于当前模块的:修改当前模式convention配置文件是对于全体的配置文件:整体的模式 一.MVC模式(把程序分成3层,也就是三层架构,核心是控制器也就是controller):M:model数据模型层 数据库的相关操作是放在model文件夹中V:view 视图层 模板

thinkphp框架下session 存入mongo

最近做系统的时候处理到session入数据库问题 , 由于是在thinkphp框架下, 查看了下框架session相关代码, 发现原框架默认支持mysql数据库 , 于是对原Session驱动做了相应修改 , 使其支持mongo数据库存储session 修改的相关文件是\Think\Session\Driver\Db\Db.class.php , 本人使用的是TP3.2,2版本 , 修改后的Db.class.php代码如下: <?php namespace Think\Session\Drive