##一、实验目的
1、ThinkPHP5快速入门,理解PHP框架
##二、实验内容
1、创建简单网页。
##三、实验步骤及过程
###1、创建TP5项目
我们通过Composer安装ThinkPHP
1)安装Composer:ThinkPHP5.0支持使用Composer安装和更新,在Windows8中,你需要下载并运行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、创建TP5简单网页
1)编辑index.php文件:ThinkPHP默认自带的入口文件位于public/index.php(实际部署的时候public目录为你的应用对外访问目录),入口文件内容如下:
~~~
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
~~~
这段代码的作用就是定义应用目录APP_PATH和加载ThinkPHP框架的入口文件,这是所有基于ThinkPHP开发应用的第一步。
2)测试入口文件:我们可以在浏览器中输入``http://localhost/tp5/public/``访问入口文件index.php,运行后我们会看到欢迎页面。
3)其他说明:官方提供的默认应用的实际目录结构和说明如下:
~~~
├─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 模块公共文件
~~~
其中,“C:\AppServ\www\tp5\application\demo\controller\Index.php”为默认的Index控制器文件。
注意:这只是一个初始默认的目录结构,在实际的开发过程中可能需要创建更多的目录和文件。
###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/?name=ThinkPHP),可以看到如下输出:
~~~
Hello,ThinkPHP!
~~~
###6、编写视图hello.html
现在我们在给控制器添加视图文件功能,我们在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://localhost/tp5/index.php/index/index/hello”
输出:
~~~
hello,thinkphp!
~~~
###7、从数据库中读取数据
1)首先在数据库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');
~~~
2)在应用的数据库配置文件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,
];
~~~
3)修改控制器方法,添加读取数据的代码:
~~~
<?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();
}
}
~~~
4)设置好控制器后,修改模板文件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来解决,具体如下所示。
1)设置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``。
2)启用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。
3)设置CA证书:定位到``;openssl.cafile= ``。和上面一样,删去分号,取消注释,设置CA证书为``openssl.cafile= C:\AppServ\www\Composer\cacert.pem``。
4)重新在命令行窗口中打开项目的根目录,执行以下命令``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打开。