Classloader

Classloader 소개

  • 고도몰은 클래스의 FQN(Fully Qualified Name)을 이용하여 Class 파일을 자동으로 인클루드 하는 Autoload 시스템을 사용합니다.
  • Classloadersystem/autoload.php 파일에서 기본 선언되고, user/route.php 에서 사용정의 Class를 사용할 수 있도록 해당 경로를 추가해줍니다.
  • PHP에서는 ClassloaderLoader Stack에 여러개 등록할 수 있고, Stack의 순서대로 Classloader가 동작하여 Class를 찾습니다. 하지만, 고도몰 에서는 하나의 Classloader를 사용하며, 내부에서 여러개의 ClassPathResolver를 등록하여 Loader Stack을 구현하고 있습니다.

Fully Qualified Name란? 네임스페이스의 완전한 이름으로 아래의 예에서 볼 때 Framework\ClassLoader\ClassLoader, Framework\Http\Request을 의미합니다. 또한 반드시 네임스페이스와 물리적인 디렉토리의 경로가 동일해야 Classloader가 정상 실행됩니다.

ClassLoader Resolver

  1. AbstractClassPathResolver
    • Classloader의 기본 기능을 포함한 추상 클래스
  2. DefaultClassPathResolver
    • 고도몰에 적용된 기본 Classloader
  3. WrapperClassPathResolver
    • Controller\FrontModule\FrontWrapper 해주는 클래스 로더
    • usersystem 영역의 namespace 경로를 동일하게 맞춰주기 위해서 작성되었다.