ThinkPHP实验一 入门案例

实验名称: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.0Git方式下载,如果需要更新核心框架的时候,只需要切换到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!

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类之后,我们可以直接使用封装好的assignfetch方法进行模板变量赋值和渲染输出。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、如果您觉得该文档有用,或者您想成为会员享受“豆豆咨询”服务,请提供以下微信赞助:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章