华南理工大学无线电爱好者协会软件小组ThinkPHP

初心者向:ThinkPHP的安装与配置初探

2017-08-05  本文已影响98人  EVANIMARIA

前言

最近在学习PHP的一个框架:ThinkPHP(下文简称TP),此文作为阶段性学习总结用,也希望对读者能有一些参考性的作用。文章主要重点为TP的配置方式的总结,同时对TP及框架作一个简单的介绍

一、关于框架与TP及其他

1.1. 框架

框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

不同的框架基本都会遵循某种特定的设计模式,而本文中将探讨的TP框架应用的就是MVC的思想。遵循MVC模式的框架通常来说都由Model(模型层), View(视图层), Controller(控制器)三个层次组合而成。视图层相当于仪器面板,透过视图层用户对控制器进行操作(实际操作时由框架内的路由器根据用户操作分析URL并选择相应的控制器,向其传递相应的操作),控制器响应操作并选择模型层的相应模型进行运算,之后再通过控制器把结果反馈到视图层上。由于框架运行原理不是本文重点,故此处暂不作详细描述。

1.2.TP

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。

1.3.TP5:本文中将要使用的TP版本,与前作(3.x版本)有较大不同

ThinkPHP5.0版本是一个颠覆和重构版本,采用全新的架构思想,引入了更多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,支持composer,并针对API开发做了大量的优化,包括路由、日志、异常、模型、数据库、模板引擎和验证等模块都已经重构,不适合原有3.2项目的升级,请慎重考虑商业项目升级,但绝对是新项目的首选(无论是WEB还是API开发)。

关于TP5的新特性请参阅TP5开发手册

二、TP5的安装环境及方法

2.1. TP5安装环境介绍

若想一键安装,安装wamp server即可 官网
以下操作均以安装wamp的情况为例

2.2. TP5的安装主要有三种方法:

笔者采取的是第三种方法,私以为也是最适合新手懒人的方法。进入TP官网首页并点击上方的下载,进入下载页面后选择TP5下载即可。下载得到的是一个压缩包,将其解压至wamp安装目录下的www目录即可。解压出来的目录应该包含以下各项:

tp目录.PNG
其中application文件夹是存放各个模块的目录,如前台使用的index模块及后台使用的admin模块(均可自己定义)等,public 通常设置为网站根目录,框架的入口文件就是放在这里。thinkphp 目录则是框架的源码目录,其中的library 目录为框架核心文件。由于大括号很难打,此处采用一张自己的笔记照片来表达其结构
笔记1.jpg
用浏览器进入wamp根目录,找到thinkphp目录下的public目录并打开
public.PNG
如果见到浏览器页面变为
index.PNG
则安装成功

三、TP5的配置原理

重用性是每个框架都会重点考虑的特性,而为了达到框架的重用性,许多应用构筑时所必须的参数都不应与业务逻辑代码混合在一起,而应该单独存放,同时使用某种方式应用到相应的位置。以数据库配置为例,不但不同开发环境下会有不同的配置,相同开发环境下不同模块、开发的不同阶段、开发者的不同工作环境都有可能不同。那TP5的配置是怎样的呢?

TP5的配置从原理上可以大致分为两部分,一部分是配置文件,另一部分是读取部分。配置文件只需要返回一个多维数组,其中key为配置名,value为配置值。以数据库配置为例

<?php
    return 
[
    'database'            => [
        // 数据库类型
        'type'            => 'mysql',
        // 数据库连接DSN配置
        'dsn'             => '',
        // 服务器地址
        'hostname'        => '127.0.0.1',
        // 数据库名
        'database'        => '',
        // 数据库用户名
        'username'        => 'root',
        // 数据库密码
        'password'        => '',
        // 数据库连接端口
        'hostport'        => '',
]
?>

这就是一段数据库的配置,只需要返回一个数组即可。当应用的其他部分,例如模型层,打算连接数据库进行操作时,相应部分就会读取这个配置文件里的数组并将里面的值(如数据库密码等)填入相应的地方。这样就实现了配置和逻辑代码分开,充分发挥了重用性,便于维护与升级。而读取部分则一部分由\think\Config类内的方法实现,一部分由应用部分的代码实现。

四、配置的具体实现

4.1. 配置路径

框架默认的配置文件存放目录为应用目录(即application目录),但是为了维护方便我们往往会另外新建一个config目录。修改路径方法如下:
在public/index文件(框架的入口文件)中新增一行:

//定义配置路径
define('CONF_PATH', __DIR__.'/../conf/');

这样框架就会从根目录下的 conf 目录里读取配置文件了,以下操作均以该路径为例

4.2.查看配置的方法

当我们进入框架的首页的时候,其实是进入了框架里index模块的 index控制器的 index方法(因此框架首页也可以通过public/index/index/index访问),而前文提到,application就是存放整个应用中的各种模块的地方。因此我们进入 application目录下的index目录, index目录下有个controller目录存放index模块的各种控制器,在里面找到 index.php 文件,修改里面index类的 index方法就可以改变首页显示内容了。想查看全部配置,只需要 dump(config()); 即可。

4.3.配置类型
助手函数 Config类
config(key) get(key)
config(key,value) set(key,value)
config(key,value,range) set(key,value,range)
config(?key) has(key)
4.4. 配置优先级

惯例配置->应用配置->扩展配置->场景配置->模块配置->动态配置

后面的配置会覆盖前面的。但是要注意,覆盖时同一个配置项如果形式不一样就会报错。例如,当惯例配置的某配置是二维数组,而应用配置的该配置是三维数组,那就会报错。

结语及其他

以上为TP的基本配置方法,基本上可以应用大部分场景。但是除此以外,TP的配置还有很多其他方面的东西。比如说,配置一定要用数组吗?不一定。又比如说,配置的作用域该如何动态设定呢?这些都可以在TP的技术书册里找到答案。顺便一提,设置环境变量时可能出现dump显示不出来的情况,请参阅这里别问我怎么知道的【累觉不爱脸】
其他TP问题请期待后续文章如果有的话

如有谬误,欢迎捉虫

参考资料:TP的技术书册慕课及度娘

(づ。◕‿‿◕。)づ

上一篇下一篇

猜你喜欢

热点阅读