工学1号馆

home

« | 返回首页 | »

ThinkPHP5.0快速入门--基础

By Wu Yudong on November 07, 2017

1、TP5.0框架

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。

ThinkPHP5.0.0版本是一个颠覆和重构版本,采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载。

2、检测TP5.0环境

PHP >= 5.4.0

PDO PHP Extension

MBstring PHP Extension

CURL PHP Extension

打开localhost/phpinfo.php即可显示php的版本信息

3、TP5.0的安装

源代码包安装

去TP的官网下载(http://www.thinkphp.cn/)TP5.0.10

http://www.thinkphp.cn/down/1015.html

其他安装方法请查看手册

安装后(或者下载后的压缩文件解压后)可以看到下面的目录结构:

tp5
├─application
应用目录
├─extend 扩展类库目录( 可定义)
├─public 网站对外访问目录
├─runtime 运行时目录( 可定义)
├─vendor 第三方类库目录( Composer
├─thinkphp 框架核心目录
├─build.php 自动生成定义文件( 参考)
├─composer.json Composer定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行工具入口

注意: 如果在linux环境下面的话,需要给 runtime 目录 755 权限。

有几个关键的路径先了解下:

目录 说明 常量
tp5 项目根目录 ROOT_PATH
tp5/application 应用目录 APP_PATH
tp5/thinkphp 框架核心目录 THINK_PATH
tp5/extend 应用扩展目录 EXTEND_PATH
tp5/vendor Composer扩展目录 VENDOR_PATH

核心框架目录的结构如下:

├─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          框架引导文件

4、入口文件

ThinkPHP5.0版本的默认自带的入口文件位于public/index.php(实际部署的时候public目录为你的应用对外访问目录),入口文件内容如下:

// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

这段代码的作用就是定义应用目录APP_PATH和加载ThinkPHP框架的入口文件,这是所有基于ThinkPHP开发应用的第一步。

我们可以在浏览器中访问入口文件

http://localhost/tp5/public/

官方提供的默认应用的实际目录结构和说明如下:

├─application 应用目录( 可设置)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块公共文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ └─view 视图目录
│ │
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共文件
│ ├─config.php 应用配置文件
│ ├─tags.php 应用行为扩展定义文件
│ ├─database.php 数据库配置文件
│ └─route.php 路由配置文件

5.0版本采用模块化的设计架构,默认的应用目录下面只有一个 index 模块目录,如果我要添加新的模块可
以使用控制台命令来生成。
切换到命令行模式下,进入到应用根目录并执行如下指令:

php think build --module demo

├─demo
│ ├─controller 控制器目录
│ ├─model 模型目录
│ ├─view 视图目录
│ ├─config.php 模块配置文件
│ └─common.php 模块公共文件

同时也会生成一个默认的 Index 控制器文件。

5、控制器

我们找到 index 模块的 Index 控制器(文件位于 application/index/controller/Index.php 注意大小写),我们把 Index 控制器类的 index 方法修改为 Hello,World

<?php
namespace app\index\controller;

class Index
{
    public function index()
    {
    	return "Hello Wuyudong!";
    }
}

提示:根据类的命名空间可以快速定位文件位置,在 ThinkPHP5.0 的规范里面,命名空间其实对应了文件的所
在目录,
app 命名空间通常代表了文件的起始目录为 application ,而 think 命名空间则代表了文件的其实目录为 thinkphp/library/think ,后面的命名空间则表示从起始目录开始的子目录。

控制器类可以包括多个操作方法,但如果你的操作方法是 protected 或者 private 类型的话,是无法直
接通过URL访问到该操作的,也就是说只有
public 类型的操作才是可以通过URL访问的。

6、视图
现在我们在给控制器添加视图文件功能,我们在 application/index 目录下面创建一个 view 目录,然
后添加模板文件
view/index/hello.html ,我们添加模板内容如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>hello,{$name}!

</body>
</html>

要输出视图,必须在控制器方法中进行模板渲染输出操作,现在修改控制器类如下:

<?php
namespace app\index\controller;

use think\Controller;

class Index extends Controller
{
    public function index()
    {
    	return "Hello Wuyudong!";
    }
    public function hello($name='thinkphp'){
    	$this->assign('name', $name);
    	return $this->fetch();
    }
}

注意, Index 控制器类继承了 think\Controller 类之后,我们可以直接使用封装好的 assign fetch 方法进行模板变量赋值和渲染输出。
fetch 方法中我们没有指定任何模板,所以按照系统默认的规则(视图目录/控制器/操作方法)输出了view/index/hello.html 模板文件。
接下来,我们在浏览器访问
http://tp5.com/index.php/index/index/hello

7、读取数据

在开始之前,我们首先在数据库 demo 中创建一个 think_data 数据表(这里以 mysql 数据库为例) :

CREATE TABLE IF NOT EXISTS `think_data`(
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`data` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
INSERT INTO `think_data`(`id`,`data`) VALUES
(1,'thinkphp'),
(2,'php'),
(3,'framework');

首先我们需要在应用的数据库配置文件 application/database.php 中添加数据库的连接信息如下:

return [
    // 数据库类型
    'type'            => 'mysql',
    // 服务器地址
    'hostname'        => '127.0.0.1',
    // 数据库名
    'database'        => 'demo',
    // 用户名
    'username'        => 'root',
    // 密码
    'password'        => '',
    // 端口
    'hostport'        => '3306',
    // 连接dsn
    'dsn'             => '',
    // 数据库连接参数
    'params'          => [],
    // 数据库编码默认采用utf8
    'charset'         => 'utf8',
    // 数据库表前缀
    'prefix'          => 'think_',
    // 数据库调试模式
    'debug'           => true,

接下来,我们修改下控制器方法,添加读取数据的代码:

use think\Controller;
use think\Db;

class Index extends Controller
{
    public function index()
    {
    	$data=Db::name('data')->find();
    	$this->assign('result',$data);
    	return $this->fetch();
    }
    public function hello($name='thinkphp'){
    	$this->assign('name', $name);
    	return $this->fetch();
    }
}

定义好控制器后,我们修改模板文件,添加数据输出标签如下:

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
{$result.id}--{$result.data}

</body>
</html>

 

如果文章对您有帮助,欢迎点击下方按钮打赏作者

Comments

No comments yet.
To verify that you are human, please fill in "七"(required)