SlideShare a Scribd company logo
2014.11.08 Session 2-4 XECon + PHPFest 2014 
PHP Library들의 지휘자 
Composer 
조정현 
XE Community Development Group
What is Composer 
Composer Is a tool 
for dependency management in 
PHP
출처 
: 
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 maile 
r 
another 
mailer 
your mailer 
his mailer
라이브러리 선택의 민주화 
More Powerful + More Completeness
코드의 표준화 
• 강제하지 않아도 표준을 따름 
• Unit Test 을 통한 품질 강화
PSR 
(PHP Specification Request) 
PSR
PSR-0 Autoloading Standard www.php-fig.org 
1. 일반 
• FooBarBaz 
=> project/path/vendor/Foo/Bar/Baz.php 
2. Underscore 
• NamespacePackageClass_Name 
=> 
project/path/vendor/Namespace/Package/Class/Name.php 
• NamespacePackage_NameClass_Name 
=> 
project/path/vendor/Namespace/Package_Name/Class/Name.p 
hp
PSR-0 Autoloading Standard www.php-fig.org 
1. 일반 
• FooBarBaz 
=> project/path/vendor/Foo/Bar/Baz.php 
2. Underscore 
• NamespacePackageClass_Name 
=> 
project/path/vendor/Namespace/Package/Class/Name.php 
• NamespacePackage_NameClass_Name 
=> 
project/path/vendor/Namespace/Package_Name/Class/Name.p 
hp
PSR-1 Basic Coding Standard www.php-fig.org 
• PHP시작태그 “<?php” or “<?=” 만 사용 
• 파일 인코딩은 UTF-8 
• Class 이름은 “StudlyCaps” 
• Method 이름은 “camelCase” 
• Class 상수는 대문자와 Underscore 만 사용
PSR-2 Coding Style Guide www.php-fig.org 
• 들여쓰기는 space 4회 
• 한줄에 문자는 최대 120자 
• namespace 와 use 사이는 한칸 띄움 
• Class 와 Method 여는 중괄호는 다음 줄에 
• 제어구조문의 여는 중괄호는 같은 줄에 
• 기타 등등…
PSR-3 Logger Interface www.php-fig.org 
• 8가지 Method 를 포함 
(debug, info, notice, warning, error, critical, alert, 
emergency) 
• 9번째 Method “log” 의 첫 인자는 Log의 레벨 
• 정의되지 않은 Method 호출시 
“PsrLogInvalidArgumentException” 으로 예외처리 
• 정의된 8가지 레벨이외의 레벨은 사용하지 않음
PSR-4 Improved Autoloading www.php-fig.org 
• eg. PSR-0 
AcmeLogWriterFile_Writer 
=> /Acme/Log/Writer/File/Writer.php 
• eg. PSR-4 
AcmeLogWriterFile_Writer 
=> /acme-log-writer/File_Writer.php
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)
=> Composer 저장소
Packagist – Public https://packagist.org
Packagist – Private http://wpackagist.org
나만의 Packagist 만들기!!
Server 설정 
Only 
packages.json
Server 설정 
• /host/server/document/root/packages.json
Client 설정 
• /your/project/root/composer.json
xecon-phpfest2014composer
Packagist 구축 라이브러리 - Satis 
• 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
xecon-phpfest2014composer

More Related Content

PDF
Composer
PDF
XECON2014 Laravel 프레임워크 소개
PDF
티켓몬스터를 위한 PHP 개발 방법
PPTX
처음 시작하는 라라벨
PPTX
bamboo 로 PHP 프로젝트 지속적인 배포
PDF
실무에서 라라벨 테스트를 작성하다 알게 된 것
PDF
Learning Laravel
PDF
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
Composer
XECON2014 Laravel 프레임워크 소개
티켓몬스터를 위한 PHP 개발 방법
처음 시작하는 라라벨
bamboo 로 PHP 프로젝트 지속적인 배포
실무에서 라라벨 테스트를 작성하다 알게 된 것
Learning Laravel
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기

What's hot (20)

PDF
Modern PHP
PDF
Laravel 로 배우는 서버사이드 #1
PPTX
[PHPFest 2013] PHP 성능 향상 방법
PPTX
Sonatype nexus 로 docker registry 관리하기
PDF
112 deview
PPTX
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
PDF
유연하게 확장할 수 있는 PHP 웹 개발 이야기
PDF
문돌이가 가르치는 서버사이드 PHP
PDF
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
PPTX
Tech Update - The Future of .NET Framework (김명신 부장)
PDF
swig를 이용한 C++ 랩핑
PDF
PHPStorm - tool for php
PDF
파이어베이스 스터디
PPTX
Valet 으로 windows php 개발 환경 구성하기
PDF
[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석
PPTX
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
PDF
[120316] node.js 프로그래밍 5장
PDF
XECon2015 :: [1-2] 이현석 - Learning Laravel
PDF
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
PPTX
XE3 a부터 z까지(1) xe3 구조와 간단한 페이지 만들기
Modern PHP
Laravel 로 배우는 서버사이드 #1
[PHPFest 2013] PHP 성능 향상 방법
Sonatype nexus 로 docker registry 관리하기
112 deview
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
유연하게 확장할 수 있는 PHP 웹 개발 이야기
문돌이가 가르치는 서버사이드 PHP
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
Tech Update - The Future of .NET Framework (김명신 부장)
swig를 이용한 C++ 랩핑
PHPStorm - tool for php
파이어베이스 스터디
Valet 으로 windows php 개발 환경 구성하기
[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[120316] node.js 프로그래밍 5장
XECon2015 :: [1-2] 이현석 - Learning Laravel
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
XE3 a부터 z까지(1) xe3 구조와 간단한 페이지 만들기
Ad

Viewers also liked (20)

PDF
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
PDF
PHP Profiling
PPTX
[2015:1] phpdocumentor 설치와 사용법
PPTX
Laravel Authentication
PDF
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
PDF
[XECon2016] B-4 변종원 CodeIgniter와 PHP7
PPTX
쿠키를 통해 구현해보는 간단한 로그인 과정
PPTX
More effective c++ 1
PPTX
Mysql old password 깨기
PDF
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략_데이터지능팀_성동찬
PDF
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PDF
Exception&log
PPTX
Effective c++ 4
PPT
programming with GDB
PPTX
대규모 서비스를 지탱하는 기술 Ch 4
PDF
NHN NEXT 2014년도 게임트랙 소개
PDF
게임서버프로그래밍 #5 - 데이터베이스 핸들링
PDF
Laravel 로 배우는 서버사이드 #3
PDF
MySQL delete.update
PDF
Log4j 사용법
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
PHP Profiling
[2015:1] phpdocumentor 설치와 사용법
Laravel Authentication
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
[XECon2016] B-4 변종원 CodeIgniter와 PHP7
쿠키를 통해 구현해보는 간단한 로그인 과정
More effective c++ 1
Mysql old password 깨기
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략_데이터지능팀_성동찬
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
Exception&log
Effective c++ 4
programming with GDB
대규모 서비스를 지탱하는 기술 Ch 4
NHN NEXT 2014년도 게임트랙 소개
게임서버프로그래밍 #5 - 데이터베이스 핸들링
Laravel 로 배우는 서버사이드 #3
MySQL delete.update
Log4j 사용법
Ad

Similar to xecon-phpfest2014composer (20)

PPTX
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
PDF
XECon + PHPFest 2014 XE 프로젝트 이야기
PPTX
Python study 1강 (오픈소스컨설팅 내부 강의)
PDF
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
PPTX
Python 생태계의 이해
PPTX
Django로 배우는 쉽고 빠른 웹개발 study 자료
PPSX
스프링 오픈소스 정리
PPTX
으리리버싱시즌3
PDF
웹 개발 스터디 01 - PHP
PDF
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
PDF
C 언어 스터디 01 - 기초
PPTX
PHP 7의 새로운 특징과 기능 요약
PDF
[232] 성능어디까지쥐어짜봤니 송태웅
PDF
18 2 파이썬표준라이브러리
PPTX
Advanced nGrinder 2nd Edition
PDF
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
PDF
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PDF
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
PDF
Laravel로 스타트업 기술 스택 구성하기
PDF
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon + PHPFest 2014 XE 프로젝트 이야기
Python study 1강 (오픈소스컨설팅 내부 강의)
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
Python 생태계의 이해
Django로 배우는 쉽고 빠른 웹개발 study 자료
스프링 오픈소스 정리
으리리버싱시즌3
웹 개발 스터디 01 - PHP
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
C 언어 스터디 01 - 기초
PHP 7의 새로운 특징과 기능 요약
[232] 성능어디까지쥐어짜봤니 송태웅
18 2 파이썬표준라이브러리
Advanced nGrinder 2nd Edition
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Laravel로 스타트업 기술 스택 구성하기
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다

xecon-phpfest2014composer

Editor's Notes

  • #6: 2009년
  • #26: spl_autoload, spl 이 뭔지? - 상품
  • #30: project, library, metapackage, composer-plugin
  • #44: tip : composer 를 /usr/bin/ 위치