xecon-phpfest2014composer
DESCRIPTION
introduce composer and create private packagistTRANSCRIPT
PHP Library 들의 지휘자Composer
조정현
XE Community Development Group
2014.11.08 Session 2-4XECon + PHPFest 2014
Composer Is a tool
for dependency management in
PHP
What is Composer
출처:http://benramsey.com/blog/2013/11/the-fall-of-pear-and-the-rise-of-composer/
지는 PEAR, 뜨는 Composer
1. PEAR 의 문제
• 선택의 여지가 없다 .
• 기여되는 패치에 대한 의구심
2. PEAR2, Pyrus 의 등장
• 느린 성장 , 발전 속도
등장배경
Turning Point
• “PHP 프로젝트의 표준을 만들자” - David Coallier
• PHP Framework Interop Group (PHP-FIG)
http://www.php-fig.org/
• PHP5.3 Release (namespace)
등장배경
Composer 의 등장 (with Packagist)
my mailer
her mailer
anothermailer
your mailer
his mailer
유사한 기능을 가지는 많은 라이브러리
More Powerful + More Completeness
라이브러리 선택의 민주화
• 강제하지 않아도 표준을 따름
• Unit Test 을 통한 품질 강화
코드의 표준화
PSR(PHP Specification Request)
PSR
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
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
• PHP 시작태그 “ <?php” or “<?=” 만 사용
• 파일 인코딩은 UTF-8
• Class 이름은 “ StudlyCaps”
• Method 이름은 “ camelCase”
• Class 상수는 대문자와 Underscore 만 사용
www.php-fig.org PSR-1 Basic Coding Standard
• 들여쓰기는 space 4 회
• 한줄에 문자는 최대 120 자
• namespace 와 use 사이는 한칸 띄움
• Class 와 Method 여는 중괄호는 다음 줄에
• 제어구조문의 여는 중괄호는 같은 줄에
• 기타 등등…
www.php-fig.org PSR-2 Coding Style Guide
• 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
• 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
PSR ing….
Why Composer?
프로젝트에 로깅 작업이 필요
Monolog 라이브러리 사용 결정
Monolog 검색 및 프로젝트내 copy
Monolog 의 dependency 라이브러리 Psr/log 검색 및
프로젝트내 copy
Scenario - Unused
Code - Unused
Code - Unused
Code - Unused
Change?
Require > Source Code
프로젝트에 로깅 작업이 필요
Monolog 라이브러리 사용 결정
composer.json 내용 작성
$ composer install
Scenario - Used
Code - Used
Code - composer.json
당신의 선택은 ?
노가다 vs Composer
Schema
Schema – Information section
Schema – Core section
Schema – Etc section
Schema – Repositories(vcs)
Schema – Repositories(package)
Packagist
=> Composer 저장소
Packagist – Public https://packagist.org
Packagist – Private http://wpackagist.org
나만의 Packagist 만들기 !!
Only
packages.json
Server 설정
• /host/server/document/root/packages.json
Server 설정
• /your/project/root/composer.json
Client 설정
릴리즈 될때마다 packages.json 을 수정 ?
• URL - https://github.com/composer/satis
Packagist 구축 라이브러리 - Satis
• URL - https://github.com/composer/satis
Is not project-root/composer.json
Packagist 구축 라이브러리 - Satis
• satis.json
Packagist 구축 라이브러리 - Satis
Execute!!
Then
Packagist 구축 라이브러리 - Satis
Do It Your Self !