07thinkphp第一天

在线地址1:https://docs.qq.com/doc/DQUFPcGZHT0phYWZS

在线地址2:https://shimo.im/docs/1f9d4113b7a14cb8/ 

composer是一个工具,是为php项目准备的软件管家。

官网网址:https://getcomposer.org/

中文网址:http://www.phpcomposer.com/

composer资源仓库或应用市场

网址:https://packagist.org/

 

2.3、composer安装【重点】

2.3.1、配置PHP环境变量

因为我们马上要使用的thinkphp5.1需要最低的PHP版本为PHP >= 5.6.0所以,这里你所需要安装的PHP版本一定比这个版本要高。

windows设置环境变量(windows 10)

07thinkphp第一天_第1张图片

设置完毕后,重新打开cmd窗口,输入 php –v

07thinkphp第一天_第2张图片

2.3.2、开启相关php扩展

同时也要开启如下扩展 php.ini文件

extension=php_openssl.dll

extension=php_pdo_mysql.dll

extension=php_mbstring.dll

extension=php_fileinfo.dll

extension=php_curl.dll

extension=php_gd2.dll

extension=php_soap.dll

extension=php_mysqli.dll

extension=php_sockets.dll  【可选】

07thinkphp第一天_第3张图片

注:命令行下则打开后就生效,apache或nginx就需要重启相关的服务。

查看命令行下可用扩展

php m

加管道过滤

php m | findstr gd   # window

07thinkphp第一天_第4张图片

2.3.3、安装composer

下载composer.phar:https://getcomposer.org/download/

07thinkphp第一天_第5张图片

把下载好的composer.phar文件复制到PHP环境变量指定的目录中

07thinkphp第一天_第6张图片

命令创建bat文件

echo @php "%~dp0composer.phar" %*>composer.bat

07thinkphp第一天_第7张图片

07thinkphp第一天_第8张图片

2.3.4、检查composer是否安装成功

07thinkphp第一天_第9张图片

2.4、切换composer镜像

由于众所周知的原因,国外的网站连接速度很慢。因此安装的时间可能会比较长或是安装不成功,我们建议通过切换composer国内镜像来解决此类问题。当然有钱的情况下,可以购买相关的渠道来访问国外网络。

以管理员身份打开cmd命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

注意:最近phpcomposer镜像存在问题,可以改成

备选方案

composer config -g repo.packagist composer https://packagist.laravel-china.org

07thinkphp第一天_第10张图片

执行完毕,源切换为国内镜像,下载的速度会有所提升。

注:

composer网站问题,一定要切换为国内镜像,如有条件可使用

windows 7以上,mac或linux系统,一定要考虑到权限的问题。

 

3.1、安装thinkphp5.1

3.1.1、环境要求

ThinkPHP5.1的环境要求如下:

PHP >= 5.6.0

PDO PHP Extension

MBstring PHP Extension

 

3.1.2、安装

thinkphp5.1之前可以在thinkphp官方网站进行下载源码包,但是thinkphp5.1版本开始,官网不再提供下载版本,请使用Composer或者git方式安装和更新。

composer create-project [--prefer-dist] topthink/think=[版本号] tp5
如果不写版本号,则下载 php版本所支持的最高的稳定版本
例:
composer create-project --prefer-dist topthink/think=5.0.* tp5
注:
composer            表示执行composer程序
create-project     通过composer去创建项目
topthink/think     框架的名称
--prefer-dist      优先下载压缩包方式,而不是直接从github上下载源码

~5.1 >=5.1 < 6.0
^5.1 >=5.1 < 6.0
~5.1.0 >=5.1.0 < 5.2.0
^5.1.0 >=5.1.0 < 6.0

最终方案
composer create-project --prefer-dist topthink/think tp5.1

 

07thinkphp第一天_第11张图片

四、框架基础

4.1、目录结构【重点】

https://www.kancloud.cn/manual/thinkphp5_1/353950

07thinkphp第一天_第12张图片

runtime目录在linux和mac下面一定要设置可写的权限

重点的目录和文件

目录

功能

application

应用目录,MVC就在此目录中,也是实现业务代码的所在的目录

application/common

公共模块目录,在application可以自定创建自己的模块,但在common定义的函数和模型都是公用的

application/common.php

公共函数库文件

config/app.php

应用主配置文件

route

路由文件目录

public

虚拟主机指向的目录

application/[index或admin]

表示index模块和admin模块 [自定义创建的]

 

五、路由

什么是路由

将用户的请求按照事先规划的方案提交给指定的控制器和 方法来进行处理。

Thinkphp框架提供了两种路由规则

  • pathinfo模式
  • 自定义路由规则【推荐】

进而可以让URL更规范以及优雅,提高网站的安全和网站URL访问的友好度。

Route类注册使用think\facade\Route类静态调用 think\Route.php

注:ThinkPHP5.1的路由定义更加对象化,并且默认开启路由(不能关闭),如果一个URL没有定义路由,则采用默认的PATH_INFO 模式访问URL。

5.0、隐藏index.php文件

打开apache重写模块

07thinkphp第一天_第13张图片

配置虚拟主机中允许重写

07thinkphp第一天_第14张图片

在入口文件中要有.htaccess文件

07thinkphp第一天_第15张图片

重启apache服务,让配置生效。访问时就可以不用带index.php文件了。

5.1、路由相关配置

强制路由
在config/app.php配置文件中设置
'url_route_must'		=>  true,
注:将开启强制使用路由,这种方式下面必须严格给每一个访问地址定义路由规则(包括首页),否则将抛出异常。
路由缓存
对于路由规则较多的应用可以大幅提升路由性能(仅部署模式有效)
'route_check_cache'	=> true,
注:如果路由定义中,有某个路由规则的路由地址使用了闭包的方式,那么路由缓存将会失效。
完全匹配
'route_complete_match'   => true,

07thinkphp第一天_第16张图片

5.2、定义路由

路由文件的位置:项目目录/routes/route.php文件中进行如下格式的定义

Route::请求方式('路由表达式',匿名函数);

Route::请求方式('路由表达式','[@]模块名/控制器名/方法名');  # 后讲到控制器时使用

注:给控制器方法设置好了请求的路由规则后,原来的pathinfo请求则失效,请求就会报异常,只能通过自定义路由规则来请求

07thinkphp第一天_第17张图片

5.3、请求类型

Route::get('new/:id','News/read'); 		// 定义GET请求路由规则    查询
Route::post('new/:id','News/update'); 	// 定义POST请求路由规则   添加
Route::put('new/:id','News/update'); 	// 定义PUT请求路由规则    修改
Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则 删除
Route::any('new/:id','News/read'); 		// 所有请求都支持的路由规则  框架提供 不推荐

07thinkphp第一天_第18张图片

测试定义好的请求路由规则类型,使用postman软件来测试

07thinkphp第一天_第19张图片

5.4、路由参数

# 必填参数

Route::请求方式('路由表达式/:参数',匿名函数);

# 可选参数

Route::请求方式('路由表达式/[:参数]',匿名函数);

07thinkphp第一天_第20张图片

5.5、路由分组

路由分组功能允许把相同前缀的路由定义合并分组,这样可以简化路由定义,并且提高路由匹配的效率。

Route::group('分组名(字符串)或者分组路由参数(数组)','分组路由规则(数组或者闭包)');
Route::group('blog', function () {
    Route::get(':id', 'read');
    Route::post(':id', 'update');
    Route::delete(':id', 'delete');
})->pattern(['id' => '\d+']);

# 分组的嵌套
Route::group(['method'=>'get'], function () {
Route::group('blog',function(){
	    Route::get(':id', 'read');
        Route::post(':id', 'update');
        Route::delete(':id', 'delete');
});
})->pattern(['id' => '\d+']);

07thinkphp第一天_第21张图片

六、控制器

6.1、控制器的后缀

打开配置文件application/app.php,有如下配置
'controller_suffix'      => false,
# 表示默认情况下,控制器无特殊后缀。例如 Index控制器,文件名为Index.php
如果需要进行设置,可以设置为
'controller_suffix'      => 'Controller',
# 表示控制器以Controller为后缀。例如Index控制器,文件名为IndexController.php
注:一般不建议进行修改,保持默认,框架默认给我们的配置。

07thinkphp第一天_第22张图片

6.2、使用命令行创建分组

php think build --module 分组名称

07thinkphp第一天_第23张图片

6.3、创建控制器

创建控制器的方式有两种:

#手动创建
application/模块目录/controller/目录下
命名规则:控制器名称(首字母大写) + (控制器后缀,默认没有) + .php
#命令行方式创建【推荐】
php think make:controller --plain 模块名/控制器名
# 参数说明
--plain 标准控制器 (默认创建的控制器是一个资源控制器,所以一般加上此选项)

07thinkphp第一天_第24张图片

如果创建时,没有在模块名称,则默认创建到公共模块中 【common

6.4、开启调试模式

默认情况下,错误描述比较模糊,不方便进行错误调试。这种模式通常叫做“部署模式”。

开发阶段可以将框架设置为调试模式,便于进行错误调试:

修改项目目录 config/app.php文件

07thinkphp第一天_第25张图片

实际开发中,使用第2种方案

07thinkphp第一天_第26张图片

07thinkphp第一天_第27张图片

6.5、前置操作

可以为某个或者某些操作指定前置执行的操作方法,设置 beforeActionList属性可以指定某个方法为其他方法的前置操作,数组键名为需要调用的前置方法名无值的话为当前控制器下所有方法的前置方法

07thinkphp第一天_第28张图片

6.6、页面跳转

在应用开发中,经常会遇到一些带有提示信息的跳转页面,例如操作成功或者操作错误页面,并且自动跳转到另外一个目标页面。系统的\think\Controller类内置了两个跳转方法successerror,用于页面跳转提示。

07thinkphp第一天_第29张图片

07thinkphp第一天_第30张图片

此方法可根据不同的请求方式http标准请求还是ajax请求会自动返回数据(html/json)

07thinkphp第一天_第31张图片

 

你可能感兴趣的:(07thinkphp)