官方給出的[使用Composer安裝](http://www.hmoore.net/manual/thinkphp6_0/1037481)是比較正統的方法,也是每個Phper都應該掌握的技能。 在XAMPP的支持下,使用Composer來安裝tp6也同樣非常簡單。
>[warning] 本節中將介紹一些命令,我們強烈建議你將這些命令直接粘貼過去,而不是照著敲一遍。
# Hello ThinkPHP
TP官方給出了使用Composer的安裝方式,雖然該方法對初學者而言并不是最簡單的,但卻是每個開發者都需要掌握的。
Composer就相當于電腦上的軟件管家、手機中的應用市場。在沒有Composer之前,我們需要手動的找到相關軟件,然后下載安裝。有了Composer后,一切都變得非常的簡單、正規、安全。
其中不只PHP有Composer來管理自己的軟件,像JAVA、Python、JavaScript(node)等也都有專門管理軟件的軟件,在編程語言中,我們通常把這個管理軟件的軟件叫做包管理器。所以用官方的話來說:Composer是一款服務于PHP的包管理器。
TP呢,則是這個包管理器管理下的一個包。我們可以在Composer包管理器的支持下,快的完成TP這個軟件(包)的安裝、更新等操作。由于各個操作系統下的操作會略有不同,請按自己使用的操作系統選擇繼續閱讀。
windows系統請點擊[windows](./2107019)繼續學習。
macos系統請點[macos](./2107020)繼續學習。
ubuntu系統請點擊[ubuntu](./2107021)繼續學習。
教程中在使用Composer下載TP時,我們指定了YP的版本為6.0.6,這完全是為了教學而設定的,統一版本將自動規避一些因小版本不同而帶來的不必要的問題。在實際開發過程中,推薦大家使用最新的版本,即將以下命令:
```bash
composer create-project topthink/think=6.0.6 tp6
```
修改為:
```bash
composer create-project topthink/think tp6
```
當然了,在實際開發中如果你對某個版本情有獨鐘,也可以像教程一樣來指定相關的版本。你可以在[https://packagist.org/packages/topthink/think](https://packagist.org/packages/topthink/think)獲取所有thinkphp的信息。
## 網絡問題
對于中國的程序員而言,網絡的確是個問題。在下載Composer的過程中,如果你真的實實在在的試了千百遍依舊下載失敗,那么你也可以這樣做:
打開團隊的文件服務器:
[http://nas.yunzhi.club:5010/sharing/dTeYhY2xt](http://nas.yunzhi.club:5010/sharing/dTeYhY2xt)(密碼: yunzhi.club)
下載thinkphp6.0.6.zip,并將其解壓至對應xampp的htdocs文件夾中,文件夾名稱命名為:tp6。目錄層級大體如下:`xxxx/htdocs/tp6/public/index.php`。
當然這只是臨時的解決方案,正規的方法還是需要Composer,而且本教程的后續章節還會涉及到使用Composer安裝導入、導出excel的第三方庫,界時同樣需要Composer。
# 發生了什么
為了更加清楚訪問`http://localhost/tp6/public/index.php`時到底發生了什么,我們本節進一步做展開說明。
其實計算機的世界無非是在解決數據傳輸、數據處理、數據存儲的幾大基本問題。當我們使用瀏覽器來訪問特定的地址時,我們當前的計算機將根據我們指定的訪問地址進行數據的傳輸。數據傳輸到服務器后,服務器使用特定的程序來處理請求的數據,最后再將處理的結果返回給請求的計算機。
那么在使用瀏覽器訪問`http://localhost/tp6/public/index.php`時,具體發生了什么呢?要弄明白這個問題,我們首先由`http://localhost/tp6/public/index.php`入手:
## URL
`http://localhost/tp6/public/index.php`通常被稱為url(Universal Resource Locator 或 Uniform Resource Locator),代表在全球范圍內唯一的網頁資源。比如我們在網上獲取好的資源時,可以通過分享url將此資源分享給其它用戶。簡單來說,它是個網址,而每個網頁都有一個對應的網址。
這個url由三部分組成:協議類型、主機名、路徑名及文件名。比如`http://localhost/tp6/public/index.php`的協議類型是`http`,主機名是`localhost`,而路徑文件名是`tp6/public/index.php`。
協議類型常見有`http`,該協議也是網頁請求的默認協議,比如我們說打開`www.mengyunzhi.com`,實際上相當于是打開`http://www.mengyunzhi.com`; 除此以外還有更安全的`https`協議,用于文件傳輸的ftp協議等。
主機名簡單來說就是電腦的名字,每臺電腦都有一個名字,該名字往往是我們安裝操作系統隨意指定的。這在局域網中電腦數很少的情況下是沒有任何問題的,但如果將很多臺電腦放到一個互相能看到的大網絡中,由于起名的隨意性會造成**重名**的問題。為了解決這個問題,國際上有個專門的組織來負責計算機在網絡上起名的問題,而計算機在網絡上的名字便是域名。之所以稱為域名,是由于相對于名字只能給一臺計算機而言,域名是可以給一群計算機的。比如`com`是個域名,在`com`這個域名下還存在`baidu.com`、`taobao.com`、`jd.com`域名,在`baidu.com`還可以存在`www.baidu.com`、`#baidu.com`域名等。由于這種特性,我們有時候也稱`com`為根域名、頂級域名、一級域名,稱`baid.com`為次級域名、二級域名。
我們可以使用身份證信息來與主機名域名體系做參照。主機名 = 身份上的名字,域名 = 身份證號碼。主機名用于某個局域網,在某個我們自己維護的局域網上是唯一的,就像我們這個小家族中只有一個潘杰;而域名用于互聯網,在整個網絡上是維一的,就像13022519xxxxxxxxxx這個號碼在全國范圍內只有一個一樣。而身份證號的前兩位代表省市,13代表河北省,這就像域名上的根域名;0225為區縣代碼,代表樂亭縣,這就好像是域名上的二級域名。
路徑文件名相對很好理解了,就是訪問某臺計算機網站資源的具體位置。互聯網的早期,路徑文件名就是真實的物理位置,比如我們當前的`tp6/public/index.php`,就是指提供http服務應用根目錄下的`tp6/public/index.php`文件。現在由于服務器可以模擬這些位置,所以路徑也可能是虛擬位置。比如我們可以訪問`tp6/public/index.html`來查看ThinkPHP的初始化內容,但服務器的htdocs文件夾中,并不存在`tp6/public/index.html`文件。
>[info] 除此以外,url還存在端口、查詢參數、錨點信息,在此不做闡述。
## 域名與IP
計算機網絡數據傳輸和現實生活的快遞原理相同,核心解決的都是物質傳遞的問題。在郵快遞時,我們除了要提供收件人的名稱以外,還需要提供提所在的具體具體。比如我的收件地址為:天津職業技術師范大學 天津市津南區大沽南路1310號
在這里好記的`天津職業技術師范大學`便是域名,而較難記的`天津市津南區大沽南路1310號`便是ip地址。與實際的快遞略有差距的是,在計算機進行信息傳遞時,只需要給出好記的域名,而較難記的IP地址將交由計算機自動完成。在計算機網絡中,有個專門來將域名轉換為IP地址的服務,叫做DNS。
在計算機中,我們可以在shell中輸入`ping www.baidu.com`來查看`www.baidu.com`這個域名對應的IP地址。
## 訪問過程

當本機的瀏覽器訪問`http://localhost/tp6/public/index.php`時,計算機首先獲取主機名(域名)localhost,并借助dns服務將其轉換為ip地址。每臺計算機都維護著一條這樣的DNS信息`127.0.0.1 localhost`,表示主機名(域名)`localhost`對應的IP地址為`127.0.0.1`,而`127.0.0.1`在網絡中有個特殊的含意:本機。
接著計算機將請求信息發送到`127.0.0.1`也就是本機提供`http`服務的軟件apache。
apache獲取到請求信息后,獲取該請求信息中的主機名(域名)以及路徑文件名`/tp6/public/index.php`,再根據內置的規則調用`tp6/public/index.php`。
調用完成后將調用返回的結果回傳給請求者。
ThinkPHP規定所有的請求都僅能交給`public/index.php`來處理,我們將`index.php`稱為入口文件,我們把這種只能通過某個文件來訪問的應用稱為`單入口應用`。
## 查看文件
后續的開發我們將在tp6文件夾中進行,那么如何查看該文件夾的內容呢?
### windows
找開d:/xampp/htdocs/tp6文件夾,即為我們后續需要操作的thinkphp的代碼。
### macos
普通模式下使用finder打開/Applications/XAMPP/htdocs/tp6文件夾。
虛擬機模式按以下步驟操作:

打開xampp后來到Volumes選項卡,然后點擊Mount。此操作將使我們可以在本機中查看虛擬機的`opt/lampp`文件夾。

點擊Explore在本機預覽虛擬機`opt/lampp`文件夾

所以此時`htdocs`文件夾即為虛擬機中apache的根目錄:`/opt/lampp/htdocs`文件夾。而tp6文件夾則是我們上節中使用composer下載的`/opt/lampp/htdocs/tp6`文件夾。此時訪問`http://192.168.64.2/tp6/public/index.php`則相當于訪問了如下文件:

### ubuntu
使用文件查看器查看/opt/lampp/htdocs/tp6文件夾。
# 本節作業
1. 除了composer外,幾乎所有的語言都有包管理器,請試著列出2-3個。
2. 將手機與電腦連接到同一個路由器上,關閉電腦的防火墻并獲取電腦局域網的IP地址,嘗試使用手機訪問:`http://電腦局域網IP/tp/public/index.php`,看是否能成功顯示歡迎頁面。
- 序言
- 第一章 Hello World
- 1.1 運行環境
- 1.1.1 windows
- 1.1.2 macos
- 1.1.3 ubuntu
- 1.2 Hello ThinkPHP
- 1.2.1 windows
- 1.2.2 macos
- 1.2.3 ubuntu
- 2.3 Hello World
- 第二章 教師管理
- 2.1 數據庫初始化
- 2.2 CRUD之 R 讀取數據
- 1 數據流
- 2.2.2 連接數據庫
- 2.2.3 直接讀取數據之DB
- 2.2.4 間接讀取數據之模型
- 2.2.5 顯示數據之原始文案
- 2.2.6 單引號與雙引號
- 2.2.7 顯示數據之視圖
- 2.2.8 模板語法
- 2.2.9 使用bootstrap美化界面
- 2.3 CRUD之 C 增加數據
- 2.3.1 MCA默認路由