[ThinkPHP6.*安装 (草稿先发布,再维护)

ThinkPHP6.0的安装,官方文档中有详细的说明,不过在安装之前,大家还是要做一些准备的,就是PHP本地开发环境 的搭建。

官方手册地址:https://www.kancloud.cn/manual/thinkphp6_0/1037609

本地PHP环境的搭建

PHP本地开发环境的搭建

composer的安装和使用

学习PHP大家一定要对composer有所了解,至少使使用简单的命令。在使用时,注意更换源(国内镜像)。

ThinkPHP6.0的安装

如果你是第一次安装的话,在命令行下面,切换到你的WEB根目录下面并执行下面的命令:

composer create-project topthink/think tp

这里的tp目录名你可以任意更改,这个目录就是我们后面会经常提到的应用根目录。

如果你之前已经安装过,那么切换到你的应用根目录下面,然后执行下面的命令进行更新:

composer update topthink/framework

更新操作会删除thinkphp目录重新下载安装新版本,但不会影响app目录,因此不要在核心框架目录添加任何应用代码和类库。

一般情况下,composer安装的是最新的稳定版本,不一定是最新版本,如果你需要安装实时更新的版本(适合学习过程),可以安装6.0.x-dev版本。

composer create-project topthink/think=6.0.x-dev tp

如果你没有安装集成开发环境,那么ThinkPHP6.0,可能通下面命令运行起来

进入命令行下面,执行下面指令

php think run

在浏览器中输入地址:

http://localhost:8000/

ThinkPHP6的入门介绍

开发规范

ThinkPHP6.0遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范:

目录和文件

  • 目录使用小写+下划线;
  • 类库、函数文件统一以.php为后缀;
  • 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;
  • 类文件采用驼峰法命名(首字母大写),其它文件采用小写+下划线命名;
  • 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写);

函数和类、属性命名

  • 类的命名采用驼峰法(首字母大写),例如UserUserType,默认不需要添加后缀,例如UserController应该直接命名为User
  • 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如get_client_ip
  • 方法的命名使用驼峰法(首字母小写),例如getUserName
  • 属性的命名使用驼峰法(首字母小写),例如tableNameinstance
  • 特例:以双下划线__打头的函数或方法作为魔术方法,例如__call__autoload

常量和配置

  • 常量以大写字母和下划线命名,例如APP_PATH
  • 配置参数以小写字母和下划线命名,例如url_route_onurl_convert
  • 环境变量定义使用大写字母和下划线命名,例如APP_DEBUG

数据表和字段

  • 数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如think_user表和user_name字段,不建议使用驼峰和中文作为数据表及字段命名。

请理解并尽量遵循以上命名规范,可以减少在开发过程中出现不必要的错误。

框架的目录结构

相对于5.1来说,6.0版本目录结构的主要变化是核心框架纳入vendor目录,然后原来的application目录变成app目录。

6.0支持原生多应用模式部署,所以实际的目录结构取决于你采用的是单应用还是多应用模式,分别说明如下。

单应用模式

默认安装后的目录结构就是一个单应用模式

www  WEB部署目录(或者子目录)
├─app           应用目录
│  ├─controller      控制器目录
│  ├─model           模型目录
│  ├─view            视图目录
│  ├─ ...            更多类库目录
│  │
│  ├─command.php        命令行定义文件
│  ├─common.php         公共函数文件
│  └─event.php          事件定义文件
│
├─config                配置目录
│  ├─app.php            应用配置
│  ├─cache.php          缓存配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       数据库配置
│  ├─log.php            日志配置
│  ├─route.php          路由和URL配置
│  ├─session.php        Session配置
│  ├─template.php       模板引擎配置
│  └─trace.php          Trace配置
│
├─route                 路由定义目录
│  ├─route.php          路由定义文件
│  └─ ...   
│
├─public                WEB目录(对外访问目录)
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                第三方类库目录(Composer依赖库)
├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件

多应用模式

如果你需要一个多应用的项目架构,目录结构可以参考下面的结构进行调整(关于配置文件的详细结构参考后面章节)。

www  WEB部署目录(或者子目录)
├─app           应用目录
│  ├─app_name           应用目录
│  │  ├─common.php      函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  └─ ...            更多类库目录
│  │
│  ├─command.php        命令行定义文件
│  ├─common.php         公共函数文件
│  └─event.php          事件定义文件
│
├─config                应用配置目录
│  ├─app_name           应用配置目录
│  │  ├─database.php    数据库配置
│  │  ├─cache           缓存配置
│  │  └─ ...            
│  │
│  ├─app.php            应用配置
│  ├─cache.php          缓存配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       数据库配置
│  ├─log.php            日志配置
│  ├─route.php          路由和URL配置
│  ├─session.php        Session配置
│  ├─template.php       模板引擎配置
│  └─trace.php          Trace配置
│
├─route                 路由定义目录
│  ├─app_name           应用路由目录
│  │  ├─route.php       路由定义文件
│  │  └─ ...   
│
├─public                WEB目录(对外访问目录)
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                第三方类库目录(Composer依赖库)
├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件

多应用模式部署后,记得删除app目录下的controller目录。

在实际的部署中,请确保只有public目录可以对外访问。

mac或者linux环境下面,注意需要设置runtime目录权限为777。

ThinkPHP6.0中的配置

配置目录结构与项目的结构有关,项目分为单应用和多应用。单应用下相对比较简单。

在多应用配置下,配置分为全局配置和应用配置,应用配置的优先级要高于全局配置。

配置项的读取和配置和之前的版本相差不是太多。

入口文件隐藏

没有特殊的需求,入口文件,一般情况下不需要做任何的修改。

在这里要注意,ThinkPHP6.0的url访问和之前版本的Url访问是有区别的。

单应用:

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

多应用:

http://serverName/index.php?s=/控制器/操作/[参数名/参数值...]

在这里要注意,在多应用模式下,url访问时访问不到,是因为默认情况下,配置文件中开启了强制路由。另外要开启多应用模式。这样的话,才能够正常的访问。

在进行入口文件隐藏时,需要进行URL重写,不同的服务器环境,设置方式也不同。TP官方文档中有详情的说明。

命令行工具

命令行操作比较灵活方便,所以有必要去学习一下命令行。

在使用命令行工具时,需要注意以下事项

  1. PHP要设置为环境变量,并且版本要在7.1+
  2. 在命令行中,执行命令时要定位到项目根目录
  3. 如果要使用命令创建应用,首先需要将build.example.php重命名为build.php并移入app目录
  4. 命令行工具的选用(推荐使用git bash)

基本命令

  1. php think list这个是比较重要的,可以查看目录所支持的所有命令
php think list
  1. php think build 应用名称 创建应用
php think build admin
  1. php think make:controller admin@Index 创建控制器
`php think make:controller admin@Index

.....

更多的命令,可以去看一下文档,或者 执行:php think list

Facade(门面)

facade也要外观模式,是一种设置模式。可以简单的理解为,可以将一个动态类库变为一个静态类库(向外提供一个静态的访问入口)。

下面是一个示例,假如我们定义了一个app\common\Test类,里面有一个hello动态方法。

<?php
namespace app\common;

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

调用hello方法的代码应该类似于:

$test = new \app\common\Test;
echo $test->hello('thinkphp'); // 输出 hello,thinkphp

数据迁移

使用数据库迁移工具可以将数据库结构和数据很容易的在不同的数据库之间管理迁移。

在以前,为了实现“程序安装”,你可能会导出一份sql文件,安装时,用程序解析这个sql文件,执行里面的语句,这样做有诸多的局限性,但现在使用数据库迁移工具,你可使用一个强大的类库API来创建数据库结构和记录,并且可以容易的安装到Mysql,sqlite,sqlserver等数据库。

使用之前你应当正确的连接到数据库,不论是mysql,sqlite,sqlserver

安装
composer require topthink/think-migration
创建迁移工具文件
//执行命令,创建一个操作文件,一定要用大驼峰写法,如下
php think migrate:create AnyClassNameYouWant
//执行完成后,会在项目根目录多一个database目录,这里面存放类库操作文件
//文件名类似/database/migrations/20190615151716_any_class_name_you_want.php
编辑文件
<?php

use think\migration\Migrator;
use think\migration\db\Column;
 
class  AnyClassNameYouWant extends  Migrator
{
    /**
    * Change Method.
    *
    * Write your reversible migrations using this method.
    *
    * More information on writing migrations is available here:
    * http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
    *
    * The following commands can be used in this method and Phinx will
    * automatically reverse them when rolling back:
    *
    * createTable
    * renameTable
    * addColumn
    * renameColumn
    * addIndex
    * addForeignKey
    *
    * Remember to call "create()" or "update()" and NOT "save()" when working
    * with the Table class.
    */
    
    public  function  change()
    {
        // create the table
        $table  =  $this->table('users',array('engine'=>'MyISAM'));
        $table->addColumn('username', 'string',array('limit'  =>  15,'default'=>'','comment'=>'用户名,登陆使用'))
        ->addColumn('password', 'string',array('limit'  =>  32,'default'=>md5('123456'),'comment'=>'用户密码')) 
        ->addColumn('login_status', 'boolean',array('limit'  =>  1,'default'=>0,'comment'=>'登陆状态'))
        ->addColumn('login_code', 'string',array('limit'  =>  32,'default'=>0,'comment'=>'排他性登陆标识'))
        ->addColumn('last_login_ip', 'integer',array('limit'  =>  11,'default'=>0,'comment'=>'最后登录IP'))
        ->addColumn('last_login_time', 'datetime',array('default'=>0,'comment'=>'最后登录时间'))
        ->addColumn('is_delete', 'boolean',array('limit'  =>  1,'default'=>0,'comment'=>'删除状态,1已删除'))
        ->addIndex(array('username'), array('unique'  =>  true))
        ->create();
    }

}
执行迁移工具
php think migrate:run
//此时数据库便创建了prefix_users表.

复制

数据库会有一个migrations表,这个是工具使用的表,不要修改

数据填充

数据填充就是向数据库中写入数据(测试数据)。

生成填充文件

ThinkPHP官方并没有相关的介绍,大家可以通过php think list来查看相关的命令

生成填充文件

php think seed:create SeederUser

编写填充代码

这里要注意,所谓数据填充,就是在填充文件中的run方法里面,进行数据插入操作,可以使用模型方式也可以使用数据库操作方式!

执行数据填充

php  think seed:run

后端应用的创建

创建后台应用,只需要执行如下命令即可。

php think build admin

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Greenplum

9.7.3 dblink的使用

https://www.postgresql.org/docs/9.6/dblink.html

12520
来自专栏PHP专享栏

移动端接口安全那些事

服务端提供对外开放到公网API接口,危险非常大.尤其对移动应用开放接口的时候,更需要关注接口安全性的问题,要确保应用APP与API之间的安全通信,防止数据被恶意...

12320
来自专栏Greenplum

Greenplum数据库使用总结(干货满满)--常用设置参数

参考资料:https://blog.csdn.net/kygoal/article/details/75041851

66420
来自专栏Greenplum

Greenplum数据库使用总结(干货满满)--pg_dump命令使用

Greenplum 支持逻辑备份。我们使用Greenplum自带的pg_dump命令实现逻辑备份功能,导出备份文件,再通过 psql 导入到Greenplum中...

27820
来自专栏Greenplum

greenplum gptransfer命令参数与示例详解

对于Greenplum Database 4.2及更高版本,gptransfer实用程序

22020
来自专栏PHP专享栏

MySQL中FIND_IN_SET探险记

公司的业务需求是需要分权限分等级的获取不同的内容,因为原来的角色,权限,分组表已经建好,但是又要实现不同产品需要不同等级不同分组的人员管理,在做数据库查询时,需...

7410
来自专栏达达前端

微信小程序与云开发

Java、NodeJS、JavaScript、HTML5、CSS3、VueJs、ReactJs、前端工程化、前端架构

60420
来自专栏Greenplum

Greenplum权限管理

每个数据库的逻辑结构对象都有一个所有者,所有者默认拥有所有的权限,不需要重新赋予。

11820
来自专栏Greenplum

greenplum gptransfer命令使用

https://gpdb.docs.pivotal.io/510/utility_guide/admin_utilities/gptransfer.html

8210
来自专栏Greenplum

Greenplum数据库使用总结--目录部分

23110

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励