개발 지식

개발 지식

PHP Laravel 없이 PHP로 PSR-4 오토로딩 구현하기

페이지 정보

profile_image
영삼이
0건 192회 25-03-28 22:46

본문

✅ Laravel 없이 PHP로 PSR-4 오토로딩 구현하기

PSR-4는 PHP-FIG에서 제안한 Autoloader 표준입니다. Composer를 통해 자동으로 로딩되는 구조를 만들 수 있지만, 프레임워크 없이 순수 PHP로도 PSR-4 규격을 구현할 수 있습니다.


📁 디렉토리 구조 예시

project/
├── src/
│   ├── App/
│   │   └── Service/
│   │       └── UserService.php
├── vendor/
├── composer.json
├── index.php

🔧 PSR-4 오토로더 직접 구현

[code=php]
spl_autoload_register(function ($class) {
    $prefix = 'App\\';
    $baseDir = __DIR__ . '/src/App/';

    // 클래스명이 접두사로 시작하는지 확인
    $len = strlen($prefix);
    if (strncmp($prefix, $class, $len) !== 0) {
        return;
    }

    // 접두사 제거 후 파일 경로로 변환
    $relativeClass = substr($class, $len);
    $file = $baseDir . str_replace('\\', '/', $relativeClass) . '.php';

    if (file_exists($file)) {
        require $file;
    }
});
[/code]

🧱 클래스 예시

[code=php]
namespace App\Service;

class UserService {
    public function hello() {
        return 'Hello, PSR-4!';
    }
}
[/code]

🚀 index.php에서 테스트

[code=php]
use App\Service\UserService;

require 'autoloader.php';

$service = new UserService();
echo $service->hello();
[/code]

📚 Composer로 설정하는 방법

[code=json]
{
  "autoload": {
    "psr-4": {
      "App\\": "src/App/"
    }
  }
}
[/code]

이후 아래 명령으로 오토로더 생성:

composer dump-autoload

🧠 요약

  • PSR-4는 네임스페이스와 디렉토리 구조를 매핑하는 규칙

  • Composer 없이도 spl_autoload_register를 통해 직접 구현 가능

  • Composer를 사용하는 것이 일반적이지만, 구현 원리를 이해하는 것이 중요


댓글목록

등록된 댓글이 없습니다.