이 기사에서는 ThinkPHP6.0 시작과 관련된 문제를 주로 정리한 thinkphp에 대한 관련 지식을 제공합니다. ThinkPHP는 무료 오픈 소스이며 빠르고 간단한 객체 지향 경량 PHP 개발 프레임워크입니다. WEB 애플리케이션 개발과 단순화된 엔터프라이즈 애플리케이션 개발에 대해 살펴보겠습니다.
추천 학습: "PHP 비디오 튜토리얼"
ThinkPHP는 민첩성을 위한 무료 오픈 소스, 빠르고 간단한 경량 PHP 개발 프레임워크입니다. WEB 애플리케이션을 구축하고 엔터프라이즈 애플리케이션 개발을 단순화합니다. ThinkPHP는 탄생부터 단순하고 실용적인 디자인 원칙을 고수해 왔으며 뛰어난 성능과 최소한의 코드를 유지하면서 사용 편의성에 더욱 중점을 두었습니다. Apache2
오픈 소스 라이센스 계약에 따라 게시한다는 것은 ThinkPHP를 무료로 사용할 수 있으며 ThinkPHP를 기반으로 개발한 응용 프로그램이 오픈 소스가 되거나 상용 제품으로 출시/판매될 수도 있다는 것을 의미합니다.
TP 프레임워크는 가볍고 간단하며 빠르고 민첩한 무료 오픈 소스 PHP 프레임워크입니다
ThinkPHP6.0에는 PHP 버전 7.1 이상이 필요하며 공식 권장 사항은 7.3입니다.
PHP7.1+ 외에도 PDO 데이터베이스 엔진 및 MBstring 문자열 확장을 활성화해야 합니다
공식 웹사이트에서는 소프트웨어 패키지 다운로드를 제공하지 않습니다. 공식적으로는 Composer를 사용하여 다운로드하고 업데이트하는 것을 권장합니다.
Composer 설치 및 사용에 대한 소개는 없습니다.
이후 작곡가의 기본 미러 소스는 해외라서 링크 속도가 느려 설치 시간이 길어질 수 있습니다. 코드는 다음과 같습니다
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
처음으로 또는 새 프레임워크를 설치해야 하는 경우 명령줄 인터페이스에서 스위치를 설치해야 하는 WEB 디렉터리로 이동하여 다음 명령을 실행합니다.
composer create-project topthink/think tp
여기서 "tp"는 루트 디렉터리 이름입니다. 나중에 자주 언급하는 애플리케이션 루트 디렉터리입니다
이미 설치한 경우 애플리케이션 루트 디렉터리로 전환한 후 다음 명령을 실행하여 업데이트하세요
composer update topthink/framework
cmd 명령줄에 프로젝트 디렉터리를 입력하여
php think run
브라우저에 입력하세요: http://127.0.0.1:8000 또는 http://localhost:8000 그러면 환영 인터페이스가 표시됩니다
만약 80 포트가 비어 있으면 직접 사용할 수도 있습니다.
php think run -p 80
그런 다음 http://localhost/를 사용하여 직접 액세스할 수 있습니다. 이때 브라우저의 기본 액세스 파일은 애플리케이션 루트 디렉터리/app/controller입니다. /index.php 컨트롤러의 인덱스 메소드이며, http://localhost/의 실제 경로는 http://localhost/index.php/index/index 입니다. (구체적인 이유는 여기서 자세히 설명하지 않으나 나중에 다루겠습니다. )
물론 이제 localhost를 액세스용 로컬 도메인 이름으로 구성할 수 있습니다. 이에 대해서는 여기서 설명하지 않습니다. 3. tp.com을 예로 들어보겠습니다. 인덱스 컨트롤러의 인덱스 작업에 액세스합니다.
http: //tp.com 기본 항목 파일, 기본 컨트롤러 및 기본 방법
http://tp.com/index.php ~ 기본 컨트롤러
http://tp의 기본 방법인 index.php 항목 파일을 지정합니다. com/index.php/ index 인덱스 컨트롤러의 기본 방식인 index.php 항목 파일을 지정하세요
http://tp.com/index.php/index/index index.php 항목 파일인 인덱스 방식을 지정하세요 의 인덱스 컨트롤러
four . 개발 사양 规 개발 사양은 공식 설명서를 참조하세요
5. 디렉터리 구조디렉터리 구조는 직접 참조할 필요가 없습니다. 매뉴얼의 공식 문서
在项目的开发阶段,我们建议开启框架的调试模式
当调试模式开启后,会牺牲一部分执行效率,但能大大提高我们的 开发排错能力
当部署生产环境时,我们再关闭调试模式即可
默认安装的tp6.0框架默认不开启调试模式,这时我们可以在浏览器输入不存在的控制器或错误的地址进行验证
表示调试未开启
通过命令行安装的 TP6.0,会自动在根目录生成一个.example.env 文件,即环境变量示例文件,我们只要把这个文件更名为.env (通常复制一份更名即可), 即可生效,同时开启调试模式
//环境变量示例文件 APP_DEBUG = true [APP] DEFAULT_TIMEZONE = Asia/Shanghai [DATABASE] TYPE = mysql HOSTNAME = 127.0.0.1 DATABASE = test USERNAME = username PASSWORD = password HOSTPORT = 3306 CHARSET = utf8 DEBUG = true [LANG] default_lang = zh-cn
不难看出文件APP_DEBUG = true打开调试模式,若要关闭调试模式将true改为false,另外还有应用配置,数据库和语言设置,当然你也可以配置更多内容
现在我们在刷新刚才的页面,会提示控制器不存在,并且右下角会出现 Trace 调试小图标,说明调试开启了
开启调试模式有什么用:
a. 记录系统运行流程的执行过程
b. 展示错误和调试信息,并开启日志记录
c. 模版修改可以及时生效 ( 不会被缓存干扰 )
d. 启动右下角的 Trace 调试功能,更加强大
e. 发生异常时,也会显示异常信息
还有一种模式,就是关闭调试的时候,也可以显示简要的错误信息,打开根目录下 config 的 app.php 最后一行设置为true
'show_error_msg' => false,
配置文件有两种形式:一种是采用.env适用于本地开发,另一种就是在根目录下的config目录下,包含整个项目的配置,适用于生产环境
注意:官方明确表示.env文件部署后会被忽略,所以它仅适用于本地开发
配置优先级,如果在本地测试时 .env 优先于 config,从 config 配置中可以看出,它是先读取 .env 的,然后再默认配置一个自己的,而部署环境则忽略.env,只读取config
开开发项目过程中,我们少不了获取配置文件中的属性值,那么我们怎么能获取到这些值呢?接下来我们以获取数据库的用户名为例
对于.env文件。
APP_DEBUG = true [APP] DEFAULT_TIMEZONE = Asia/Shanghai [DATABASE] TYPE = mysql HOSTNAME = 127.0.0.1 DATABASE = test USERNAME = root PASSWORD = 123456 HOSTPORT = 3306 CHARSET = utf8 DEBUG = true [LANG] default_lang = zh-cn
比如要获取[DATABASE]下的USERNAME=root获取方式如下:
use think\facade\Env; return Env::get('database.username'); 我们写一个getEnv发方法获取databases下的username,这个比较简单,直接获取.env文件下的,database下的username
<?php namespace app\controller; use app\BaseController; use think\facade\Env;//引入env类 class Index extends BaseController { public function getEnv(){ return Env::get('database.username'); } }
对于config文件
<?php return [ // 默认使用的数据库连接配置 'default' => env('database.driver', 'mysql'), // 自定义时间查询规则 'time_query_rule' => [], // 自动写入时间戳字段 // true为自动识别类型 false关闭 // 字符串则明确指定时间字段类型 支持 int timestamp datetime date 'auto_timestamp' => true, // 时间字段取出后的默认时间格式 'datetime_format' => 'Y-m-d H:i:s', // 时间字段配置 配置格式:create_time,update_time 'datetime_field' => '', // 数据库连接配置信息 'connections' => [ 'mysql' => [ // 数据库类型 'type' => env('database.type', 'mysql'), // 服务器地址 'hostname' => env('database.hostname', '127.0.0.1'), // 数据库名 'database' => env('database.database', ''), // 用户名 'username' => env('database.username', 'root123'), // 密码 'password' => env('database.password', ''), // 端口 'hostport' => env('database.hostport', '3306'), // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => env('database.charset', 'utf8'), // 数据库表前缀 'prefix' => env('database.prefix', ''), // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'deploy' => 0, // 数据库读写是否分离 主从式有效 'rw_separate' => false, // 读写分离后 主服务器数量 'master_num' => 1, // 指定从服务器序号 'slave_no' => '', // 是否严格检查字段是否存在 'fields_strict' => true, // 是否需要断线重连 'break_reconnect' => false, // 监听SQL 'trigger_sql' => env('app_debug', true), // 开启字段缓存 'fields_cache' => false, ], // 更多的数据库配置信息 ], ];
比如要获取[DATABASE]下的USERNAME=root获取方式如下:
use think\facade\Config;
return Config::get('database.connections.mysql.username');
我们写一个getConfig发方法获取databases下的username,这个就要麻烦一点,这里获取的顺序依次是:
所在配置文件——>数据库连接配置信息——>mysql数据库——>用户名
需要注意的是:由于config配置文件的优先级低于.env,所以,如果当前是处于开发环境,如下代码并不会获取到config目录下database配置文件的用户名,而是获取.env文件的用户名,所以想要获取正确配置则先关闭开发环境
<?php namespace app\controller; use app\BaseController; use think\facade\Env;//引入env类 class Index extends BaseController { public function hello($name = 'ThinkPHP6') { return 'hello,' . $name; } public function getEnv(){ return Env::get('database.username'); } public function getConfig(){ return Config::get('database.connections.mysql.username'); } }
对于上边获取config配置有限读取.env文件的问题,我们可以在获取信息之前先使用has方法判断当前需要获取值是否存在两个文件再决定读取哪一个文件
<?php namespace app\controller; use think\facade\Config; use app\BaseController; use think\facade\Env;//引入env类 class Index extends BaseController { public function getEnv(){ return Env::get('database.username'); } public function getConfig(){ return Config::get('database.connections.mysql.username'); } public function getSite(){ echo Env::has('database.username'); echo Config::has('database.connections.mysql.username'); } }
我们得到的值为字符串用echo输出
推荐学习:《PHP视频教程》
위 내용은 ThinkPHP6.0에 대한 기초 지식 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!