ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
### 慕课网-《快速入门ThinkPHP 5.0--基础篇》学习笔记 [https://www.imooc.com/learn/832](https://www.imooc.com/learn/832) ***** # 关于MVC **MVC 模型(model) 视图(view) 控制器(controller)** > 一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码 ![](https://box.kancloud.cn/0561f5890cb3fe1cad8bb514407d2aa3_1165x552.png) **MVC的优势** 1. 耦合性低 2. 重用性高 3. 可维护性高 4. 有利于软件的工程化 **MVC的变形使用举例** 1. 无Model模式的web开发(企业官网,纯展示) 2. 无View模式的Api接口开发(APP开发,没有view,用Json和xml返回给客户端) 3. Model的再分层和Controller的再分层 ***** # 安装 **composer安装(推荐)** 1. PC [Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe) 2. MAC 'brew install composer' ``` composer create-project topthink/think tp5 ``` **更新Thinkphp框架** ``` composer update topthink/framework ``` **启动服务** 1. Thinkphp内置服务器 'php think run' 2. 使用集成开发环境 PC:wamp MAC:mamp **使用集成开发环境 根目录新建设置以下文件后 可直接隐藏public实现访问** - index.php ``` <?php require 'public/index.php'; ``` - web.config (IIS) ``` <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <defaultDocument> <files> <add value="index.php" /> </files> </defaultDocument> <rewrite> <rules> <rule name="OrgPage" stopProcessing="true"> <match url="^(.*)$" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTP_HOST}" pattern="^(.*)$" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration> ``` - htaccess(apache) ``` <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L] </IfModule> ``` ***** # 目录结构 [https://www.kancloud.cn/manual/thinkphp5_1/353950](https://www.kancloud.cn/manual/thinkphp5_1/353950) - **application** 应用目录,几乎整个项目的内容都写在这里 application/index 模块 application/admin 模块 - **extend** 文件夹为第三方库不是通过composer下载的或者说一个好用的第三方库是composer上没有的 - **public** 网站根目录,其中的 **static** 文件夹为 css js images - **runtime** 网站运行时的缓存文件,包括日志缓存和编译文件等等 - **thinkphp** 框架文件,整个框架的文件都在这个文件夹里了 **tpl** 文件夹为默认模板 - **vendor** 通过composer安装框架过程生成的目录,通过composer安装的所有类库都会安装在vendor这个文件中 ***** # 开发规范 [https://www.kancloud.cn/manual/thinkphp5_1/353949](https://www.kancloud.cn/manual/thinkphp5_1/353949) - 文件夹使用小写+下划线(下划线貌似用的也不多) - controller,model,validate 类文件采用**驼峰法**命名(首字母大写) - 方法的命名使用**驼峰法**(首字母小写) - 属性的命名使用**驼峰法**(首字母小写) - 以双下划线 __ 打头的函数或方法作为魔术方法(这是啥唷。。。) - 常量以全部大写字母和下划线命名 - 配置参数以全部小写字母和下划线命名 - 数据库中的**数据表**和**字段**采用全部小写加下划线方式命名 ***** # 模块设计 - Thinkphp默认将common设置成一个公用的模块,并且不允许直接在url上访问 - **实例** 调用公共模块 commom ``` use app\common\controller\Index as commonIndex; class Index { public function index() { $common = new commonIndex(); $common -> Index(); } } ``` - **继承** 调用公共模块 commom ``` use app\common\controller\User as commonUser; class Index extends commonUser { public function index() { $this -> getUser(); } } ``` ***** # 配置 **配置的优先顺序** > 惯例配置->应用配置->模块配置->动态配置 - 惯例配置 thinkphp/convention.php - 应用配置 config/app.php - 模块配置 application/模块/config/ - 动态配置(慎用) **使用助手函数 config() 获取配置信息** ``` dump(config()); ``` **扩展配置** 放在 config 文件夹内即可 ``` // config/wechat.php <?php return [ 'app_id' => '123456', ]; ``` **场景配置(还需学习)** > TP5.1 和 TP5设置方法不同,后期还需要再研究学习下 **模块配置** > 只对模块有效,放置目录:application/模块/config/ ``` <?php return [ 'app_id' => '123456', ]; ``` ***** # config **config类** ``` // 两种方法选一 use think\facade\Config; use Config; // 全部 Config::get(); // 读取 Config::get('app_name'); // 动态设置 Config::set('app_trace', true); // 判断存在返回布尔值 Config::has('oy'); ``` **config助手函数** ``` // 全部 config(); // 读取 config('app_name'); config('app.app_name'); config('app.name1.name2'); // 获取一级配置 config('app.'); // 动态设置 config('app_trace', true); // 判断存在返回布尔值 config('?oy'); ``` ***** # 环境变量(还需学习) **读取所有配置文件** ``` $_ENV ``` **使用 Env 类** ``` // 两种方法选一 use think\facade\Env use Env; Env::get('TERM_PROGRAM'); ``` > 开发->测试->上线 1. **开发环境** 开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般**打开全部错误报告**。 2. **测试环境** 一般是**克隆一份生产环境**的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。 3. **生产环境** 是值正式提供对外服务的,一般会**关掉错误报告**,**打开错误日志**。 *****