การจัดการ library ในภาษา PHP ด้วย Composer !!!
Composer คืออะไร?
Composer คือระบบจัดการไลบราลี่ภายนอกของ php ถูกสร้างขึ้นมาโดยนำแนวคิดมาจากระบบจัดการไลบราลี่ของ node.js,ruby ที่ต้องสร้างขึ้นเพราะ ของเดิมของ php คือ pear ไม่มีการพัฒนามากว่า 5 ปีเเล้ว และแนวคิดของ composer ต่างจาก pear ตรงที่ตัวไลบราลี่จะไม่ถูกติดตั้งในระดับที่สามารถถูกเรียกใช้จากที่ไหนก็ได้ แต่จะใช้โฟลเดอร์ vendor เป็นตัวหลักในการเก็บไลบราลี่ต่างๆ
ซึ่ง composer จะจัดการ dependency ที่เขียนด้วยภาษา php โดยมีแหล่งรวม packages ต่างๆอยู่ที่ http://packagist.org ที่นี้เองจะรวม repository ส่วนของ dependency library จากหลายๆ ที่ไม่ว่าจะเป็น github bitbucket .. หากเปรียบเทียบกับภาษาอื่น ตัว composer จะเหมือนกับ gemfile ใน Ruby , Maven ใน Java หรือส่วนหนึ่งใน Nuget ของ .Net
packagist.org
เป็นเว็บไซต์ที่รวบรวมไลบราลี่ของ php เมื่อเราต้องการไลบราลี่เกี่ยวกับอะไร ก็เข้าไปค้นหาจากที่นี้ได้ครับ โปรเจคส่วนใหญ่จะมาจาก github กับ bitbucket
ประโยชน์หลัก
- ลดเวลาการค้นหาไลบราลี่ที่เราต้องการ เพราะไลบราลี่ของ php ที่ใช้มาตรฐาน psr แทบจะทุกตัวใช้ packagist.org ในการขึ้นทะเบียนว่าสามารถใช้ร่วมกับ composer ได้
- ถ้าไลบราลี่ตัวนั้นมีการอัพเดท เราสามารถติดตามได้โดยไม่ต้องเสียเวลาเข้าไปตรวจที่หน้าเว็บ
- ลดการสร้างไลบราลี่ซ้ำซ้อน เมื่อเราต้องการสร้างไลบราลี่ขึ้นมาใช้เอง ก็เข้าไปค้นดูก่อน ถ้าไม่มีค่อยสร้าง
- ต่อไปถ้าไลบราลี่ของเราจะสามารถใช้งานได้กับทุกๆ framework ที่ใช้ composer
- ถ้าไลบราลี่ตัวนั้นมีการอัพเดท เราสามารถติดตามได้โดยไม่ต้องเสียเวลาเข้าไปตรวจที่หน้าเว็บ
- ลดการสร้างไลบราลี่ซ้ำซ้อน เมื่อเราต้องการสร้างไลบราลี่ขึ้นมาใช้เอง ก็เข้าไปค้นดูก่อน ถ้าไม่มีค่อยสร้าง
- ต่อไปถ้าไลบราลี่ของเราจะสามารถใช้งานได้กับทุกๆ framework ที่ใช้ composer
การติดตั้ง Composer บน Ubuntu
$sudo apt-get install curl
$curl -s http://getcomposer.org/installer | php
$php composer.phar
$sudo mv composer.phar /usr/bin/composer
$curl -s http://getcomposer.org/installer | php
$php composer.phar
$sudo mv composer.phar /usr/bin/composer
สร้าง file composer.json เพื่อกำหนด library ต่างๆ ที่ต้องการใช้งาน เช่น
{
"require": {
"kriswallsmith/assetic": "1.0.*"
}
}
"require": {
"kriswallsmith/assetic": "1.0.*"
}
}
ทำการติดตั้ง library ต่างๆ ด้วยคำสั่งดังนี้
$composer install
ผลการทำงานเป็นดังนี้
Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing kriswallsmith/assetic (v1.0.4)
Downloading: 100%
Writing lock file
Generating autoload files
- Installing kriswallsmith/assetic (v1.0.4)
Downloading: 100%
Writing lock file
Generating autoload files
สิ่งที่จะได้เพิ่มเข้ามาคือ folder vendor ซึ่งประกอบด้วย file และ folder ต่างๆ ดังนี้
vendor/
|-- autoload.php
|-- composer
| |-- autoload_classmap.php
| |-- autoload_namespaces.php
| |-- autoload_real.php
| |-- ClassLoader.php
| `-- installed.json
`-- kriswallsmith
`-- buzz
|-- composer.json
|-- lib
| `-- Buzz
| |-- Browser.php
| |-- Client
| | |-- AbstractClient.php
| | |-- AbstractCurl.php
แต่ถ้าต้องการเปลี่ยนชื่อ folder จาก vendor เป็นชื่ออื่นๆ สามารถเปลี่ยนได้ดังนี้
{
"require": {
"kriswallsmith/assetic": "1.0.*"
},
"config" : {
"vendor-dir" : "packages"
}
}
"require": {
"kriswallsmith/assetic": "1.0.*"
},
"config" : {
"vendor-dir" : "packages"
}
}
ใน project ที่ต้องการใช้งานให้ทำการเพิ่ม code ต่อไปนี้
include_once './vendor/autoload.php';
เพียงเท่านี้ก็สามารถใช้งาน library ต่างๆ ได้แล้ว
ไม่มีความคิดเห็น:
แสดงความคิดเห็น