PHP PHP에서 PSR 표준 완벽 이해 및 실무 적용 가이드
페이지 정보

영삼이
본문
✅ PHP에서 PSR 표준 완벽 이해 및 실무 적용 가이드
**PSR (PHP Standards Recommendation)**은 PHP-FIG에서 정의한 PHP의 코딩, 설계, 아키텍처 표준입니다. 현대 PHP 프로젝트에서 PSR은 거의 모든 프레임워크와 라이브러리에서 기본 전제로 사용되며, 실무에서는 무조건 알아야 할 기초이자 필수 기준입니다.
🧱 PSR 핵심 종류 정리
PSR 번호 | 설명 | 실무 적용 |
---|---|---|
PSR-1 | 기본 코딩 표준 | 네이밍, 파일 구성 |
PSR-4 | 오토로딩 표준 | Composer 오토로딩 |
PSR-3 | 로깅 인터페이스 | Monolog 등 |
PSR-7 | HTTP 메시지 표준 | 요청/응답 인터페이스 |
PSR-11 | 컨테이너 표준 | DI 컨테이너 인터페이스 |
PSR-12 | 코딩 스타일 가이드 | PSR-1/2 확장 |
PSR-14 | 이벤트 디스패처 표준 | 이벤트 기반 아키텍처 |
PSR-15 | HTTP 미들웨어 표준 | Slim, Symfony, Relay 등 |
✅ PSR-1 / PSR-12: 코딩 컨벤션
[code=php]
// ✅ 클래스는 PascalCase
class UserService {
public function getUserName(): string {
return 'Kim';
}
}
[/code]
- 탭 대신 스페이스 4칸
- 한 줄에 하나의 문장
- 네임스페이스 및 `use`는 최상단에 선언
**툴 자동 적용**
```bash
composer require squizlabs/php_codesniffer
vendor/bin/phpcs --standard=PSR12 src/
🚀 PSR-4: 오토로딩 표준
composer.json
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
[code=php]
// src/Service/UserService.php
namespace App\Service;
class UserService {
public function sayHi() {
return "Hi!";
}
}
[/code]
composer dump-autoload
📦 PSR-3: 로깅 인터페이스
[code=php]
use Psr\Log\LoggerInterface;
class UserController {
public function __construct(private LoggerInterface $logger) {}
public function register() {
$this->logger->info('회원가입 시도');
}
}
[/code]
→ Monolog
, Laravel Log
, Syslog
등 다양한 구현체와 교체 가능
🔁 PSR-7: HTTP 메시지 객체
[code=php]
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
function handler(ServerRequestInterface $request): ResponseInterface {
$params = $request->getQueryParams();
return new \Nyholm\Psr7\Response(200, [], json_encode($params));
}
[/code]
-
Slim, Symfony HttpFoundation, Laminas Diactoros 등과 호환 가능
🔌 PSR-11: 컨테이너 인터페이스
[code=php]
use Psr\Container\ContainerInterface;
class ControllerFactory {
public function __construct(private ContainerInterface $container) {}
public function make(): UserController {
return new UserController(
$this->container->get(LoggerInterface::class)
);
}
}
[/code]
→ Laravel, Symfony, PHP-DI 모두 PSR-11 준수
🧠 실무에서 왜 중요한가?
이유 | 설명 |
---|---|
교체 가능성 ↑ | Monolog → 다른 Logger로 쉽게 교체 가능 |
프레임워크 간 호환성 | Slim ↔ Laravel ↔ Symfony 간 전환 쉬움 |
인터페이스 기반 설계 | DI, 테스트 용이성 상승 |
오픈소스/팀 협업 | 일관된 스타일, 명확한 약속 |
✅ 요약
-
PSR은 PHP 생태계의 표준 언어
-
PSR-1, 4, 12 → 코딩 및 구조 기준
-
PSR-3, 7, 11, 15 → 설계 및 인터페이스 기준
-
PSR을 따르면 프레임워크에 종속되지 않는 구조를 만들 수 있음
- 다음글PHP에서 도메인 주도 설계(DDD) 기초 적용하기 25.03.28
댓글목록
등록된 댓글이 없습니다.