반응형
Composer 설치 & 기본 설정
Composer 설치
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer # macOS/Linux 예시
프로젝트 루트에서 초기화
composer init
composer init 과정에서 패키지 이름·라이선스 등을 입력하면 composer.json 이 생성됩니다.
PSR‑4 규칙에 맞춘 폴더 구조 준비
- 네임스페이스 ↔ 디렉터리 매핑 규칙
• Acme\Blog\Post → src/Blog/Post.php - 파일 이름과 클래스 이름은 반드시 동일
• class UserDetail {} → UserDetail.php - 한 파일엔 클래스 하나만
예시 구조:
my-project/
├── app/ # 애플리케이션 코드
│ ├── Models/
│ │ ├── User.php
│ │ └── UserDetail.php
│ └── ...
├── database/ # Eloquent 등 DB 관련 코드 (classmap 예시)
├── tests/ # 테스트 코드
└── vendor/ # Composer가 생성
- composer.json에 오토로딩 설정 추가
{
"autoload": {
"classmap": [
"database" // DB 관련 클래스를 한꺼번에 스캔
],
"psr-4": {
"App\\": "app/" // App 네임스페이스 → app/ 디렉터리
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php",
"tests/PassportTestCase.php"
],
"psr-4": {
"Tests\\": "tests/" // 테스트 전용 네임스페이스
}
}
}
* classmap : 재귀적으로 모든 PHP 파일을 스캔하여 클래스‑파일 매핑을 만듭니다. (리플렉션·레거시 코드에 유용)
* psr-4 : 권장 방식. 네임스페이스 접두사를 실제 경로와 일치시켜 빠르고 깔끔하게 로드합니다.
오토로더 최적화 & 생성
composer dump-autoload -o
# -o 옵션: classmap 최적화를 위해 권장
실행 후 vendor/composer/autoload_*.php 등이 자동 생성됩니다.
코드에서 사용하기
오토로더 포함
// index.php (또는 진입점)
require **DIR** . '/vendor/autoload.php';
예시 클래스
// app/Users/User.php
<?php
namespace App\\Users;
class User
{
// ...
}
// app/Users/UserDetail.php
<?php
namespace App\\Users;
class UserDetail
{
// ...
}
실제 사용
<?php
// index.php
require **DIR** . '/vendor/autoload.php';
use App\\Users\\User;
use App\\Users\\UserDetail;
$user = new User();
$detail = new UserDetail();
반응형
'PHP > PHP 문법' 카테고리의 다른 글
설치된 PHP가 threadsafe 혹은 nonthreadsafe 인지 알아내는법 (0) | 2016.07.23 |
---|---|
DB접속 (MySQL 기준) (0) | 2016.04.21 |