หลายคนอาจคิดว่า composer ใช้งานได้กับ laravel อย่างเดียวแต่ไม่ใช่นะครับ composer ใช้งานกับ php ธรรมดา ได้นะครับ เพราะที่จริงแล้วมันก็ออกแบบมาเป็น ตัวที่จัดการโปรเจคของเราให้ เริ่มต้นอย่างเป็นระเบียบเรียบร้อย ไลบราลี่ ทั้งหมด พร้อมใช้งานอยู่ในที่เดียวกัน มาเริ่มกันเลยครับ
1. หลังจากเรา ติดตั้ง composer เรียบร้อยเเล้วนะครับ เริ่มแรก สร้างโฟลเดอร์ที่จะเป็นที่อยู่ของโปรเจคก่อน
C:xampp_php_5.5htdocs>mkdir composer_php
2. เราจะเลือกไปยังโฟลเดอร์ที่เราจะสร้างโปรเจคแล้วใช้คำสั่ง composer init จะปรากฏคำสั่งที่ช่วยให้เรา สร้างไฟล์ composer.json
3.ต่อไปจะมีคำสั่งที่ช่วยในการค้นหา package ที่เราต้องการ ตรงนี้เราจะทำไม่ทำก็ได้นะครับ ในตอนนี้ผมจะหา pacakge ที่เกี่ยวกับ facebook พอค้นไปมันก็จะแสดง รายชื่อ package ที่อยู่บน packagist.org มาให้เราเลือก
4.ในตอนนี้ผมเลือก facebook/php-sdk แล้วต่อไป เรา ต้องใส่เวอร์ชันที่ต้องการ ถ้าไม่รู้ก็เลือก dev-master ใส่ไปก่อนครับ ต่อไปมันจะถามเราเรื่อยๆ ว่าจะเอา package อะไรอีก ถ้าพอแล้วก็ no ไปครับ แล้วก็ตกลงไป
5. ใช้คำสั่ง composer install --prefer-dist --profile profile ใช้แสดงสถานะการทำงานของ composerot นะครับ เสร็จแล้วครับ เราจะได้ไฟล์ composer.json ที่ข้างในมีข้อมูลที่เราป้อนเข้าไปตะกี้นะครับ ต่อไปเราจะไปทัวร์โครงสร้างของ โฟลเดอร์ vendor กัน
ไฮไลท์อยู่ที่โฟลเดอร์ composer ครับ ไฟล์แรก ClassLoader.php ใช้ในการโหลดคลาสของไลบราลี่ ที่เราลงทะเบียนไว้ในไฟล์
autoload_classmap.php
1.$vendorDir = dirname(dirname(__FILE__));
2.$baseDir = dirname($vendorDir);
3.
4.return array(
5.'BaseFacebook' => $vendorDir . '/facebook/php-sdk/src/base_facebook.php',
6.'Facebook' => $vendorDir . '/facebook/php-sdk/src/facebook.php',
7.'FacebookApiException' => $vendorDir . '/facebook/php-sdk/src/base_facebook.php',
8.);
ข้างในไฟล์ก็จะเป็น อาเรย์ที่มีคีย์คือชื่อของคลาส และค่าที่เป็นเส้นทางที่อยู่ของไฟล์ ซึ่งอยู่ในแบบของ absolute path
autoload_namespace.php
ไฟล์นี้จะใช้ลงทะเบียน namespace ของคลาสที่เขียนขึ้นตาม มาตรฐาน psr-0 ซึ่งตอนนี้้จะยังไม่มีนะครับ เพราะโครงสร้างของ facebook-sdk ไม่เป็นไปตาม psr-0
autoload_real.php
ไฟล์นี้ทำหน้าที่ ค้นหาคลาสและ namespace ในไลบราลี่ ที่เราลงทะเบียนไปใน composer.json แล้วเอามาเขียนลงในไฟล์สองตัวที่กล่าวไปด้านบน
installed.json
ใช้เก็บข้อมูลทั่วไปของ ไลบราลี่ที่เราติดตั้งไป
autoload.php
ไฟล์สุดท้ายที่ผมจะแนะนำ ไฟล์นี้ใช้แค่ดึงคลาส ComposerAutoloaderInit+hash
ในไฟล์ autoload_real มาใช้งานซึ่งเราจะใช้ไฟล์นี้ไฟล์เดียวครับ
ตัวอย่างการใช้งานกับ php แบบเพียวๆ
01. // จากที่เราต้อง require หรือ include ไฟล์จำนวนมากเหลือแค่ ตัวนี้ตัวเดียว
02. require_once __DIR__ . '/vendor/autoload.php';
03.
04. use Facebook as FB; // เรียกใช้คลาสตามคีย์ของอาเรย์ใน autoload_classmap
05.
06. Class TestComposer {
07.
08. function __construct() {
09.$facebook = new FB(array(
10.'appId' => '344617158898614',
11.'secret' => '6dc8ac871858b34798bc2488200e503d',
12.));
13.
14.// Get User ID
15.$user = $facebook->getUser();
16.}
17.
18. }