实验名称:ThinkPHP实验一 ThinkPHP环境安装及简单例子
实验目的:ThinkPHP快速入门,理解PHP框架
实验步骤:
安装ThinkPHP前提条件:已经安装了PHP开发环境,如AppServe或者WAMPServe等。
一、安装ThinkPHP环境(win10)
有以下两种方式安装:第一种,采用Composer安装;第二种,采用Git下载和更新。推荐使用Composer安装。
1、通过Composer安装ThinkPHP
1)安装Composer:ThinkPHP5.0
支持使用Composer
安装和更新,在 Windows10
中,你需要下载并运行 Composer-Setup.exe。根据提示,一步步安装即可。
2)验证Composer安装:安装成功后,重新启动,打开cmd,输入composer --version,查看Composer的版本号。如果出现下面的提示,那么软件安装成功。Composer version **************。
3)安装ThinkPHP项目:在命令行下面,切换到你的web根目录下面并执行下面的命令:
composer create-project topthink/think tp5 --prefer-dist
则在tp5目录下创建项目文件。如果发生错误,请参看后续常见错误
4)设置国内镜像:如果国外的网站连接速度很慢,安装的时间可能会比较长,建议通过下面的方式使用国内镜像。
composer config -g repo.packagist composer https://packagist.phpcomposer.com
2、通过Git安装ThinkPHP
1)Git下载和更新:ThinkPHP
使用Git
版本库进行更新迭代,如果你不太了解Composer
或者觉得Composer
太慢,也可以使用git
版本库安装和更新,ThinkPHP5.0
拆分为多个仓库,下面是github
(主要维护仓库)仓库地址:[
Github ]
- 应用项目:
https://github.com/top-think/think
- 核心框架:
https://github.com/top-think/framework
提示:
之所以设计为应用和核心仓库分离,是为了支持
Composer
单独更新核心框架。
2)首先克隆下载应用项目仓库
git clone https://github.com/top-think/think tp5
3)然后切换到tp5
目录下面,再克隆核心框架仓库:
git clone https://github.com/top-think/framework thinkphp
4)两个仓库克隆完成后,就完成了ThinkPHP5.0
的Git
方式下载,如果需要更新核心框架的时候,只需要切换到thinkphp核心目录下面,然后执行:
git pull https://github.com/top-think/framework
3、验证目录结构
安装ThinkPHP成功后,目录结构应为如下结构:
tp5
├─application 应用目录
├─extend 扩展类库目录(可定义)
├─public 网站对外访问目录
├─runtime 运行时目录(可定义)
├─vendor 第三方类库目录(Composer)
├─thinkphp 框架核心目录
├─build.php 自动生成定义文件(参考)
├─composer.json Composer定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行工具入口
几个关键的路径:
目录 | 说明 | 常量 |
---|---|---|
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 框架引导文件
二、创建ThinkPHP的一个简单网页
1、需要Apache+PHP+MySQL环境
在开始之前,你需要一个Web
服务器和PHP5.4+
运行环境,推荐使用集成开发环境WAMPServer(Windows系统下集成Apache、PHP和MySQL的服务套件)来使用ThinkPHP
进行本地开发和测试,最新版本的WAMP在这里下载。
2、编辑应用程序入口文件index.php
a)编辑index.php文件:
ThinkPHP
默认自带的入口文件位于public/index.php
(实际部署的时候public
目录为你的应用对外访问目录),入口文件内容如下:
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
这段代码的作用就是定义应用目录APP_PATH
和加载ThinkPHP
框架的入口文件,这是所有基于ThinkPHP
开发应用的第一步。
b)测试入口文件:我们可以在浏览器中访问入口文件,运行后我们会看到欢迎页面。
http://localhost/tp5/public/
c)其他说明:官方提供的默认应用的实际目录结构和说明如下:
├─application 应用目录(可设置)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块公共文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ └─view 视图目录
│ │
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共文件
│ ├─config.php 应用配置文件
│ ├─tags.php 应用行为扩展定义文件
│ ├─database.php 数据库配置文件
│ └─route.php 路由配置文件
3、添加模块demo增加demo模块:5.0版本采用模块化的设计架构,默认的应用目录下面只有一个index
模块目录,如果我要添加新的模块可以使用控制台命令来生成。切换到命令行模式下,进入到应用根目录,例如tp5,执行如下指令:
php
think build --module demo
就会生成一个默认的demo模块,包括如下目录结构:
├─demo
│
├─controller 控制器目录
│
├─model 模型目录
│
├─view 视图目录
│
├─config.php 模块配置文件
│
└─common.php 模块公共文件
同时也会生成一个默认的Index
控制器文件,例如C:\AppServ\www\tp5\application\demo\controller\Index.php。
注意:这只是一个初始默认的目录结构,在实际的开发过程中可能需要创建更多的目录和文件。
4、设置调试模式
开发完成后,我们实际进行项目部署的时候,修改应用配置文件(application/config.php
)中的app_debug
配置参数:
//
关闭调试模式
'app_debug'
=> false,
//
打开调试模式
'app_debug' =>
true,
5、编写控制器Index.php
我们找到index
模块的Index
控制器(文件位于application/index/controller/Index.php
注意大小写),我们修改不同的方法如下。
<?php namespace app\index\controller; use think\Controller; class Index extends Controller// extends Base { public function index($name = 'World') { return 'Hello,'.$name.'!'; } public function hello($name = 'thinkphp') { $this->assign('name',$name); return $this->fetch();//'Hello, thinkphp!'; } public function test() { return '这是一个测试方法!'; } }
当我们带name
参数访问入口文件地址(例如 http://localhost/tp5/public/?name=ThinkPHP
)的时候,在浏览器中可以看到如下输出:
Hello,ThinkPHP!
现在我们在给控制器添加视图文件功能,我们在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();
}
}
Index
控制器类继承了 think\Controller
类之后,我们可以直接使用封装好的assign
和fetch
方法进行模板变量赋值和渲染输出。fetch
方法中我们没有指定任何模板,所以按照系统默认的规则(视图目录/控制器/操作方法)输出了view/index/hello.html
模板文件。
接下来,我们在浏览器访问
http://127.0.0.1/tp5/public/index.php/index/index/hello?name=thinkphp
输出:hello,thinkphp!
7、从数据库中读取数据
a)首先在数据库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');
b)在应用的数据库配置文件application/database.php
中添加数据库的连接信息如下:
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'demo',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'think_',
// 数据库调试模式
'debug' => true,
];
c)修改控制器方法,添加读取数据的代码:
<?php
namespace app\index\controller;
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();
}
}
d)设置好控制器后,修改模板文件hello.html,添加数据输出标签如下:
<html>
<head>
<title></title>
</head>
<body>
{$result.id}--{$result.data}
</body>
</html>
浏览器输入http://localhost/tp5/index.php/index/index/hello。输出为:1--thinkphp。
三、常见错误
1、在安装Composer后,安装ThinkPHP可能会出现以下问题:
The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl exension, you can disable this error, at your own risk, by setting the 'disable-tls' option to true.
原因:提示Composer采用SSL连接,需要外挂OpenSSL插件。
要消除该异常,通常采用启用OpenSSL来解决,具体如下所示。
a)设置PHP插件目录:安装了PHP后,安装目录(类似C:\AppServ\php5)中的php.ini,用作PHP的默认配置文件。通过修改配置文件来启用OpenSSL插件。
编辑php.ini文件,首先,定位并设置PHP插件目录:
extension_dir = "C:\AppServ\php5\ext"
删除extension_dir = ""
前面的分号,配置PHP插件目录为C:\AppServ\php5\ext
。
b)启用OpenSSL插件:定位到extension=php_openssl.dll,并启用OpenSSL插件:
...
;extension=php_mysqli.dll
;extension=php_oci8_12c.dll ; Use with Oracle Database 12c Instant Client
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
...
删除extension=php_openssl.dll
前面的分号,取消注释,从而启用OpenSSL插件。
注意:因为SSL连接需要认证,所以继续下面的步骤之前,需要准备好CA证书(建议把证书保存到C:\AppServ\www\Composer
目录中),可以从https://curl.haxx.se/docs/caextract.html处下载。
c)设置CA证书:定位到
;openssl.cafile=
和上面一样,删去分号,取消注释,设置CA证书为openssl.cafile= C:\AppServ\www\Composer\cacert.pem
。
d)重新在命令行窗口中打开项目的根目录,执行以下命令
composer create-project topthink/think tp5 --prefer-dist
,等待几分钟,就可以添加ThinkPHP项目。
2、在控制器中输入中文,但浏览器输出中文乱码:
这是由于编码不同而产生的问题。解决方法如下:
a)我们在windows10下,进入notepad++->首选项->新建->编码->UTF-8(无BOM),格式->Windows;
b)notepad++新建文件,即以UTF-8编码保存文件;
c)然后复制黏贴代码,修改代码,保存代码。
注意的是:不要用记事本打开;用notepad++保存之后,可以用Eclipse Php Neon打开。
四、技术服务:
1、如果有疑问或者需要帮助,请加入群(群名称:豆豆咨询,群号:625686304):
2、如果您觉得该文档有用,或者您想成为会员享受“豆豆咨询”服务,请提供以下微信赞助: