ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] TP入门 === 核心主题 [TOC] -- * ThinkPHP 5版本带来了哪些新特性,哪些变化? * TP 5为API和多应用端开发带来了哪些便利? * 实战ThinkPHP 5的数据库操作 一、简单介绍 -- 1、关于Thinkphp ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体验和易用性,并且拥有众多的原创功能和特性,为WEB应用和API开发提供了强有力的支持。 2、关于MVC(Model-View-Controller)(模式-视图-控制器) ![](https://box.kancloud.cn/2016-07-17_578ae9427ace5.png) 3、TP 5为API和多应用端开发带来了哪些便利? ThinkPHP5针对API开发做了很多的优化,并且不依赖原来的API模式扩展。 (1)数据输出方面 控制器输出采用Response类统一处理,而不是直接在控制器中进行输出,通过设置default_return_type或者动态设置不同类型的Response输出就可以自动进行数据转换处理,一般来说,你只需要在控制器中返回字符串或者数组即可 (2)错误调试方面 由于API开发不方便在客户端进行开发调试,但ThinkPHP5的Trace调试功能支持Socket在内的方式,可以实现远程的开发调试。 安装chrome浏览器插件后即可进行远程调试,详细参考调试部分。 4、ThinkPHP5的新特性 -- ThinkPHP5.0版本的优势在于: (1)更灵活的路由; (2)更强大的查询语法; (3)增强的模型功能; (4)API开发友好; (5)改进的异常机制; (6)远程调试支持; (7)单元测试支持; (8)命令行工具; (9)Composer支持完善; 二、环境配置 -- [upupw官网](http://www.upupw.net/)下载upupw 1.版本 [Tinkphp官网](http://www.thinkphp.cn/)下载ThinkPHP 5.0 RC4版本 1、upupw环境的基本介绍 Apache版UPUPW面板详细介绍 ![](https://box.kancloud.cn/2016-07-17_578ae942a0a22.png) 1-添加虚拟主机 即除了默认的主机以外,设置其它独立的主机并可绑定N个域名,设置网站的路径等。 2-删除虚拟主机 即删除已设立的一个或多个虚拟主机(此设置只是删除主机配置及绑定的域名,对网站程序没有影响) 3-修改虚拟主机 即对已经添加的虚拟主机进行域名绑定的添加与删除等操作。 4-检测端口状态 此功能为检测本机端口使用情况而准备的,可以在启动全部服务之前先按4键进行端口探测,看看80端口和3306端口有没有被占用,如被占用可关闭端口占用程序或者修改Apache和MySQL端口后启动。 s1开启全部服务 s5关闭所有服务 ................. 2、Thinkphp目录介绍 project 应用部署目录 ├─application 应用目录(可设置) │ ├─common 公共模块目录(可更改) │ ├─index 模块目录(可更改) │ │ ├─config.php 模块配置文件 │ │ ├─common.php 模块函数文件 │ │ ├─controller 控制器目录 │ │ ├─model 模型目录 │ │ ├─view 视图目录 │ │ └─ ... 更多类库目录 │ ├─command.php 命令行工具配置文件 │ ├─common.php 应用公共(函数)文件 │ ├─config.php 应用(公共)配置文件 │ ├─database.php 数据库配置文件 │ └─route.php 路由配置文件 ├─extend 扩展类库目录(可定义) ├─public WEB 部署目录(对外访问目录) │ ├─static 静态资源存放目录(css,js,image) │ ├─index.php 应用入口文件 │ ├─router.php 快速测试文件 │ └─.htaccess 用于 apache 的重写 ├─runtime 应用的运行时目录(可写,可设置) ├─vendor 第三方类库目录(Composer) ├─thinkphp 框架系统目录 │ ├─lang 语言包目录 │ ├─library 框架核心类库目录 │ │ ├─think Think 类库包目录 │ │ └─traits 系统 Traits 目录 │ ├─tpl 系统模板目录 │ ├─.htaccess 用于 apache 的重写 │ ├─.travis.yml CI 定义文件 │ ├─base.php 基础定义文件 │ ├─composer.json composer 定义文件 │ ├─console.php 控制台入口文件 │ ├─convention.php 惯例配置文件 │ ├─helper.php 助手函数文件(可选) │ ├─LICENSE.txt 授权说明文件 │ ├─phpunit.xml 单元测试配置文件 │ ├─README.md README 文件 │ └─start.php 框架引导文件 ├─build.php 自动生成定义文件(参考) ├─composer.json composer 定义文件 ├─LICENSE.txt 授权说明文件 ├─README.md README 文件 ├─think 命令行入口文件 三、实际操作 -- 1、入口文件 入口文件位于public/index.php 在浏览器中访问入口文件 http://localhost/(项目名称)/public/ 2、控制器 -- index模块的Index控制器(文件位于application/index/controller/Index.php) http://localhost/项目名称/public/ 可以为操作方法定义参数 例子: <?php namespace app\index\controller; class Index { public function index($name = 'tangmei') { return 'Hello,' . $name . '!'; } } 带name参数访问入口文件地址(例如 http://localhost/项目名称/public/index.php/index/index?name=tangmei)的时候,在浏览器中可 以看到如下输出:Hello,tangmei! 注意: 控制器类可以包括多个操作方法,但如果你的操作方法是protected或者private类型的话,是无法直接通过URL访问到该操作的。 3、视图: 给控制器添加视图文件功能,在application/index目录下面创建一个view目录,然后添加模板文件view/index/hello.html <html> <head> <title>hello {$name}</title> </head> <body> hello, {$name}! </body> </html> 要输出视图,必须在控制器方法中进行模板渲染输出操作 ~~~ <?php namespace app\index\controller; use think\Controller; class Index extends Controller { public function hello($name = 'thinkphp') { $this->assign('name', $name); return $this->fetch(); } } ~~~ http://127.0.0.1/项目名称/public/index.php/index/index/hello 4、简单数据库操作 读取数据 -- 数据库: `tang` -- -- -------------------------------------------------------- -- -- 表的结构 `tang` -- ~~~ CREATE TABLE IF NOT EXISTS `tang` ( `id` int(6) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(45) NOT NULL, `content` varchar(44) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; ~~~ 转存表中的数据 `tang` ~~~ INSERT INTO `tang` (`id`, `title`, `content`) VALUES (1, 'tang', 'ffafwaf'); ~~~ 数据库配置文件application/database.php中添加数据库的连接信息。 return [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'tang', // 用户名 'username' => 'root', // 密码 'password' => 'root', // 端口 'hostport' => '', // 连接dsn 'dsn' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => true, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'deploy' => 0, // 数据库读写是否分离 主从式有效 'rw_separate' => false, // 读写分离后 主服务器数量 'master_num' => 1, // 指定从服务器序号 'slave_no' => '', // 是否严格检查字段是否存在 'fields_strict' => true, // 数据集返回类型 array 数组 collection Collection对象 'resultset_type' => 'array', // 是否自动写入时间戳字段 'auto_timestamp' => false, // 是否需要进行SQL性能分析 'sql_explain' => false, ]; 添加读取数据的代码 ~~~ <?php namespace app\index\controller; use think\Controller; use think\Db; class Index extends Controller { public function hello() { $data = Db::name('tang')->find(); $this->assign('result', $data); return $this->fetch(); } } ~~~ 修改模板文件,添加数据输出标签 ~~~ <html> <head> <title>hello</title> </head> <body> {$result.id}--{$result.title} </body> </html> ~~~ 数据库 1、连接数据库(修改dababase.php文件) ~~~ return [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'tang', // 用户名 'username' => 'root', // 密码 'password' => 'root', // 端口 'hostport' => '', // 连接dsn 'dsn' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => true, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'deploy' => 0, // 数据库读写是否分离 主从式有效 'rw_separate' => false, // 读写分离后 主服务器数量 'master_num' => 1, // 指定从服务器序号 'slave_no' => '', // 是否严格检查字段是否存在 'fields_strict' => true, // 数据集返回类型 array 数组 collection Collection对象 'resultset_type' => 'array', // 是否自动写入时间戳字段 'auto_timestamp' => false, // 是否需要进行SQL性能分析 'sql_explain' => false, ]; ~~~ 1、插入记录 ~~~ <?php namespace app\index\controller; use think\Db; class Index { public function index() { $re_add = Db::execute('insert into tang (id, title ,content) values (3, "thinkphp","ggjjbj")'); if($re_add) { echo "插入成功"; } else { echo "插入失败"; } } } ~~~ 访问路径:http://127.0.0.1/项目名称/public/index.php/index/index 2、查询数据 ~~~ <?php namespace app\index\controller; use think\Db; class Index { public function index() { $result = Db::query('select * from tang'); dump($result); } } ?> ~~~ 3、更改数据 ~~~ <?php namespace app\index\controller; use think\Db; class Index { public function index() { $re_update=Db::execute('update tang set title="geyue" where id=3'); dump($re_update); } } ?> ~~~ 4、删除数据 ~~~ <?php namespace app\index\controller; use think\Db; class Index { public function index() { $re_delete=Db::execute('delete from tang where id = 2 '); dump($re_delete); } } ?> ~~~