##一、實驗目的
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打開。