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、如果您覺得該文檔有用,或者您想成爲會員享受“豆豆諮詢”服務,請提供以下微信贊助:


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