thinkPhp 框架学习——基础

1)、下载完整版 thinkphp 框架
https://github.com/liu21st/thinkphp
2)、下载 wampServer 集成环境
放在 notepad++的 plugins 目录下,然后 打开 notepad++->插件->explorer ->explorer 运行
3)、框架目录解析
www  WEB部署目录(或者子目录)
├─index.php       入口文件
├─README.md       README文件
├─Application     应用目录
├─Public          资源文件目录
└─ThinkPHP        框架目录

其中框架目录ThinkPHP的结构如下:
├─ThinkPHP 框架系统目录(可以部署在非web目录下面)
│  ├─Common       核心公共函数目录
│  ├─Conf         核心配置目录 
│  ├─Lang         核心语言包目录
│  ├─Library      框架类库目录
│  │  ├─Think     核心Think类库包目录
│  │  ├─Behavior  行为类库目录
│  │  ├─Org       Org类库包目录
│  │  ├─Vendor    第三方类库目录
│  │  ├─ ...      更多类库目录
│  ├─Mode         框架应用模式目录
│  ├─Tpl          系统模板目录
│  ├─LICENSE.txt  框架授权协议文件
│  ├─logo.png     框架LOGO文件
│  ├─README.txt   框架README文件
│  └─ThinkPHP.php    框架入口文件

4)、入口文件

入口文件主要完成:

  • 定义框架路径、项目路径(可选)
  • 定义调试模式和应用模式(可选)
  • 定义系统相关常量(可选)
  • 载入框架入口文件(必须)

如果你改变了项目目录(例如把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定义绝对路径会提高系统的加载效率。

入口文件中的其他定义

一般不建议在入口文件中做过多的操作,但可以重新定义一些系统常量,入口文件中支持定义(建议)的一些系统常量包括:

常量 描述
THINK_PATH 框架目录
APP_PATH 应用目录
RUNTIME_PATH 应用运行时目录(可写)
APP_DEBUG 应用调试模式 (默认为false)
STORAGE_TYPE 存储类型(默认为File)
APP_MODE 应用模式(默认为common)

注意:所有路径常量都必须以“/”结尾

例如,我们可以在入口文件中重新定义相关目录并且开启调试模式:

 
 
  1. // 定义应用目录
  2. define('APP_PATH','./Apps/');
  3. // 定义运行时目录
  4. define('RUNTIME_PATH','./Runtime/');
  5. // 开启调试模式
  6. define('APP_DEBUG',True);
  7. // 更名框架目录名称,并载入框架入口文件
  8. require './Think/ThinkPHP.php';

5)、自动生成
在第一次访问应用入口文件的时候,会显示如图所示的默认的欢迎页面,并自动生成了一个默认的应用模块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文件(应用编译缓存文件)。

目录安全文件

在自动生成目录结构的同时,在各个目录下面我们还看到了index.html文件,这是ThinkPHP自动生成的目录安全文件。

为了避免某些服务器开启了目录浏览权限后可以直接在浏览器输入URL地址查看目录,系统默认开启了目录安全文件机制,会在自动生成目录的时候生成空白的index.html文件,当然安全文件的名称可以设置,例如你想给安全文件定义为default.html可以在入口文件中添加:

 
   
  1. define('DIR_SECURE_FILENAME', 'default.html');

如果你的环境足够安全,不希望生成目录安全文件,可以在入口文件里面关闭目录安全文件的生成,例如:

 
   
  1. define('BUILD_DIR_SECURE', false);
6)、模块

新版采用模块化的设计架构,下面是一个应用目录下面的模块目录结构,每个模块可以方便的卸载和部署,并且支持公共模块。

 
   
  1. Application 默认应用目录(可以设置)
  2. ├─Common 公共模块(不能直接访问)
  3. ├─Home 前台模块
  4. ├─Admin 后台模块
  5. ├─... 其他更多模块
  6. ├─Runtime 默认运行时目录(可以设置)

每个模块是相对独立的,其目录结构如下:

 
   
  1. ├─Module 模块目录
  2. ├─Conf 配置文件目录
  3. ├─Common 公共函数目录
  4. ├─Controller 控制器目录
  5. ├─Model 模型目录
  6. ├─Logic 逻辑目录(可选)
  7. ├─Service Service目录(可选)
  8. ... 更多分层目录可选
  9.  └─View 视图目录
7)、控制器
Application/Home/Controller目录下面找到一个  IndexController.class.php  文件,这就是默认的Index控制器文件

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

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

Home\Controller\IndexController类 对应的控制器文件位于应用目录下面的Home/Controller/IndexController.class.php,如果你改变了当前的模块名,那么这个控制器类的命名空间也需要随之修改。

注意:命名空间定义必须写在所有的PHP代码之前声明,否则会出错
 
   
  1. use Think\Controller;

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

 
   
  1. use Think\Controller;
  2. class IndexController extends Controller

等同于使用:

 
   
  1. class IndexController extends \Think\Controller

对于3.1的用户而言,如果你习惯了使用Action定义控制器的话,可以这样定义:

 
   
  1. namespace Home\Action;
  2. use Think\Action;
  3. class IndexAction extends Action{
  4. }

然后,在配置文件中,设置:

 
   
  1. 'DEFAULT_C_LAYER'=>'Action'
上面的设置方式通常可以用于原有3.1项目的升级。

8)、开发规范

命名规范

使用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默认全部使用UTF-8编码,所以请确保你的程序文件采用UTF-8编码格式保存,并且去掉BOM信息头(去掉BOM头信息有很多方式,不同的编辑器都有设置方法,也可以用工具进行统一检测和处理),否则可能导致很多意想不到的问题。

开发建议

在使用ThinkPHP进行开发的过程中,我们给出如下建议,会让你的开发变得更轻松:

  • 遵循框架的命名规范和目录规范;
  • 开发过程中尽量开启调试模式,及早发现问题;
  • 多看看日志文件,查找隐患问题;
  • 养成使用I函数获取输入变量的好习惯;
  • 更新或者环境改变后遇到问题首要问题是清空Runtime目录;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值