composer.json 내 autoload 부분에 기술된 형태에 따라
classmap 방식으로 class들을 로딩할건지 psr-4 방식으로 할건지 나뉜다.
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
classmap : composer.json 에 classmap 에 지정된 폴더 내의 모든 php를 읽어서 /vendor/composer/autoload_classmap.php 에 정적으로 배열을 생성하고 이 파일들을 한번에 오토로딩 한다.
장점 : 클래스들을 미리 로딩하므로 런타임시 psr-4보다 성능이 향상됨
단점 : 클래스를 추가할 때마다 dump-autoload를 해서 클래스맵을 작성 해줘야 하는 번거로움
psr-4 : 정적배열에 .php가 아닌, 네임스페이스와 이를 매칭시킬 폴더경로만 지정하게 되며, 런타임시 동적으로 네임스페이스를 이용하여 클래스들을 찾아서 로딩 시킨다. (클래스맵보다 속도 느림)
장점 : 클래스들을 추가하더라도 별도로 dump-autoload를 하지 않아도 런타임시 네임스페이스를 통해 클래스들을 찾음
단점 : 그때그때 클래스들을 찾아서 로딩시키므로 classmap보다 성능저하
composer.json 에 autoload를 추가한 후 반영하는 방법 (패키지들이 이미 설치된 후) :
composer dump-autoload -o
//또는
composer dump-autoload --optimize
패키지를 최초 설치시 :
composer install -o
composer update --optimize-autoloader
성능최적화 시 production 환경에서는 항상 classmap을 활성화 시켜서 빠르게 클래스들을 로드할수 있게 해주는 것이 좋다.
참고 :
오토로더(Auto loader)
이 책에서는 자동으로 클래스나 인터페이스를 로딩해 주는 것을 오토로딩으로 부르며 오토로딩을 수행하는 로더(Loader)를 오토로더(Auto Loader) 라고 호칭합니다.
www.lesstif.com
PHP Composer Autoloader 최적화
Composer Autoloader 최적화 Composer Autoloader는 상대적으로 빠르게 실행되나 PSR-4 및 PSR-0 autoload 규칙이 설정되는 방식으로 인해 클래스 이름을 확인하기 전에 파일 시스템을 검사해야 한다. 이 경우 성
blog.asamaru.net
composer classmap 참고 :
The composer.json schema - Composer
JSON schema Root Package Properties name description version type keywords homepage readme time license authors support funding Package links require require-dev (root-only) conflict replace provide suggest autoload PSR-4 PSR-0 Classmap Files Exclude files
getcomposer.org
'Laravel' 카테고리의 다른 글
[Laravel] subMonth / addMonth 사용 시 주의사항 (0) | 2021.12.31 |
---|---|
[Laravel] Eloquent로 USE INDEX / FORCE INDEX 사용하기 (0) | 2021.12.21 |
[Laravel] Swagger API 적용 하기 (0) | 2021.11.11 |
[Laravel] db에 더미 데이터 만들기 (0) | 2021.11.10 |
[Laravel] Event 와 Listener, Subscribe (0) | 2021.10.07 |