thinkphp学习(一)——安装ThinkPHP5

参考自:https://www.kancloud.cn/manual/thinkphp5/118006

目录:

一、Git安装ThinkPHP

1、环境要求:

  • PHP >=5.4.0
  • PDO PHP Extension
  • MBstring PHP Extension
  • CURL PHP Extension

2、安装

ThinkPHP无需安装,这里所说的安装是把ThinkPHP5的框架放入WEB运行环境中(前提是已经配置好WEB运行环境),以下仅介绍Git安装方式,更多安装方式(如官网下载安装、Composer安装)请点击前往官方开发手册:https://www.kancloud.cn/manual/thinkphp5/118006

【Git】

在Git上ThinkPHP5.0拆分为多个仓库,主要包括:

  • 应用项目:https://github.com/top-think/think
  • 核心框架:https://github.com/top-think/framework

为了支持Composer单独更新核心框架,所以才将应用和核心仓库分离。

如果访问github速度比较慢,可以使用下面两个国内GIT仓库

【码云】

  • 应用项目:https://gitee.com/liu21st/thinkphp5
  • 核心框架:https://gitee.com/liu21st/framework.git

【Coding】

  • 应用项目:https://git.coding.net/liu21st/thinkphp5.git
  • 核心框架:https://git.coding.net/liu21st/framework.git

首先克隆下载应用项目:

git clone https://github.com/top-think/think tp5

然后切换到tp5目录下,再克隆核心框架:

git clone https://github.com/top-think/framework thinkphp

克隆完成后,即完成了ThinkPHP5.0的Git下载方式,当需要更新框架的时候,只需要切换到thinkphp核心目录下面,执行:

git pull https://github.com/top-think/framework

在浏览器中输入地址:

http://localhost/tp5/public/

如果浏览器输出如图所示:
这里写图片描述

就说明已经完成了ThinkPHP5的安装!

二、目录结构介绍

下载最新版ThinkPHP框架后,解压缩后可以看到初始的目录结构如下:

project  应用部署目录
├─application           应用目录(可设置)
│  ├─common             公共模块目录(可更改)
│  ├─index              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块函数文件
│  │  ├─roller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  └─ ...            更多类库目录
│  ├─command.php        命令行工具配置文件
│  ├─common.php         应用公共(函数)文件
│  ├─config.php         应用(公共)配置文件
│  ├─database.php       数据库配置文件
│  ├─tags.php           应用行为扩展定义文件
│  └─route.php          路由配置文件
├─extend                扩展类库目录(可定义)
├─public                WEB 部署目录(对外访问目录)
│  ├─static             静态资源存放目录(css,js,image)
│  ├─index.php          应用入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于 apache 的重写
├─runtime               应用的运行时目录(可写,可设置)
├─vendor                第三方类库目录(Composer)
├─thinkphp              框架系统目录
│  ├─lang               语言包目录
│  ├─library            框架核心类库目录
│  │  ├─think           Think 类库包目录
│  │  └─traits          系统 Traits 目录
│  ├─tpl                系统模板目录
│  ├─.htaccess          用于 apache 的重写
│  ├─.travis.yml        CI 定义文件
│  ├─base.php           基础定义文件
│  ├─composer.json      composer 定义文件
│  ├─console.php        控制台入口文件
│  ├─convention.php     惯例配置文件
│  ├─helper.php         助手函数文件(可选)
│  ├─LICENSE.txt        授权说明文件
│  ├─phpunit.xml        单元测试配置文件
│  ├─README.md          README 文件
│  └─start.php          框架引导文件
├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件

三、架构

ThinkPHP5.0应用基于MVC(Model模型-View视图-Controller)的方式来组织。

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。

5.0的URL访问受路由决定,如果关闭路由或者没有匹配路由的情况下,则是基于:

http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/参数/值…

入口文件

用户请求的PHP文件,负责处理一个请求(注意,不一定是URL请求)的生命周期,最常见的入口文件是index.php,有时候也会为了某些特殊的需求而增加新的入口文件,例如给后台模块单独设置的一个入口文件admin.php或者一个控制器程序入口think 都输入入口文件。

应用

应用在ThinkPHP中是一个管理系统架构及生命周期的对象,由系统的\think\App类完成,应用通常在入口文件中被调用执行,具有相同的应用目录(APP_PATH)的应用我们认为是同一个应用,但一个应用可能存在多个入口文件。

应用具有自己独立的配置文件、公共(函数)文件。

模块

一个典型的应用是由多个模块组成的,这些模块通常都是应用目录下面的一个子目录,每个模块都有自己独立的配置文件、公共文件和类库文件。

5.0支持单一模块架构设计,如果你的应用下面只有一个模块,那么这个模块的子目录可以省略,并且在应用配置文件中修改:

'app_multi_module' =>   false,

控制器

每个模块拥有独立的MVC类库及配置文件,一个模块下面有多个控制负责响应请求,而每个控制器其实就是一个独立的控制器类。

控制器主要负责请求的接受,并调用相关的模型处理,并最终通过视图输出。严格来说,控制器不应该过多的介入业务逻辑处理。

5.0的控制器类比较灵活,可以无需继承任何基础类库。

一个典型的Index控制器类如下:

namespace app\index\controller;

class Index 
{
    public function index()
    {
        return 'hello,thinkphp!';
    }
}

操作

一个控制器包含多个操作(方法),操作方法是一个URL访问的最小单元。

下面是一个典型的Index控制器的操作方法定义,包含了两个操作方法:

namespace app\index\controller;

class Index 
{
    public function index()
    {
        return 'index';
    }

    public function hello($name)
    {
        return 'Hello,'.$name;
    }
}

操作方法可以不使用任何参数,如果定义了一个非可选参数,则该参数必须通过用户请求传入,如果是URL请求,则通常是$_GET或者 $_POST方式传入。

模型

模型类通常完成实际的业务逻辑和数据封装,并返回和格式无关的数据。

模型类不一定要访问数据库,而且在5.0的架构设计中,只有进行实际的数据库查询操作的时候,才会进行数据库的链接,是真正的惰性连接。

ThinkPHP的模型支持多层设计,你可以对模型层进行更细化的设计和分工,例如把模型层分为逻辑层/服务层/事件层等等。

视图

控制器调用模型类后返回的数据通过视图组装成不同格式的输出。视图根据不同的需求,来决定调用模板引擎进行内容解析后输出还是直接输出。

驱动

系统很多的组件都采用驱动式设计,从而可以更灵活的扩展,驱动类的位置默认是放入核心类库目录下面,也可以重新定义驱动类库的命名空间而改变驱动的文件位置。

行为

为(Behavior)是在预先定义好的一个应用位置执行的一些操作。类似于AOP编程中的“切面”的概念,给某一个切面绑定相关行为就成了一种类AOP编程的思想。所以,行为通常是和某个位置相关,行为的执行时间依赖于绑定到了哪个位置上。

要执行行为,首先要在应用程序中进行行为侦听,例如:

// 在app_init位置侦听行为
\think\Hook::listen('app_init');

然后对某个位置进行行为绑定:

// 绑定行为到app_init位置
\think\Hook::add('app_init','\app\index\behavior\Test');

一个位置上如果绑定了多个行为的,按照绑定的顺序依次执行,除非遇到中断。

命名空间

ThinkPHP5采用了PHP的命名空间进行类库文件的设计和规划,并且符合PSR-4的自动加载规范。

猜你喜欢

转载自blog.csdn.net/August_leo/article/details/81184916