第3章 TP5.0 配置

上次复习

1、框架名词

1、入口文件

2、应用

3、模块(前台模块 后台模块)

4、控制器

5、数据模型

6、视图

7、命名空间

2、跨控制器调用

# 实例化 当前模块User控制器
controller('User');
# 实例化后台模块User控制器
controller('Admin\User');

3、跨方法调用

# 实例化当前控制器test方法
action('test');
# 实例化当前模块User控制器test方法
action('User\test');
# 实例化Admin模块User控制器test方法
action('Admin\User\test');

4、如何新建一个模块

5、如何新建一个控制器

6、讲解TP运转流程

=============================================================
今日学习

1、配置文件格式

a) ThinkPHP支持多种格式的配置格式,但最终都是解析为PHP数组的方式。

b) 我们主要的学习形式就是数组
	return [
		'name'=>'',
		'age'=>'',
	];

2、配置的形式

1、惯例配置

	a、惯例配置目录
		C:\AppServ\www\tp5\thinkphp\convention.php

	b、注意:
		大家一般不要修改惯例配置

2、应用配置

	a、应用配置目录
		C:\AppServ\www\tp5\application\config.php

3、扩展配置
	a、扩展配置
		其实就是对配置文件进行分目录的管理

	b、扩展配置目录
		# C:\AppServ\www\tp5\application\database.php

		# C:\AppServ\www\tp5\application\extra\用户可以自定义配置文件

	c、读取database扩展配置	

		# 读取databse中的扩展项
		dump(config('扩展文件名.password'));
		dump(config('database.password'));

		# 读取所有的database扩展
		dump(config('database'));

	d、自定义扩展配置

		1、在 扩展目录(C:\AppServ\www\tp5\application\extra)下 新建user.php

		2、打开文件	
			<?php 
			return [
				"name"=>"小郭",
				"love"=>"作家",
				"wai"=>"小四"

			];

		3、读取自定义扩展配置
			dump(config('user'));
			dump(config('user.wai')

4、场景配置
	a、解决问题

		开发过程可能不同环境下进行开发

	b、如何使用

		1、修改应用配置(C:\AppServ\www\tp5\application\config.php)
			'app_status'             => 'home',

		2、在应用目录下新建(C:\AppServ\www\tp5\application) 新建对应home.php

		3、在home.php 中书写相关配置

5、模块配置

	a、解决问题

		每一个模块,都有自己特有的配置

	b、如何使用(以前台模块为例)

		1、在前台模块下(C:\AppServ\www\tp5\application\index)新建 config.php

		2、打开配置文件书写
			<?php 
			return [
				"index"=>"我是前台配置"
			];

6、动态配置

	1、系统方法
		// config(参数1,参数2);
		config('name','PHP开发');

	2、系统类

		\think\Config::set('name','WEB前端');

		use \think\Config;
		Config::set('name','小程序开发');

3、读取配置

1、通过系统类 
	# 如果配置项存在 直接输出 不存在返回NULL
	1、打印配置信息

		echo \think\Config::get('name');

	2、打印数组配置信息
		echo \think\Config::get('teacher');
		echo \think\Config::get('teacher.name');
	
2、通过系统方法
	1、打印配置信息
		echo config('name');

	2、打印数组配置信息
		dump(config('teacher'));
		dump(config('teacher.name'));

	3、读取所有配置
		dump(config());

3、使用use
	1、打印配置信息

		use \think\Config;
		echo Config::get('kouhao');
	2、打印数组配置信息
		use \think\Config;
		echo Config::get('teacher');
		echo Config::get('teacher.name');

4、系统类(C:\AppServ\www\tp5\thinkphp\library\think)

Config 设置和获取配置文件

5、系统方法(C:\AppServ\www\tp5\thinkphp\helper.php)

Controller  实例化控制器
action      调用模块的操作方法
config      设置和获取配置
dump        浏览器友好的变量输出

6、配置文件之间的加载顺序

1、优先级
	动态配置>模块配置>场景配置>扩展配置>应用配置>惯例配置

2、加载顺序
	惯例配置->应用配置->扩展配置->场景配置->模块配置->动态配置

3、配置文件实现原理
	$data=array(
		"name"=>"惯例配置",
		'a'=>'a'
		);

	$data1=array(
		"name"=>'应用配置',
		"b"=>'b'
		);
	# 后面加载的配置,把前面加载匹配同名覆盖
	dump(array_merge($data,$data1));

7、环境变量配置

1、TP5.0 支持环境变量配置

2、设置环境变量配置

	a、打开网站根目录(C:\AppServ\www\tp5) 新建.env

	b、书写环境配置
		name=haoge
		age=18

		[database]
		type=mysql
		root=root
		pass=123qweaasd
	c、注意配置环境变量不能使用中文

3、读取环境配置
	a、命名空间
	    dump(\think\Env::get('name'));
	    dump(\think\Env::get('abc','不存在'));
	    # 读取数组配置
	    # 不能读取整个数组
	    dump(\think\Env::get('database.type'));

	b、use 导入系统类
	    use \think\Env;
	    dump(Env::get('name'));
	    # 读取数组配置
	    # 不能读取整个数组
		    dump(Env::get('database.type'));

4、如何使用

	打开配置文件	
		use \think\Env;
		return [
		    
		    // 应用调试模式
		    'app_debug'              => Env::get('app_debug',false),
		    // 应用模式状态
		    'app_status'             => Env::get('app_status',''),
		];
<think>根据用户的问题,用户希望在ThinkPHP 5.0中手动集成第三方类库`creatcode/think-throttle`,而不使用Composer。用户明确要求手动集成,因此我们需要提供手动集成的步骤。 首先,我们需要理解`think-throttle`是什么。根据名称,它应该是一个用于请求限流的中间件(类似于引用[2]中提到的throttle功能)。由于用户要求手动集成,我们需要下载该库的源代码,并将其放入项目中合适的位置,然后进行配置。 步骤大致如下: 1. 下载第三方类库的源代码(通常从GitHub仓库下载)。 2. 将下载的类库放入ThinkPHP5.0项目的扩展目录中(例如`extend`目录)。 3. 修改项目配置,确保类库能够被自动加载。 4. 根据类库的文档进行配置和使用。 由于用户没有提供具体的类库GitHub地址,我们假设类库的名称为`creatcode/think-throttle`,我们可以从GitHub上搜索并下载。 具体步骤: 1. **下载源代码**: 访问GitHub,搜索`creatcode/think-throttle`,找到仓库并下载ZIP包(或者使用git clone,但用户要求不使用composer,所以手动下载ZIP包)。 2. **放置类库**: 将下载的ZIP包解压,得到文件夹。在ThinkPHP5.0项目的根目录下,有一个`extend`目录(如果没有则创建),在`extend`目录下创建一个子目录(例如`throttle`),然后将解压后的文件放入`extend/throttle`中。或者,也可以直接将解压后的文件夹(如`think-throttle-master`)放入`extend`目录,并重命名为`throttle`。 3. **修改自动加载**: ThinkPHP5.0支持自动加载`extend`目录下的类库。但是,为了确保类库的命名空间能够被正确加载,我们需要检查类库的命名空间和文件路径是否匹配。 假设类库的命名空间为`creatcode\throttle`,那么其文件应该放在`extend/creatcode/throttle`下。但根据我们上面的放置方式,我们直接放在了`extend/throttle`下,所以需要调整。 另一种做法是,在`extend`目录下创建与命名空间匹配的目录结构。例如,如果类库的根命名空间是`creatcode`,那么我们应该在`extend`目录下创建`creatcode`目录,然后将`think-throttle`中的文件放入`extend/creatcode/throttle`。 但是,我们不知道类库的具体结构,所以需要用户根据实际情况调整。一般来说,类库的根目录下应该有一个`src`目录,里面是源代码,并且按照命名空间组织。 例如,如果类库的结构是: ``` think-throttle-master/ src/ Throttle.php ... ``` 那么,我们应该将`src`目录下的所有内容复制到`extend/creatcode/throttle`(假设命名空间是`creatcode\throttle`)中。这样,文件`Throttle.php`的完整路径就是`extend/creatcode/throttle/Throttle.php`,并且其命名空间为`namespace creatcode\throttle;`。 4. **注册命名空间**(如果需要): 如果自动加载不成功,可以在项目的入口文件`public/index.php`或者`application/command.php`中注册命名空间。但是,ThinkPHP5.0的自动加载机制会自动加载`extend`目录下的类,所以通常不需要手动注册。 如果类库的命名空间不在`extend`目录下,或者需要自定义,可以在`application/config.php`中的`root_namespace`添加: ```php &#39;creatcode&#39; => ROOT_PATH . &#39;extend/creatcode&#39;, ``` 5. **配置和使用**: 根据类库的文档,进行配置。例如,引用[2]中提到了一个throttle的配置,我们可以参考。通常,限流中间件需要配置在路由或全局中间件中。 假设类库提供了一个中间件`creatcode\throttle\Throttle`,我们可以在全局中间件中注册它。在`application/middleware.php`文件中添加: ```php return [ // ...其他中间件 \creatcode\throttle\Throttle::class, ]; ``` 然后,在配置目录(`application/`)下创建`throttle.php`配置文件(参考引用[2]中的配置内容),或者根据类库要求进行配置。 6. **注意事项**: - 手动集成的类库可能需要依赖其他包,用户需要自行解决依赖(同样手动下载并放置到`extend`目录)。 - 类库的版本需要与ThinkPHP5.0兼容。 由于用户没有提供类库的具体信息,以上步骤是通用步骤。用户需要根据实际类库的结构和文档进行调整。 生成相关问题: 1. 如何手动下载GitHub上的项目并集成到ThinkPHP5.0中? 2. ThinkPHP5.0中如何配置中间件? 3. 如何解决手动集成第三方类库时的命名空间问题? 4. 限流中间件在ThinkPHP中通常有哪些配置选项?</think>在 ThinkPHP 5.0 中手动集成第三方类库 `creatcode/think-throttle`(不使用 Composer)需要以下步骤: ### 手动集成步骤 #### 1. **下载扩展包** - 访问 GitHub 仓库(如 `https://github.com/creatcode/think-throttle`) - 下载 ZIP 文件并解压到项目目录,建议路径: `tp5/extend/throttle/`(`extend`目录需手动创建) #### 2. **注册命名空间** 在入口文件 `public/index.php` 或应用配置 `application/config.php` 中添加: ```php \think\Loader::addNamespace(&#39;throttle&#39;, ROOT_PATH . &#39;extend/throttle/src&#39;); ``` > 注:路径需根据实际解压位置调整,确保指向 `src` 目录[^1]。 #### 3. **配置中间件** 在 `application/middleware.php` 中注册限流中间件: ```php return [ // 其他中间件... &#39;throttle&#39; => \throttle\middleware\Throttle::class, ]; ``` #### 4. **创建配置文件** 在 `application/extra/` 下新建 `throttle.php`,内容参考: ```php return [ &#39;prefix&#39; => &#39;throttle_&#39;, // 缓存键前缀 &#39;key&#39; => true, // 使用来源IP标识 &#39;visit_rate&#39; => &#39;10/m&#39;, // 频率限制:10次/分钟 &#39;driver_name&#39; => &#39;CounterFixed&#39;, // 限流算法 &#39;visit_fail_response&#39; => function($wait) { return json([&#39;code&#39; => 429, &#39;msg&#39; => "请求过快,请 {$wait} 秒后重试"]); } ]; ``` > 配置项参考引用[2]的节流逻辑设计[^2]。 #### 5. **路由/控制器中使用** - **路由调用示例**: ```php Route::get(&#39;api/test&#39;, &#39;api/Test/index&#39;)->middleware(&#39;throttle&#39;); ``` - **控制器调用示例**: ```php public function index() { return json([&#39;data&#39; => &#39;限流测试成功&#39;]); } ``` --- ### 关键注意事项 1. **依赖处理** 检查扩展包是否依赖其他库(如 Redis),需手动下载并放入 `extend` 目录,并在入口文件注册命名空间。 2. **命名空间匹配** 若扩展包源码使用 `namespace creatcode\throttle;`,则注册路径应为: ```php \think\Loader::addNamespace(&#39;creatcode\\throttle&#39;, ROOT_PATH . &#39;extend/throttle/src&#39;); ``` 3. **缓存驱动** 确保 `config/cache.php` 中配置了缓存驱动(如 Redis 或 File),限流依赖缓存存储计数。 4. **路径问题** 若遇到类找不到错误,检查: - 文件路径大小写(Linux 环境区分大小写) - 命名空间与目录结构是否完全匹配 --- ### 手动集成 vs Composer 集成 | **方式** | **优点** | **缺点** | |----------------|-----------------------------|----------------------------------| | **手动集成** | 不依赖 Composer 和网络 | 需处理依赖、更新麻烦 | | **Composer** | 自动解决依赖、版本管理 | 需安装 Composer 环境[^1] | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值