Composer 패키지 만들기
직접 만든 코드 모듈을 Composer 패키지로 만들거나, CodeIgniter 4용 Composer 패키지를 만들 수 있습니다.
폴더 구조
다음은 Composer 패키지의 일반적인 디렉터리 구조입니다:
your-package-name/
├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── composer.json
├── src/
│ └── YourClass.php
└── tests/
└── YourClassTest.php
composer.json 만들기
패키지 디렉터리의 루트에 composer.json 파일을 만듭니다. 이 파일은 패키지와 그 의존성에 대한 메타데이터를 정의합니다.
composer init 명령이 파일 생성을 도와줍니다.
예를 들어, composer.json은 다음과 같은 형태일 수 있습니다:
{
"name": "your-vendor/your-package",
"description": "Your package description",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {
"YourVendor\\YourPackage\\": "src/"
}
},
"authors": [
{
"name": "Your Name",
"email": "yourname@example.com"
}
],
"require": {
// Any dependencies required by your package go here
},
"require-dev": {
// Any development dependencies (e.g., PHPUnit) go here
}
}
패키지 이름
여기서 name 필드가 중요합니다. 패키지 이름은 일반적으로 모두 소문자로 “vendor-name/package-name” 형식으로 작성합니다. 일반적인 예시는 다음과 같습니다:
your-vendor-name: 벤더(패키지 제작자)를 식별하는 이름으로, 본인의 이름이나 조직명 등을 사용합니다.your-package-name: 만드는 패키지의 이름입니다.
따라서 다른 패키지와 구별하기 위해 이름을 고유하게 만드는 것이 중요합니다. 특히 배포 시에는 고유성이 매우 중요합니다.
네임스페이스
패키지 이름은 autoload.psr4의 벤더 네임스페이스를 결정합니다.
패키지 이름이 your-vendor/your-package이면, 벤더 네임스페이스는 YourVendor이어야 합니다. 따라서 다음과 같이 작성합니다:
"autoload": {
"psr-4": {
"YourVendor\\YourPackage\\": "src/"
}
},
이 설정은 Composer에게 패키지의 소스 코드를 자동으로 로드하도록 지시합니다.
라이선스 선택
오픈 소스 라이선스에 익숙하지 않다면 https://choosealicense.com/을 참조하세요. CodeIgniter를 포함한 많은 PHP 패키지가 MIT 라이선스를 사용합니다.
개발 도구 준비
코드 품질을 보장하는 데 도움이 되는 다양한 도구가 있습니다. 이러한 도구들을 사용하는 것이 좋습니다. CodeIgniter DevKit을 사용하면 이러한 도구를 쉽게 설치하고 구성할 수 있습니다.
DevKit 설치
패키지 디렉터리의 루트에서 다음 명령을 실행합니다:
composer config minimum-stability dev
composer config prefer-stable true
composer require --dev codeigniter4/devkit
DevKit은 개발에 도움이 되는 다양한 Composer 패키지를 설치하고, vendor/codeigniter4/devkit/src/Template에 해당 템플릿을 설치합니다. 그 안의 파일을 프로젝트 루트 폴더에 복사하고 필요에 맞게 편집하세요.
코딩 표준 수정기 구성
DevKit은 PHP-CS-Fixer를 기반으로 한 CodeIgniter Coding Standard을 사용하는 코딩 표준 수정기를 제공합니다.
vendor/codeigniter4/devkit/src/Template/.php-cs-fixer.dist.php를 프로젝트 루트 폴더에 복사합니다.
캐시 파일을 위한 build 폴더를 만듭니다:
your-package-name/
├── .php-cs-fixer.dist.php
├── build/
편집기에서 .php-cs-fixer.dist.php를 열고 폴더 경로를 수정합니다:
--- a/.php-cs-fixer.dist.php
+++ b/.php-cs-fixer.dist.php
@@ -7,7 +7,7 @@ use PhpCsFixer\Finder;
$finder = Finder::create()
->files()
->in([
- __DIR__ . '/app/',
+ __DIR__ . '/src/',
__DIR__ . '/tests/',
])
->exclude([
이제 코딩 표준 수정기를 실행할 수 있습니다:
vendor/bin/php-cs-fixer fix --ansi --verbose --diff
composer.json에 scripts.cs-fix를 추가하면 composer cs-fix 명령으로 실행할 수 있습니다:
{
// ...
},
"scripts": {
"cs-fix": "php-cs-fixer fix --ansi --verbose --diff"
}
}
설정 파일
사용자가 설정을 재정의할 수 있도록 허용
패키지에 설정 파일이 있고 사용자가 설정을 재정의할 수 있도록 하려면, 설정 파일을 호출할 때 config('YourConfig')처럼 짧은 클래스명과 함께 config()를 사용하세요.
그러면 사용자는 YourVendor\YourPackage\Config\YourConfig와 같은 패키지 Config 클래스를 확장하는 동일한 짧은 클래스명의 설정 클래스를 app/Config에 배치하여 패키지 설정을 재정의할 수 있습니다.
app/Config에서 설정 재정의
app/Config 폴더의 알려진 설정을 재정의하거나 추가해야 하는 경우, 암묵적 등록자를 사용할 수 있습니다.
참고 자료
공식 패키지가 일부 게시되어 있습니다. 직접 패키지를 만들 때 이 패키지들을 참고로 활용할 수 있습니다: