### 1、`PHP` 是什么
>[info] :-: PHP(Hypertext Preprocessor 超文本預處理器) 的簡稱
* PHP是通用的,免費開源的,運行在服務器端的腳本編程語言
* 通用:指跨平臺,如:Windows、Linux、MacOS
* 免費:意味著你不必為PHP花一分錢,哪怕用在商業項目中
* 開源:意味著你可以輕松獲取全部源代碼,并進行定制或擴展
* 服務器端:意味著你必須將它安裝在服務器環境下才可以使用
* 腳本語言:意味著與JS一樣,也是解釋型語言,按編寫順序執行
*****
### 2、`PHP` 能做什么
* 可以快速動態的生成HTML頁面
* 可以返回前端需要的各種類型的數據
* 可以高效安全的處理表單數據
* 可以控制與客戶端的會話( Cookie/Session )
* 可以安全的操作服務器上的文件
* 可以對用戶的行為進行授權控制
* 可以高效安全的操作各種類型的數據庫
* 通過擴展,可以實現加密,壓縮等其他功能
* 可以提供接口數據,包括:小程序、APP、等其他語言
*****
### 3、 學習 `PHP` 需要什么基礎
>[danger] HTML:超文本標記語言
> CSS:層疊樣式表
> JavaScript:前端腳本編程語言
*****
### 4、 `PHP` 文件中有什么
* PHP文件,必須使用 `.php` 為后綴名
* PHP文件在服務器上執行,最終以HTML或字符串格式返回
* PHP文件中除了有PHP代碼外,還可以有:
* HTML代碼
* CSS代碼
* JavaScript代碼
* 純文本
*****
### 5、`PHP` 的優勢
>[danger] PHP 簡單易學,上手快
> PHP 開發效率高,開發成本低
> PHP 執行效率高、安全性好、功能強大
> PHP 支持多種平臺服務器:`Linux` `Windows` `Unix` 服務器數量不受限制
*****
## :-: 二、`PHP` 運行原理
### 1、常用術語
* http :基于請求與響應機制的, 超文本傳輸協議
* html :超文本標記語言
* Apache/Nginx :Web服務器軟件
* php.exe :php解釋器
*****
### 2、主機/客戶端/服務器
* 主機 :本地主機(客戶端), 遠程主機(服務器)
* IP :網絡中的主機標識符, 有數字與字符串二種表示方法
* IP地址與主機名 :如果是本地主機,IP是127.0.0.1,主機名(標識符為):localhost
* 客戶端 :一臺安裝了瀏覽器或者其它可以訪問網站軟件的電腦
* 請求 :客戶端發起的http請求(url請求),例如通過瀏覽器地址欄,或者終端命令
* 客戶端和服務器可以是同一臺電腦,此時,服務器的地址就是 :127.0.0.1或localhost
* 服務器 :一臺安裝了Web軟件的電腦,就是一臺可提供Web訪問的服務器
* 響應 :通過指定的端口80,來響應客戶端發送到過http請求
* 端口 :服務器可以端口對外提供的各種服務,例如http:80, ftp:21,email:25...

*****
### 3、CGI協議/CGI腳本/Zend虛擬機(選讀)
* Web服務器: 默認只能處理靜態請求,如: html,遇到動態請求,如php,jsp...無能為力
* web應用程序: 這些動態請求,例如php,jsp..., 就是傳說中的Web應用程序
* CGI: 通用網關接口, 是web服務器與web應用程序之間通信規范, 沒錯, 與http一樣,也是協議
* CGI腳本: 其實就是 php程序,例如: index.php
* Zend虛擬機: 其實就是php程序的解釋器, 可理解為php.exe,用來執行php程序
*****
### 4、php運行流程
1. 客戶通過瀏覽器發出http請求: index.php, 訪問一個Web應用程序
2. web服務器接受到這個請求,發現是訪問Web應用程序,于是通過CGI協議,轉發給Zend虛擬機處理
3. CGI啟動Zend虛擬機,對php腳本進行解析并執行,執行完畢輸出html,并關閉Zend虛擬機
4. CGI將執行結果返回到web服務器, 并由它返回到客戶端, 最終完成一個完整的http請求響應過程

*****
### 5、提升自己: PHP-CGI 原理(選讀)
每種web應用程序都有對應的CGI,php對應的是: php-cgi,它的執行流程大致如下:
1. 初始化php的各種變量
2. 調用并初始化: Zend虛擬機
3. 加載并解析: php.ini
4. 激活: Zend
4.1 Zend加載php程序,做詞法/語法分析
4.2 編譯生成:opcode,并執行
4.3 輸出結果
4.4 關閉: Zend
5. 將結果返回: web 服務器
- 序言
- PHP基礎
- 認識PHP
- 環境安裝
- PHP語法
- 流程控制
- PHP數組
- PHP函數
- PHP類與對象
- PHP命名空間
- PHP7新特性
- PHP方法庫
- PHP交互
- 前后端交互
- 項目常規開發流程
- MySQL數據庫
- 會話控制
- Ajax分頁技術
- 細說函數
- 類與對象
- 對象進階
- 類與對象進階
- OOP面向對象
- 設計模式
- 路由與模板引擎
- 異常類
- PHP爬蟲
- PHP抓取函數
- PHP匹配函數
- 正則表達式
- PHP字符串函數
- 抓取實戰
- PHP接口
- 了解接口
- PHP插件
- PHPSpreadsheet
- ThinkPHP6
- 安裝
- 架構
- 數據庫
- 數據庫操作
- 視圖
- 模版
- 模型
- 雜項
- 命令行
- 交互
- 微信小程序
- 介紹
- 配置
- 組件
- 交互
- API
- 其他知識
- 百度小程序
- 介紹
- 配置
- 組件
- 交互
- API
- 其他知識
- Linux
- 服務器上線流程
- 安裝svn
- MySQL
- 認識MySQL
- MySQL函數
- 雜項
- composer依賴管理工具