xecon-phpfest2014composer

46
PHP Library 들들 들들들 Composer 들들들 XE Community Development Group 2014.11.08 Session 2-4 XECon + PHPFest 2014

Upload: jhyeon1010

Post on 26-Jun-2015

486 views

Category:

Software


0 download

DESCRIPTION

introduce composer and create private packagist

TRANSCRIPT

Page 1: xecon-phpfest2014composer

PHP Library 들의 지휘자Composer

조정현

XE Community Development Group

2014.11.08 Session 2-4XECon + PHPFest 2014

Page 2: xecon-phpfest2014composer

Composer Is a tool

for dependency management in

PHP

What is Composer

Page 3: xecon-phpfest2014composer

출처:http://benramsey.com/blog/2013/11/the-fall-of-pear-and-the-rise-of-composer/

지는 PEAR, 뜨는 Composer

Page 4: xecon-phpfest2014composer

1. PEAR 의 문제

• 선택의 여지가 없다 .

• 기여되는 패치에 대한 의구심

2. PEAR2, Pyrus 의 등장

• 느린 성장 , 발전 속도

등장배경

Page 5: xecon-phpfest2014composer

Turning Point

• “PHP 프로젝트의 표준을 만들자” - David Coallier

• PHP Framework Interop Group (PHP-FIG)

http://www.php-fig.org/

• PHP5.3 Release (namespace)

등장배경

Page 6: xecon-phpfest2014composer

Composer 의 등장 (with Packagist)

Page 7: xecon-phpfest2014composer

my mailer

her mailer

anothermailer

your mailer

his mailer

유사한 기능을 가지는 많은 라이브러리

Page 8: xecon-phpfest2014composer

More Powerful + More Completeness

라이브러리 선택의 민주화

Page 9: xecon-phpfest2014composer

• 강제하지 않아도 표준을 따름

• Unit Test 을 통한 품질 강화

코드의 표준화

Page 10: xecon-phpfest2014composer

PSR(PHP Specification Request)

PSR

Page 11: xecon-phpfest2014composer

1. 일반

• Foo\Bar\Baz

=> project/path/vendor/Foo/Bar/Baz.php

2. Underscore

• Namespace\Package\Class_Name

=> project/path/vendor/Namespace/Package/Class/

Name.php

• Namespace\Package_Name\Class_Name

=> project/path/vendor/Namespace/Package_Name/Class/

Name.php

www.php-fig.org PSR-0 Autoloading Standard

Page 12: xecon-phpfest2014composer

1. 일반

• Foo\Bar\Baz

=> project/path/vendor/Foo/Bar/Baz.php

2. Underscore

• Namespace\Package\Class_Name

=> project/path/vendor/Namespace/Package/Class/

Name.php

• Namespace\Package_Name\Class_Name

=> project/path/vendor/Namespace/Package_Name/Class/

Name.php

www.php-fig.org PSR-0 Autoloading Standard

Page 13: xecon-phpfest2014composer

• PHP 시작태그 “ <?php” or “<?=” 만 사용

• 파일 인코딩은 UTF-8

• Class 이름은 “ StudlyCaps”

• Method 이름은 “ camelCase”

• Class 상수는 대문자와 Underscore 만 사용

www.php-fig.org PSR-1 Basic Coding Standard

Page 14: xecon-phpfest2014composer

• 들여쓰기는 space 4 회

• 한줄에 문자는 최대 120 자

• namespace 와 use 사이는 한칸 띄움

• Class 와 Method 여는 중괄호는 다음 줄에

• 제어구조문의 여는 중괄호는 같은 줄에

• 기타 등등…

www.php-fig.org PSR-2 Coding Style Guide

Page 15: xecon-phpfest2014composer

• 8 가지 Method 를 포함

(debug, info, notice, warning, error, critical, alert, emer-

gency)

• 9 번째 Method “log” 의 첫 인자는 Log 의 레벨

• 정의되지 않은 Method 호출시 “ Psr\Log\InvalidArgumentExcep-

tion” 으로 예외처리

• 정의된 8 가지 레벨이외의 레벨은 사용하지 않음

www.php-fig.org PSR-3 Logger Interface

Page 16: xecon-phpfest2014composer

• eg. PSR-0

\Acme\Log\Writer\File_Writer

=> /Acme/Log/Writer/File/Writer.php

• eg. PSR-4

\Acme\Log\Writer\File_Writer

=> /acme-log-writer/File_Writer.php

www.php-fig.org PSR-4 Improved Autoloading

Page 17: xecon-phpfest2014composer

PSR ing….

Page 18: xecon-phpfest2014composer

Why Composer?

Page 19: xecon-phpfest2014composer

프로젝트에 로깅 작업이 필요

Monolog 라이브러리 사용 결정

Monolog 검색 및 프로젝트내 copy

Monolog 의 dependency 라이브러리 Psr/log 검색 및

프로젝트내 copy

Scenario - Unused

Page 20: xecon-phpfest2014composer

Code - Unused

Page 21: xecon-phpfest2014composer

Code - Unused

Page 22: xecon-phpfest2014composer

Code - Unused

Change?

Page 23: xecon-phpfest2014composer

Require > Source Code

Page 24: xecon-phpfest2014composer

프로젝트에 로깅 작업이 필요

Monolog 라이브러리 사용 결정

composer.json 내용 작성

$ composer install

Scenario - Used

Page 25: xecon-phpfest2014composer

Code - Used

Page 26: xecon-phpfest2014composer

Code - composer.json

Page 27: xecon-phpfest2014composer

당신의 선택은 ?

노가다 vs Composer

Page 28: xecon-phpfest2014composer

Schema

Page 29: xecon-phpfest2014composer

Schema – Information section

Page 30: xecon-phpfest2014composer

Schema – Core section

Page 31: xecon-phpfest2014composer

Schema – Etc section

Page 32: xecon-phpfest2014composer

Schema – Repositories(vcs)

Page 33: xecon-phpfest2014composer

Schema – Repositories(package)

Page 34: xecon-phpfest2014composer

Packagist

=> Composer 저장소

Page 35: xecon-phpfest2014composer

Packagist – Public https://packagist.org

Page 36: xecon-phpfest2014composer

Packagist – Private http://wpackagist.org

Page 37: xecon-phpfest2014composer

나만의 Packagist 만들기 !!

Page 38: xecon-phpfest2014composer

Only

packages.json

Server 설정

Page 39: xecon-phpfest2014composer

• /host/server/document/root/packages.json

Server 설정

Page 40: xecon-phpfest2014composer

• /your/project/root/composer.json

Client 설정

Page 41: xecon-phpfest2014composer

릴리즈 될때마다 packages.json 을 수정 ?

Page 42: xecon-phpfest2014composer

• URL - https://github.com/composer/satis

Packagist 구축 라이브러리 - Satis

Page 43: xecon-phpfest2014composer

• URL - https://github.com/composer/satis

Is not project-root/composer.json

Packagist 구축 라이브러리 - Satis

Page 44: xecon-phpfest2014composer

• satis.json

Packagist 구축 라이브러리 - Satis

Page 45: xecon-phpfest2014composer

Execute!!

Then

Packagist 구축 라이브러리 - Satis

Page 46: xecon-phpfest2014composer

Do It Your Self !