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