Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

xecon-phpfest2014composer

1,108 views

Published on

introduce composer and create private packagist

Published in: Software
  • Be the first to comment

xecon-phpfest2014composer

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

×