티스토리 뷰
spl_autoload_register()
- 현재 PHP 생태계에서 공식적으로 권장되는 오토로드의 올바른 사용법은
spl_autoload_register()
(PHP >= 5.1.2) 내장 함수를 이용하여 커스텀 오토로드 함수를 등록하는 것이다. - 파라메터를 달리 하여 여러번 서로 다른 커스텀 오토로드 함수를 등록할 수 있으며 새로운 클래스 참조시 등록한 순서대로 오토로드 함수가 실행된다.
- 우선순위로 등록된 오토로드 함수가 클래스를 찾아냈다면 후순위에 존재하는 오토로드 함수는 실행되지 않는다. 모든 오토로드 함수가 실행되어도 클래스를 찾아내지 못했다면
Fatal Error
가 발생한다. - 현재 오토로드의 표준이 된
Composer
(PHP >= 5.3.2)의 역할이 바로composer.json
파일의 설정대로 패키지 설치 및 커스텀 오토로드 함수를 자동 생성한 후 spl_autoload_register()로 등록해주는 것이다. 개발자가 직접 커스텀 오토로드 함수를 작성하여 등록해야 하는 부담을 한 방에 해결해준다.
spl_autoload_functions()
- spl_autoload_register()로 등록한 커스텀 오토로드 함수 목록을 확인하려면
spl_autoload_functions()
를 호출한다. 현재 등록된 커스텀 오토로드 함수 목록을 배열로 반환한다.
spl_autoload_unregister()
- 등록한 커스텀 오토로드 함수를 해제할 수도 있다.
spl_autoload_unregister()
를 호출한다.
// 현재 등록된 오토로드 함수 배열 반환
$aAutoload = spl_autoload_functions();
// 첫번째 등록된 커스텀 오토로드 함수를 해제
spl_autoload_unregister($aAutoload[0]);
// 등록된 Composer의 오토로드 함수를 해제
foreach ($aAutoload as $autoload) {
if (is_array($autoload)) {
if ($autoload[0] instanceof \Composer\Autoload\ClassLoader) {
spl_autoload_unregister($autoload);
}
}
}
// 등록된 Composer가 최우선 순위일 경우 다른 커스텀 오로토드와의 충돌을 피하기 위해 후순위로 이동
foreach ($aAutoload as $autoload) {
if (is_array($autoload)) {
if ($autoload[0] instanceof \Composer\Autoload\ClassLoader) {
$composerAutoload = $autoload;
spl_autoload_unregister($composerAutoload);
spl_autoload_register($composerAutoload);
}
}
}
참고 글
- Can php spl_autoload_register & composer autoloader work together?
- How to use spl_autoload_register?
관련 글
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Spring MVC 3
- CentOS
- 로드바이크
- 자전거
- maven
- Kendo UI Web Grid
- java
- JHipster
- 태그를 입력해 주세요.
- Docker
- kotlin
- 알뜰폰
- Eclipse
- 평속
- Tomcat
- graylog
- DynamoDB
- 로드 바이크
- MySQL
- JavaScript
- chrome
- bootstrap
- jsp
- jstl
- Spring Boot
- 구동계
- jpa
- spring
- node.js
- Kendo UI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함