iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 8
12
Modern Web

寫給朋友的 PHP 從 0 到 100 實戰教程系列 第 8

Day 8. PHP教學: 必學-超強套件管理器composer

  • 分享至 

  • xImage
  •  

Why
為什麼要學這個 composer 呢?

  1. 當我們自己寫了不少 class 類別,每次要用都要引用一堆檔案?composer 可以極度簡化這個動作
  2. 引用了別人寫的 class 或 function,結果內部有用到其他檔案一直報錯?composer 可以幫你解決問題
  3. 自己每次都重複發明輪胎,有沒有高手寫好的穩定套件可以直接使用?composer 可以幫你下載跟管理

這麼好用!?快教我怎麼用!

How
我們都是使用終端機來『安裝』跟『下指令執行操作』這套管理軟體,概念上跟 Windows 不太一樣

這邊介紹 Mac 的安裝方式:
打開終端機 terminal 後依照順序執行這幾行指令,就可以開始使用囉

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

mv composer.phar /usr/local/bin/composer

使用的方法是這樣:
打開你的終端機,先跳到你的專案裡面,昨天我們創的資料夾在 /Applications/XAMPP/htdocs/game
那就先用 cd 這個指令跳到這個資料夾裡面吧

cd /Applications/XAMPP/htdocs/game

composer init

接下來就是一堆基本的問答,之後可以查英文來搞懂,他很貼心的都有預設值可以都按 Enter 下一步
https://ithelp.ithome.com.tw/upload/images/20171225/20107394HQXtRTsqbr.png

好像沒發生什麼事?我們用 ls 這個指令列出資料夾內的東西

ls

https://ithelp.ithome.com.tw/upload/images/20171225/20107394DpzukUZCQI.png
多了一個檔案 composer.json 這是一個基礎的設定檔案,接下來就可以對他做設定
https://ithelp.ithome.com.tw/upload/images/20171225/20107394rEz0pAeB21.png

套件哪裡找呢?可以到下方網址找,也可以上網搜尋看有沒有人推薦安裝的套件

https://packagist.org/explore/

要安裝的話,可以把 composer.json 改成這樣,安裝 monolog 就可以輕鬆寫 log 到檔案或資料庫的套件
https://ithelp.ithome.com.tw/upload/images/20171225/20107394mKjZNm598e.png

設定好 composer.json 這個設定檔,再來到終端機下這個指令來下載安裝

composer install

跑完就可以發現專案多了 vendor 裡面還有我們剛剛想裝的套件
https://ithelp.ithome.com.tw/upload/images/20171225/20107394W5kRReZVG8.png

除了自己手動改 composer.json 也可以下指令來自動安裝
在套件中可以看到教你安裝的指令

https://packagist.org/packages/monolog/monolog

根據上面所述,我們在終端機執行這行就可以完成上面這些動作

composer require monolog/monolog

這樣就可以安裝高手寫好的穩定套件囉!
自己動手試試看吧!

那自己寫的 class 要怎麼設定呢?
首先,先準備把自己寫好的 class 檔案放到一個資料夾中,拿前天的 DatabaseAccessObject 當例子
https://ithelp.ithome.com.tw/upload/images/20171225/20107394v7FGfOUn1R.png
在打開 composer.json 改寫成這樣
https://ithelp.ithome.com.tw/upload/images/20171225/20107394z0ppk7wvDI.png
在下一個指令,讀取 composer.json 的設定把檔案關聯實作起來

composer dump

https://ithelp.ithome.com.tw/upload/images/20171225/201073941p3xegfcjw.png

What
那怎麼使用呢?在 index.php 的頂部加上這行

require 'vendor/autoload.php';

就能直接用囉,用起來像是這樣:
https://ithelp.ithome.com.tw/upload/images/20171225/201073942Nrbkxhlih.png


上一篇
Day 7. PHP教學: 架設 PHP 網站開發環境
下一篇
Day 9. PHP教學: 從單一網頁到基礎框架概念
系列文
寫給朋友的 PHP 從 0 到 100 實戰教程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
e3561025
iT邦新手 5 級 ‧ 2021-10-10 17:13:48

最後的
$DAO = new DatabaseAccessObject();
因為原本的class並無設置空的建構子,所以會無法執行
需要改成
$DAO = new DatabaseAccessObject($mysql_address,$mysql_username,$mysql_password,$mysql_database);
如果後面接的變數有改,要跟著改哦

我要留言

立即登入留言