Thinkphp框架基础

Posted 终极用户

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Thinkphp框架基础相关的知识,希望对你有一定的参考价值。

环境要求

  • php5.3以上版本(注意:PHP5.3dev版本和PHP6均不支持

目录结构  

下载3.2框架后,解压缩到web目录下面,可以看到初始的目录结构如下:

  1. www WEB部署目录(或者子目录)
  2. ├─index.php 入口文件
  3. ├─README.md README文件
  4. ├─Application 应用目录
  5. ├─Public 资源文件目录
  6. └─ThinkPHP 框架目录

其中框架目录ThinkPHP的结构如下:

  1. ├─ThinkPHP 框架系统目录(可以部署在非web目录下面)
  2. ├─Common 核心公共函数目录
  3. ├─Conf 核心配置目录
  4. ├─Lang 核心语言包目录
  5. ├─Library 框架类库目录
  6. ├─Think 核心Think类库包目录
  7. ├─Behavior 行为类库目录
  8. ├─Org Org类库包目录
  9. ├─Vendor 第三方类库目录
  10. ├─ ... 更多类库目录
  11. ├─Mode 框架应用模式目录
  12. ├─Tpl 系统模板目录
  13. ├─LICENSE.txt 框架授权协议文件
  14. ├─logo.png 框架LOGO文件
  15. ├─README.txt 框架README文件
  16. └─index.php 框架入口文件

入口文件

ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个应用都有一个统一(但不一定是唯一)的入口。

应该说,所有应用都是从入口文件开始的,并且不同应用的入口文件是类似的。

默认情况下,3.2版本的框架已经自带了一个应用入口文件(以及默认的目录结构),内容如下:

  1. define(\'APP_PATH\',\'./Application/\');
  2. require \'./ThinkPHP/ThinkPHP.php\';

如果你改变了项目目录(例如把Application更改为Apps),只需要在入口文件更改APP_PATH常量定义即可:

  1. define(\'APP_PATH\',\'./Apps/\');
  2. require \'./ThinkPHP/ThinkPHP.php\';

注意:APP_PATH的定义支持相对路径和绝对路径,但必须以“/”结束

如果你调整了框架核心目录的位置或者目录名,只需要这样修改:

  1. define(\'APP_PATH\',\'./Application/\');
  2. require \'./Think/ThinkPHP.php\';

也可以单独定义一个THINK_PATH常量用于引入:

  1. define(\'APP_PATH\',\'./Application/\');
  2. define(\'THINK_PATH\',realpath(\'../Think\').\'/\');
  3. require THINK_PATH.\'ThinkPHP.php\';

和APP_PATH一样THINK_PATH路径定义也必须以“/”结尾。
给THINK_PATH和APP_PATH定义绝对路径会提高系统的加载效率。

自动创建目录

在第一次访问应用入口文件的时候,会显示如图所示的默认的欢迎页面,并自动生成了一个默认的应用模块Home。

 

 

接下来再看原来空的Application目录下面,已经自动生成了公共模块Common、默认的Home模块和Runtime运行时目录的目录结构:

  1. Application
  2. ├─Common 应用公共模块
  3. ├─Common 应用公共函数目录
  4. └─Conf 应用公共配置文件目录
  5. ├─Home 默认生成的Home模块
  6. ├─Conf 模块配置文件目录
  7. ├─Common 模块函数公共目录
  8. ├─Controller 模块控制器目录
  9. ├─Model 模块模型目录
  10. └─View 模块视图文件目录
  11. ├─Runtime 运行时目录
  12. ├─Cache 模版缓存目录
  13. ├─Data 数据目录
  14. ├─Logs 日志目录
  15. └─Temp 缓存目录

如果你不是Windows环境下面的话,需要对应用目录Application设置可写权限才能自动生成。
如果不是调试模式的话,会在Runtime目录下面生成common~runtime.php文件(应用编译缓存文件)。

控制器

 

我们可以在自动生成的Application/Home/Controller目录下面找到一个 IndexController.class.php 文件,这就是默认的Index控制器文件。

控制器类的命名方式是:控制器名(驼峰法,首字母大写)+Controller

控制器文件的命名方式是:类名+class.php(类文件后缀)

默认的欢迎页面其实就是访问的Home模块下面的Index控制器类的index操作方法我们修改默认的index操作方法如下:

namespace Home\\Controller;
use Think\\Controller;
class IndexController extends Controller {
    public function index(){
        echo \'hello,world!\';  
  }
}

 再次运行应用入口文件,浏览器会显示:hello,world!

我们再来看下控制器类,IndexController控制器类的开头是命名空间定义:

  1. namespace Home\\Controller;

这是系统的规范要求,表示当前类是Home模块下的控制器类,命名空间和实际的控制器文件所在的路径是一致的,也就是说: Home\\Controller\\IndexController类 对应的控制器文件位于应用目录下面的 Home/Controller/IndexController.class.php,如果你改变了当前的模块名,那么这个控制器类的命名空间也需要随之修改。

  2.use Think\\Controller;

表示引入 Think\\Controller 命名空间便于直接使用。所以,

use Think\\Controller;
class IndexController extends Controller

等同于使用:

class IndexController extends \\Think\\Controller

命名规范

使用ThinkPHP开发的过程中应该尽量遵循下列命名规范:

类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如 Dbmysql.class.php; 
类的命名空间地址和所在的路径地址一致,例如 Home\\Controller\\UserController类所在的路径应该是 Application/Home/Controller/UserController.class.php; 
确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的(而ThinkPHP在调试模式下面,即使在Windows平台也会严格检查大小写); 
类名和文件名一致(包括上面说的大小写一致),例如 UserController类的文件命名是UserController.class.php, InfoModel类的文件名是InfoModel.class.php, 并且不同的类库的类命名有一定的规范; 
函数、配置文件等其他类库文件之外的一般是以.php为后缀(第三方引入的不做要求); 
函数的命名使用小写字母和下划线的方式,例如 get_client_ip; 
方法的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如 getUserName,_parseType,通常下划线开头的方法属于私有方法; 
属性的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如 tableName、_instance,通常下划线开头的属性属于私有属性; 
以双下划线“__”打头的函数或方法作为魔法方法,例如 __call 和 __autoload; 
常量以大写字母和下划线命名,例如 HAS_ONE和 MANY_TO_MANY; 
配置参数以大写字母和下划线命名,例如html_CACHE_ON; 
语言变量以大写字母和下划线命名,例如MY_LANG,以下划线打头的语言变量通常用于系统语言变量,例如 _CLASS_NOT_EXIST_; 
对变量的命名没有强制的规范,可以根据团队规范来进行; 
ThinkPHP的模板文件默认是以.html 为后缀(可以通过配置修改); 
数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 think_user 表和 user_name字段是正确写法,类似 _username 这样的数据表字段可能会被过滤。

特例:在ThinkPHP里面,有一个函数命名的特例,就是单字母大写函数,这类函数通常是某些操作的快捷定义,或者有特殊的作用。例如:A、D、S、L 方法等等,他们有着特殊的含义,后面会有所了解。

 

以上是关于Thinkphp框架基础的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP框架基础

ThinkPHP框架基础知识

TP框架---thinkphp基础知识

thinkphp5 源码分析二 框架引导

tp框架基础

ThinkPHP项目笔记之MVC篇