##一、实验目的   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打开。