Skip to main content

How to use composer with PHP, Yii framework

 

Introduction:

Some PHP components is installed using composer, like every other dependency framework.
You can reference the page:  https://packagist.org/ . This page contains a lot of useful PHP repositories, libraries.

The benefits of using composer are:

  • When we create a library which depends on another libraries(of other developer), we of course do not want to copy all these libraries into our project(do not do that, they are not yours). We might want our project(library) to be condense, simple to use and always up-to-date.
--> Therefore, we will create a file, which presents that our library is depending on some other guys...
  • Our library users might want a small command to download everything they need, including our library. One command and everything is setup.
  • User want the latest version of our library

If you are a developer, how to install libaries using composer?

First, lets imagine that your project need some external libraries(this is the fact, not imagination). So, you need to declare that, of course, raise your voice when you are hungry.

>Step 0: Go to your project's root directory,

> Step 1: Install composer, using command line:

curl -s http://getcomposer.org/installer | php

After you install, a file composer.phar will be created

> Step 2 :  create a file named composer.json, this is the file which you declare about your project. The format of the file should be(simplest):

{
    "name": "your-vendor-name/package-name",
    "description": "A short description of what your package does",
    "require": {
        "php": ">=5.3.0",
        "another-vendor/package": "1.*"
    }
}

You declare your project name, description, and the most important part: require. This part tells what libraries your project needs

Your project requires many libraries, the format of a requirement is vendor/package:version.

> Step 3: I will tell you how to download a library. For example, we try  yii2-apns-gcm library.
Open the page and you will notice, there is a part:

    require: "bryglen/yii2-apns-gcm": "dev-master"
Lets copy it into your require part of composer.json.
> Step 4: Start downloading

php composer.phar install

> Attention: there might have some problems with library version(stable or dev). By default, composer only loads stable library only. If the library you want to download is depending on some library which is dev-master, composer would not download it.

Way to solve it is add this into your composer.json file:

    "minimum-stability":"dev" 

Reference: https://groups.google.com/forum/#!msg/composer-dev/_g3ASeIFlrc/Lu537ZXuOLgJ

Composer and Yii

Many Yii libaries use composer. With Yii, external libraries are saved in protected/extension or protected/vendors. You might need to declare this directory in your composer.json

        "config": {
             "vendor-dir": "protected/vendors"
   }


Reference:



------------------------------------------------------------------------------------------------------------------------

Giới thiệu

Một số php component sử dụng composer để cài đặt(giống kiểu dependency).
Các bạn có thể tham khảo trang: https://packagist.org/  để thấy, trên đó có rất nhiều các repository, library do developer lập nên.

Lợi ích của việc dùng composer này là:
  • Khi mình tạo 1 library có phụ thuộc vào library của người khác, đương nhiên là mình không thể nhét tất cả library của họ vào của mình được, vì như thế chật máy, hơn nữa lại không đảm bảo là ta luôn có thư viện mới nhất để làm việc.
--> Mình sẽ tạo 1 file khai báo là library của mình phụ thuộc thằng này thằng kia...
  •  User chỉ cần 1 lệnh nhỏ là có thể down toàn bộ các library lẫn dependency của library đó về để dùng.
  • User cập nhật library cũng dễ dàng.


Cách làm: 

Đầu tiên, hãy tưởng tượng bạn project của bạn cần một số các library bên ngoài, thế thì bạn sẽ phải khai báo là bạn cần nó.

> Bước 1: cài đặt composer, dùng command line: 

curl -s http://getcomposer.org/installer | php

> Bước 2: Vào thư mục gốc của bạn, tạo ra 1 file composer.json, bên trong đó ghi 1 số thông tin cơ bản.
ví dụ:

{
    "name": "your-vendor-name/package-name",
    "description": "A short description of what your package does",
    "require": {
        "php": ">=5.3.0",
        "another-vendor/package": "1.*"
    }
}


Giải thích: chỗ require chính là những chỗ để bạn khai báo các thư viện cần dùng cho project của bạn.
ví dụ bạn có thể vào https://packagist.org/packages/bryglen/yii2-apns-gcm, ta sẽ thấy chỗ:

    require: "bryglen/yii2-apns-gcm": "dev-master"

> Bước 3: Sau khi add các require cần thiết vào, bạn hãy gõ lệnh sau để composer tự download và cài đặt:

php composer.phar install

> Chú ý: Có 1 số package là ở trong trạng thái dev chứ không phải stable, nếu như thư viện mà bạn require lại require môt thư viện ở dạng dev, thì bạn sẽ không thể cài đặt được repository. 
Cách đơn giản nhất là bạn đặt thêm option sau vào file composer.json:

    "minimum-stability":"dev" 


Cách làm với Yii framework:

Nhiều thư viện yii cũng dùng composer. Với yii thì các thư viện ngoài thường được lưu mặc định trong thư mục protected/extension hoặc protected/vendors. Các bạn cần khai báo thêm chúng trong file composer như sau:

        "config": {
             "vendor-dir": "protected/vendors"
   }


Tham khảo: 

Comments

Popular posts from this blog

Install Ruby on Rails on MAC

Hello, I am quite familliar with Apache's friend products like XAMPP, LAMPP... And this is the first time I try Ruby on Rails(RoR). I'm quite stuck on installing it. As a normal PHP guy, I first try install Rails, following this tutorial: http://installrails.com/ And the next thing I want to learn about is how RoR works with MySQL, PhpMyadmin. So I tried to make it connect to XAMPP's MySQL but it did not work at all. I found out that, using mySQL in XAMPP package is not a common method, what I should do is to install MySQL as a single service onto my MAC. So I did following: 1. Install MYSQL with HomeBrew Did you install HomeBrew, if not, please follow:  https://coolestguidesontheplanet.com/installing-homebrew-on-os-x-el-capitan-10-11-package-manager-for-unix-apps/ Next, type this command to install MySQL to your machine: $ brew install mysql This will install mysql to your computer, if the installation is success, you could try start using mySQL with this c...

Install MySQL for python on Mac OS 10.9 with XAMPP

Assume that you already have Python installed. 1. Install XAMPP for MAC http://sourceforge.net/projects/xampp/files/ As it is a dmg file, it should be easy to be installed. 2. Now you need to install MySQLdb package for Python a. Download the lastest module of MySQLdb here : http://sourceforge.net/projects/mysql-python/files/latest/download b. Extract it to your prefered location. Notice: You might need to change site.cfg according to your mysql_config path. See the next step c. Setup your path Because you need to setup /bin and /lib folder of XAMPP's MySQL. So, let prepare your $PATH variable. > Edit your ~/.bash_profile ( or ~/.profile) by adding the following lines:  export DYLD_LIBRARY_PATH=/Applications/XAMPP/xamppfiles/lib export PATH=/Applications/XAMPP/xamppfiles/bin/:$PATH Notice: if you are not using XAMPP, you should edit above PATH by your mysql equivalent path. for example /usr/local/mysql/lib and /usr/local/mysql/bin Notice: About site.cfg(in y...

iOS 13 presentViewController has updated transition way

Very surprised that my weather widget app is not updated it content automatically after a view has appeared. First, I called self presentViewController to present a view, after closing that view, I hope that my below view will call  -( void )viewWillAppear:( BOOL )animated{ but nothing happens. I started figuring out that on iOS 13, the view which is presented is displaying like a floating window, not fullscreen, like below. This is new in iOS 13. Quite cool, you can swipe the screen down, without pressing a close button. in order to get the below view called, you need to use Delegate BIG CHANGE~