วันพฤหัสบดีที่ 21 กรกฎาคม พ.ศ. 2559

การจัดการ library ในภาษา PHP ด้วย Composer

การจัดการ 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

    การติดตั้ง Composer บน Ubuntu

    $sudo apt-get install curl
    $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.*"
       
    }
    }


    ทำการติดตั้ง 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


    สิ่งที่จะได้เพิ่มเข้ามาคือ 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"
       
    }
    }


    ใน project ที่ต้องการใช้งานให้ทำการเพิ่ม code ต่อไปนี้

    include_once './vendor/autoload.php';

    เพียงเท่านี้ก็สามารถใช้งาน library ต่างๆ ได้แล้ว

ไม่มีความคิดเห็น:

แสดงความคิดเห็น