ThinkPHP6起步

9521次阅读 55人点赞 作者: WuBin 发布时间: 2024-03-26 14:44:03
扫码到手机查看

下载与安装

官方API:https://www.kancloud.cn/manual/thinkphp6_0/1037538

tp6官网不提供软件包下载,采用Composer 下载和更新。

windows中安装composer:https://www.wubin.work/blog/articles/484

下载好后使用cmd一路cd

D:\phpstudy\phpstudy_pro\WWW>cd xuexi

然后创建项目:

composer create-project topthink/think tp6(文件夹名称)

如果要更新你的项目版本,直接进入项目根目录,然后直接如下代码:

composer update topthink/framework

下载好之后,在浏览器中,直接访问/tp6/public即可,打开网站目录。

或者使用php think run

D:\phpstudy\phpstudy_pro\WWW\xuexi\tp6>php think run

使用启动域名直接访问,可以避免掉一些资源路径的问题。

如果80 端口没有被占用的情况下,使用如下命令直接访问http://localhost;

php think run -p 80

开启调试与配置文件

开启调试模式

在项目根目录下,如果是通过命令行安装,则会有一个.example.env文件,将文件名重命名为.env,然后确保文件中APP_DEBUG= true,即可打开调试模式。

.env 环境变量用于本地开发测试,部署后会被忽略

这里如果不进行“伪静态”的配置,大概率会提示:No input file specified.

这时候就是我们本地的服务器没有开启伪静态,以apache服务器为例,开启方法如下:

0、在httpd.conf配置文件中加载了mod_rewrite.so模块,找到:

# LoadModule rewrite_module modules/mod_rewrite.so

找到上面这句话,如果前面有#一定要把#去掉。

LoadModule rewrite_module modules/mod_rewrite.so

1、我们打开httpd.conf文件,在里面搜索“AllowOverride”

2、将里面搜索到的 AllowOverride: None改为All

实际上还有第三处,建议也改为:All

<Directory />
    AllowOverride All # None改为All
</Directory>

主要有如下两处:

 Options Indexes FollowSymLinks
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All

#
# "${SRVROOT}/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "${SRVROOT}/cgi-bin">
    AllowOverride All # None改为All
    Options None
    Require all granted
</Directory>

然后保存,重启服务器。

3、生成.htaccess文件放到应用入口文件的同级目录下,即在public文件夹里面的.htaccess文件里面加入(注意,在项目目录下也有个htaccess文件,一定要修改public文件夹里面的htaccess文件才有用),并加入如下配置:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

保存,然后修改app/controller/index.php,给它添加一个方法

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

    public function config() {
        return '123';
    }
}

然后访问http://localhost/xuexi/tp6/public/index/config即可,如果发现屏幕上输出了123,那么证明已经配置成功。

获取Env文件中的配置值与config目录中配置文件的值

// config文件夹中的database.php文件
return [

    // 数据库连接配置信息
    'connections'     => [
        'mysql' => [
            // 数据库类型
            'type'            => env('database.type', 'mysql'),
            // 服务器地址
            'hostname'        => env('database.hostname', '127.0.0.1'),
        ],
        // 更多的数据库配置信息
    ],
];
// 获取config文件夹中的database.php文件中的connections属性中的mysql字段里hostname项的值
return Config::get('database.connections.mysql.hostname');

获取.env文件中的配置值:如下,一个.env文件

APP_DEBUG = true

[APP]
DEFAULT_TIMEZONE = Asia/Shanghai

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = test
USERNAME = username
PASSWORD = password
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true

[LANG]
default_lang = zh-cn
// 判断是否存在
echo Env::has('database.hostname');

获取[database]下hostname中的值
Env::get('database.hostname')

url

url访问规则:单应用:http://serverName/index.php/控制器/操作/参数/值…;

TP6.0 默认是单应用模式,多应用需要作为扩展安装。

根目录下public/下的index.php(入口文件);

控制器:app 目录下有一个controller 控制器目录,其中每一个文件都是控制器文件;

比如我创建controller/Test.php【注意,控制器文件名必须首字母大写】

并输入以下内容

<?php
namespace app\controller;
class Test {
    public function hello()
    {
        return '123';
    }
}

这时浏览器访问:

http://localhost/xuexi/tp6/public/index.php/test/hello

http://localhost/xuexi/tp6/public/test/hello

【public/index.php 中的index.php 可以省略,只要设置URL 重写即可;具体操作参考《二》】

都会输出123,以上两个url都指向同一个结果,都一样。

这里的hello对应的就是叫“操作”。

我们再修改一下类:

class Test {
    public function hello($value = '')
    {
        return '123' . $value;
    }
}

那么我们访问:http://localhost/xuexi/tp6/public/index.php/test/hello/value/world

这里的value就是参数,world就是值,最终输出:123world

所以test:控制器,hello:操作(方法),value:参数,world:值

当方法中对value设置了默认值时候,不传入world也不会出错。

http://localhost/xuexi/tp6/public/test/hello/value =》输出123

兼容模式

如果上面那种形式的URL 不支持的话,可以使用兼容模式的方式来访问:

http://localhost/xuexi/tp6/public/?s=test/hello/value/world

就是将index.php替换为?s=即可。

文件目录名等开发规范

文件的规范如下:

a. 目录名(小写+下划线);

b. 类库和函数文件统一以.php 为后缀;

c. 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;

d. 类(包含接口和Trait)文件采用驼峰式命名(首字母大写),其它采用小写+下划线命名;

e. 类名(包括接口和Trait)和文件名保持一致,统一采用驼峰式命名(首字母大写);

函数和类、属性命名规范如下:

a. 类的命名采用驼峰法(首字母大写),如:User、UserType;

b. 函数的命名使用小写字母和下划线(小写字母开头)的方式,如:get_client_ip;

c. 方法的命名使用驼峰法(首字母小写),如:getUserName;

d. 属性的命名使用驼峰法(首字母小写),如:tableName;

e. 特例:以双下划线__打头的函数或方法作为魔术方法,如:__call 和__autoload;

常量与配置的规范如下:

a. 常量以大写字母和下划线命名,如:APP_PATH;

b. 配置参数以小写字母和下划线命名,如:url_convert;

c. 环境变量定义使用大写字母和下划线命名,如:APP_DEBUG;

数据表和字段的规范如下:

a. 数据表和字段采用小写加下划线方式命名;

b. 并注意字段名不要以下划线开头,如: think_user 表和user_name

c. 字段不建议使用驼峰和中文作为数据表及字段命名;

目录结构

ThinkPHP6.0 支持多应用模式部署,app 是应用目录,默认情况下,是采用的单模式;

单模式目录结构如下:

www  web部署目录
 |-- app    应用目录
     |--controller   控制器目录
     |--model        模型目录
     |--..
     |--common.php   公共函数文件
     |--event.php    事件定义文件

多应用模式下,结构如下(了解)

www  web部署目录
|-- app    应用目录
     |--app_name    应用目录
            |--controller   控制器目录
            |--model        模型目录
            |--view         视图目录
            |--common.php   公共函数文件
            |--..
            
     |--common.php   公共函数文件
     |--event.php    事件定义文件

相关资料

点赞 支持一下 觉得不错?客官您就稍微鼓励一下吧!
关键词:thinkphp6
推荐阅读
  • uniapp实现被浏览器唤起的功能

    当用户打开h5链接时候,点击打开app若用户在已经安装过app的情况下直接打开app,若未安装过跳到应用市场下载安装这个功能在实现上主要分为两种场景,从普通浏览器唤醒以及从微信唤醒。

    8186次阅读 521人点赞 发布时间: 2022-12-14 16:34:53 立即查看
  • Vue

    盘点Vue2和Vue3的10种组件通信方式

    Vue中组件通信方式有很多,其中Vue2和Vue3实现起来也会有很多差异;本文将通过选项式API组合式API以及setup三种不同实现方式全面介绍Vue2和Vue3的组件通信方式。

    3282次阅读 241人点赞 发布时间: 2022-08-19 09:40:16 立即查看
  • JS

    几个高级前端常用的API

    推荐4个前端开发中常用的高端API,分别是MutationObserver、IntersectionObserver、getComputedstyle、getBoundingClientRect、requ...

    13228次阅读 854人点赞 发布时间: 2021-11-11 09:39:54 立即查看
  • PHP

    【正则】一些常用的正则表达式总结

    在日常开发中,正则表达式是非常有用的,正则表达式在每个语言中都是可以使用的,他就跟JSON一样,是通用的。了解一些常用的正则表达式,能大大提高你的工作效率。

    12104次阅读 385人点赞 发布时间: 2021-10-09 15:58:58 立即查看
  • 【中文】免费可商用字体下载与考证

    65款免费、可商用、无任何限制中文字体打包下载,这些字体都是经过长期验证,经得住市场考验的,让您规避被无良厂商起诉的风险。

    10347次阅读 829人点赞 发布时间: 2021-07-05 15:28:45 立即查看
  • Vue

    Vue3开发一个v-loading的自定义指令

    在vue3中实现一个自定义的指令,有助于我们简化开发,简化复用,通过一个指令的调用即可实现一些可高度复用的交互。

    14248次阅读 1132人点赞 发布时间: 2021-07-02 15:58:35 立即查看
  • JS

    关于手机上滚动穿透问题的解决

    当页面出现浮层的时候,滑动浮层的内容,正常情况下预期应该是浮层下边的内容不会滚动;然而事实并非如此。在PC上使用css即可解决,但是在手机端,情况就变的比较复杂,就需要禁止触摸事件才可以。

    14180次阅读 1156人点赞 发布时间: 2021-05-31 09:25:50 立即查看
  • Vue

    Vue+html2canvas截图空白的问题

    在使用vue做信网单页专题时,有海报生成的功能,这里推荐2个插件:一个是html2canvas,构造好DOM然后转canvas进行截图;另外使用vue-canvas-poster(这个截止到2021年3月...

    27073次阅读 2131人点赞 发布时间: 2021-03-02 09:04:51 立即查看
  • Vue

    vue-router4过度动画无效解决方案

    在初次使用vue3+vue-router4时候,先后遇到了过度动画transition进入和退出分别无效的情况,搜遍百度没没找到合适解决方法,包括vue-route4有一些API都进行了变化,以前的一些操...

    23237次阅读 1791人点赞 发布时间: 2021-02-23 13:37:20 立即查看
交流 收藏 目录