• ThinkPHP框架初步掌握


    为了帮老师用ThinkSNS二次开发一个微博系统,专门花了几天学习ThinkPHP框架,现在将一些ThinkPHP入门知识作以记录。

    首先声明:

    本文不是完全教程,只是将开发中碰到的问题作以总结,如果需要学习ThinkPHP框架,请参考官网文档:

    官网首页

    ThinkPHP3.1快速入门教程(更新中)

    目录结构

    目录/文件说明
    ThinkPHP.php 框架入口文件
    Common 框架公共文件目录
    Conf 框架配置文件目录
    Lang 框架系统语言目录
    Lib 系统核心基类库目录
    Tpl 系统模板目录
    Extend 框架扩展目录(关于扩展目录的详细信息请参考后面的扩展章节)

    我的文件结构

     

    入口(ThinkPHP.php)

    1、先在Web根目录(我用的phpstudy,是www文件夹)下面创建一个app项目(这个app就是我们的项目名)。

    2、将下载的ThinkPHP解压(我是解压到app下,名为ThinkPHP)。

    3、在app目录下面创建一个index.php文件,添加两行简单的代码:

        <?php
        define("APP_DEBUG", TRUE);  //开启调试模式,方便调试   
    require '/ThinkPHP框架所在目录/ThinkPHP.php';  //我的为/ThinkPHP/ThinkPHP.php

    这行代码的作用就是加载ThinkPHP框架的入口文件ThinkPHP.php,这是所有基于ThinkPHP开发应用的第一步。
    然后,在浏览器中访问这个入口文件。

            http://localhost/app/index.php

    因为index.php为默认首页,所以亦可省略。

    模板(Tpl)

    Tpl文件夹下为模版页面,可放置html、php等页面。

    同时支持多模块,即可在Tpl下建立多个文件夹,每个文件夹对应一个模块,同时一个模块和一个控制器对应(需要名字相同)

    我的:

    两个模块Form、Index

    Tpl下对应有两个文件夹Form、Index

    则对应的控制器也是两个FormController.class.php、IndexController.class.php

    控制器(Controller)

    命名:模块名+Controller

    PATHINFO模式:是系统的默认URL模式,提供了最好的SEO支持,系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境。

    对应上面的URL模式,PATHINFO模式下面的URL访问地址是:

        http://localhost/app/index.php/module/action/var/value/
      //module为模块名称(控制器名称)、不带Controller
      //action为操作名称(控制器中的方法名称)、不带Model
      //var为参数名
      //value为参数值
      //var与value成对出现

    我的:

        http://localhost/app/index.php/Index/index
      调用IndexController下的index()方法  
      如果该方法不存在,将直接调用Tpl/Index/index.html页面

    模型(Model)

    1、命名:模块名字+Model

    在ThinkPHP的模型里面,有几个关于数据表名称的属性定义,在对应的Model中声明为属性字段(或者叫成员变量):

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

    只要命名规范,ThinkPHP会根据Model名字找到你要调用的数据库表,当然,前提你得建立。

    规则:

    1)表名为tp_categories(tp_为表前缀,在配置文件中配置)

        protected $tableName = 'categories'; 

    2)表名为top_depts,top_不是系统配置的表前缀,需要使用表的全名

        protected $trueTableName = 'top_depts'; 

    3)可设置数据库

        protected $dbName = 'top';

    调用:

    可调用本模块Model,也可跨项目或模块调用。

    本模块:

    D("UserModel")

    跨项目:

    D("UserModel", "app")  //D(Model名称,项目名称)

    M方法与D方法类似,不过,我只用了D方法

    函数库

    可通过load(@.hello),hello为函数库文件名称

    也可通过在项目配置文件中定义LOAD_EXT_FILE参数,例如:

        "LOAD_EXT_FILE"=>"user,db"

    类库

    通过import可引入使用的类包,可跨项目或模块

    import("App.Model.UserModel");
    App为应用名
    
    Model表明是模型
    
    UserModel为模型名称

    数据库

    这块东西太多,使用也最频繁,因此,官方文档介绍的很详细,请大家点击文章开头的链接查看

    写了好久,希望对大家有点用处。

    原文链接:http://www.cnblogs.com/FlyFive/archive/2013/01/06/2848246.html

  • 相关阅读:
    快递标示
    git 操作命令系列
    在线js调试地址
    jQuery 的 validator 验证动态添加的信息
    mysql批量插入
    array_map 批量对数据执行某个自定义方法
    使用 header函数实现文件下载
    设置UTF-8 编码
    常用短信接口平台
    async: false 实现AJAX同步请求 ( $.ajax同步/异步(async:false/true) )
  • 原文地址:https://www.cnblogs.com/FlyFive/p/2848246.html
Copyright © 2020-2023  润新知