-
1、打印环境变量 dump($_ENV);(直接打印时是空白的。要对php.ini做修改)
修改方法:
第一步:$_ENV会为空,其原因通常是php的配置文件php.ini的配置项为:variables_order = "GPCS"。
要想让$_ENV的值不为空,那么variables_order的值应该加上一个大写字母“E”,即:variables_order = "EGPCS"。2、在网站根目录下新建 .env文件,文件名也是不能更改的,在网站运行时人自动加载这个文件里的配置(直接右键新建再改名是不行的,要先新建文本文档然后再另存为设置文件名为 .env就可以了。.env文件是用来模拟环境变量配置)
还可以在.env文件中直接配置 databse的相关配置
如果使用了不同系统环境配置那就一定要设置.env文件,这样就可以方便的把开发环境、测试环境 、运营环境相互切换
查看全部 -
Config::get() 类::方法 表示 是对类的静态属性和方法的直接引用,不需要实例化类而直接使用。
获取配置时
没有use think\Config 就要这样使用$res = \think\Config::get();
use think\Config 后就可以 $res=config(); 或是 $res = Config::get();
这节视频使用的Config类都在文件thinkphp\library\think\Config.php中
查看全部 -
1、public function __construct(){} 在类文件中执行下面任何方法前都会用执行这个方法。
在这方法中直接用助手函数。
运行结果为
如果只在方法里动态配置应用项,那只有这个方法才可以使用,同文件的其它方法是不能使用的。如:
查看全部 -
模块配置
1、新文件conf/index/config.php 这个config.php名也是固定的,只能是这个名,这个文件只会对app/index/模块生效,对其它模块是不生效的
2、新建文件conf/index/extra/demo.php ,这个也只对index模块有效的,这个index目录就是模块配置,他的目录结构与conf/目录结构是一样的,只是conf/目录是针对所有的模块。
查看全部 -
配置文件执行顺序 conf/extra/database.php > conf/database.php > thinkphp/convention.php
在不同的环境中使用不同的配置文件叫场景配置
在conf/config.php文件中加多一项:
home场景时就加conf/home.php文件,office环境就加一个conf/offic.php文件,下面的值也改成offic
'app_status' => 'home',
home场景时就在conf里加一个home文件
场景配置文件 conf/home.php可以跟conf/config.php文件执行array_merge()操作
查看全部 -
在conf/目录下新建一个扩展目录:extra/,必须要这个名字才会生效
再新建文件 extra/email.php,代码如下:
<?php return [ 'host'=>'smtp.qq.com', 'name'=>'35595@qq.com' ];
在配置项的扩展目录下的文件TP会默认把文件明当成配置项的一个key
如:
如果项目不是特别大,建议还是使用默认配置文件,不需要再多去建扩展配置项
在扩展目录中也可以把数据库配置放入一个新建文件中,比如:extra/database.php 或是把这个文件直接放在conf目录下也是可以的,比如:conf/database.php
查看全部 -
应用配置可以改变默认的惯例配置
1、若要改变整个app/下模块的配置就要在新建的conf/目录新建一个config.php文件。(文件名只能是config.php)
conf/config.php文件里返回一个数组:
<?php return [ 'app_email'=>'1024208436@qq.com', 'app_author'=>'june' ];
再从各模块里打印出 配置时就会在最底下加上这两个配置
若想要改变默认的惯例配置也可以在这个文件里加上同样的数组元素,如:改变应用调试模式
<?php return [ 'app_email'=>'342535@qq.com', 'app_author'=>'june', // 应用调试模式 'app_debug' => true, ];
那是如何实现这种配置加载的呢,如下:
public function demoConfig()//用来模拟应用配置会改变惯例配置案例 { $conf1 = [//对应 惯例配置 'username'=>'juneXu', ]; $conf2 = [//对应 应用配置 'username'=>'june', ]; dump(array_merge($conf1,$conf2));//处理应用配置覆盖惯例配置 }
最终显示
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
查看全部 -
1、删除默认目录 application/ ,新建目录 app/
2、把开public/index.php文件,把
define('APP_PATH', __DIR__ . '/../application/');
改成
define('APP_PATH', __DIR__ . '/../app/');
再加一行(// 定义配置目录)
define('CONF_PATH', __DIR__ .'/../conf/');
3、在app/目录下创建 index/controller/Index.php文件
输入代码:
namespace app\index\controller; class Index { public function index() { dump(config()); } }
访问后显示结果为:(一些惯例配置)
4、thinkphp的惯例配置文件
thinkphp/convention.php
查看全部 -
隐藏入口文件index.php
如果使用的是phpstudy环境套件,照官方设置后还要修改一下.htaccess文件
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
改成:
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
开启调试模式
config/app.php文件中找到
// 显示错误信息
'show_error_msg' => false,
把false改成 true
在application/目录下创建common模块
创建common下的控制器Index的Index类且加上index()方法,如图:
此时是不能直接去访问common/index/index的,这是thinkphp的一个规定,因为我们在很多项目中很多模块是一些通用的方法是需要有一个地方来放置,那么thinkphp默认将common设置成一个公用的模块,并且不允许直接在url上访问。
那如何使用这个公用模块下的方法呢?
在其它模块中可以调用公用模块下的方法,如图:
这样设置的好处是:如果有通过的控制器,那么就可以写在common模块中,这样也可以很安全,因为common是不允许url访问的,同时也减少了很多不必要的重复代码的编写。也可以放其它模块所依赖的库文件
查看全部 -
application应用目录
command.php 是控制台的配置文件,用命令行执行think.php时就会先执行这个文件
common.php 是项目的公共文件 ,编辑通用的函数,可以在所有的模块中调用,注册到全局,在任何地方都可以调用
config.php 是应用的配置文件,整个应用都会读取这个配置,也就是说所有模块都会通用这个配置
database.php 是数据库配置文件,连接数据库时,只要修改些文件的相关配置
route.php 是路由文件可以对url地址美化文件
tags.php 是应用行为扩展文件,可以对框架进行扩展而不需要修改原框架文件
application/index目录是模块目录
controller目录是控制层
新建目录 model 模型层
新建目录 view 视图层
application 目录下可以建多个模块,比如后台模块 admin
extend 是我们下截第三方库时使用的,不是用composer下截的,比如我们用的一个库比较好用,没有composer包那就可以将类库下载到此目录,然后修改下它的命令空间就可以直接在应用中使用
public 目录下的所有文件都是允许访问的
router.php 是框架快速启动的文件,如果没有安装apache时php就可以通过这个启动thinkphp框架
如:命令 php -s localhost:8888 router.php
按 Ctrl + C 可以退出这个服务
robots.txt 是告诉搜索引擎哪些链接要抓取哪些不用
static/ 主要来放网站的静态文件(图片、js、css之类的)
runtime 是网站的缓存文件,包括日志缓存和编译文件等
thinkphp 是框架文件
base.php 是定义一些常量
composer.json定义composer的配置文件
console.php 是控制台的配置文件
convention.php 框架默认配置文件
herlper.php 是助手函数
lang/ 是语言包目录
library/ 是框架的核心目录
library/traits/ 是类库的扩展目录
library/think 是整个框架的核心文件
license.txt 是说明文件
phpunit.xml 是phpunit的测试文件
start.php 是框架启动文件
tpl/ 是框架默认模板目录
tpl/default_index.tpl 是自动生成的控制器模板文件
tpl/dispatch_jump.tpl 是发出成功或失败的跳转文件
tpl/page_trace.tpl 调试时显示的模板文件
tpl/think_exception.tpl 抛出异常时显示的模板文件
vendor 是通过git或composer 安装过程中生成的类库目录
使用规范
1、目录全部用小写+下划线的方式命名
2、类库函数文件名均以.php结尾,不需要用.class.php结尾了
3、类的文件名均以命名空间定义,且命名空间各类库文件所在的路径一致
如: namespace app\index\controller,这个就是应用目录,app是定义顶级的application目录
4、类文件采用驼峰 首字母大写 其余文件为小写+下划线命名
类名和类文件名保持一致,采用驼峰命名 首字母大写
如: Index.php文件里有 class Index 的类
5、函数名首字母小写之后才用驼峰方法命名(如:getUserInfo)
6、属性名采用驼峰 首字母小写 (如:tableName)
7、以双下划线__开头的函数或方法为魔术方法(尽量不要使用双下划线开头)
8、常量以大写字母和下划线命名(尽量不要以下划线开头)
9、配置参数以小写字母各下划线命名
10、数据库的表和字段采用小写+下划线的命名方式,不能以下划线开头
11、应用类库名应该统一使用app
查看全部 -
开发环境:php>5.4.0 mysql>5.5
mac系统可以安装mamp集成环境
用git方式安装
1、命令:克隆业务逻辑
git clone --depth=1 git@github.com:top-think/think.git think_git
(其中--depth=1表示获取最新版本,最后的 think_git表示在项目下创建这个目录并且克隆的代码放到这个目录里)
2、命令:克隆核心程序(框架文件)
git clone --depth=1 git@github.com:top-think/framework.git thinkphp
composer安装TP5
中文官网:docs.phpcomposer.com
composer --version
命令:
composer create-project --prefer-dist topthink/think think_composer
(最后的 think_composer 是创建目录并且克隆项目到此目录)
安装好之后把网站根目录设置为public目录
查看全部 -
thinkphp5与thinkphp3是无法兼容的
可以使用git或composer安装
查看全部 -
讲解了许多命名规范,听起来还比较简洁;
查看全部 -
1,需要额外安装的组件:PDO、MbString、CURL、PHP
查看全部 -
1,MVC是一种软件设计典范,而不是一种设计模式。
查看全部
举报