## 系統運行環境
Swoole實驗室系列文章中的DEMO示例代碼運行環境是在CentOS7.x,PHP7.x,Swoole2.0上。
## 構建項目
進入主題,我們打算構建一個將SwooleApp的項目,使用Composer來構建。
首先創建項目目錄結構:
```
swooleApp
|----src
|----App
|----public
```
很顯然,src/目錄是我們的源代碼程序文件目錄,public/目錄是對外公共目錄,我們允許web可以直接訪問到這個目錄。
進入到swooleApp項目目錄下,打開命令行工具,運行`composer init`初始化項目,根據提示依次輸入項目信息,內容根據情況自定義,最后會在項目目錄下生成一個composer.json文件,打開這個文件,它應該長這樣:
```
{
"name": "helloweba/swoole-app",
"description": "A swoole app.",
"type": "project",
"authors": [
{
"name": "helloweba",
"email": "abc@qq.com"
}
],
"require": {}
}
```
項目中我們會用到MVC架構、自動加載等,我們會用composer安裝第三方組件,為了更好的加載這些依賴組件以及有效的結合項目,我們使用PSR-4規范自動加載。
我們在composer.json的`autoload`字段中增加本項目的autoloader。
```
{
"autoload": {
"psr-4": {"Helloweba\\Swoole\\": "src/App"}
}
}
```
這樣的話,什么可以使用autoload將命名空間為`Helloweba\Swoole的src/App/`目錄下的文件自動加載。
好了,現在我們試著用composer來安裝一個我們需要用到的發郵件組件:[phpmailer](https://packagist.org/packages/phpmailer/phpmailer)。
運行命令:`composer require phpmailer/phpmailer`
執行完畢后,你會發現項目目錄下多了個vendor/目錄,對,沒錯,這個目錄就是需要自動加載的依賴組件目錄,是不是類似前端的npm安裝依賴后的node_modules/目錄哈。
好了,現在你打開`composer.json`,完整的結構應該是這樣的:
```
{
"name": "helloweba/swoole-app",
"description": "A swoole app.",
"type": "project",
"authors": [
{
"name": "helloweba",
"email": "abc@qq.com"
}
],
"require": {
"phpmailer/phpmailer": "^6.0"
},
"autoload": {
"psr-4": {
"Helloweba\\Swoole\\": "src/App"
}
}
}
```
現在我們的項目算是已經構建好了,本節只是為Swoole實驗室系列文章作鋪墊,接下來我們會進入下一節swoole實戰:使用Swoole發送郵件。