최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰




autoload


require, include로 파일(혹은 클래스)를 일일이 불러오는 것이 아니라


자동으로 클래스를 인식해서 oop를 쉽게 지원하는 autoload를 지원한다.


autoload의 명령어의 이름은 spl_autoload_register 이며 스펙은 다음과 같다


bool spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )


callable : 자동로드 기능의 등록, 쉽게 말하면 클래스 명과 같다


thow : 기본값 true, 등록 할 수 없는 경우 예외처리를 throw 하는지의 여부


prepend : 기본값 false, true인 경우 autoload를 추가하는 대신 

             자동로드 대기열에 추가한다. 즉 이 특정함수가 먼저 호출된다는 얘기


반환값 : 성공시 true, 실패시 flase



spl_autoload_register 예제


<?php

function my_autoloader($class) {
    include 
'classes/' $class '.class.php';
}

spl_autoload_register('my_autoloader');

// Or, using an anonymous function as of PHP 5.3.0
spl_autoload_register(function ($class) {
    include 
'classes/' $class '.class.php';
});

?>



클래스가 로드되지 않은 spl_autoload_register 예제


<?php

namespace Foobar;

class 
Foo {
    static public function 
test($name) {
        print 
'[['$name .']]';
    }
}

spl_autoload_register(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0

new InexistentClass;

?>


결과는

[[Foobar \ InexistentClass]]
치명적인 오류 : 'Foobar \ InexistentClass'클래스를 찾을 수 없습니다 ...


https://getcomposer.org/doc/01-basic-usage.md



'■ 백엔드 ■ > Modern PHP' 카테고리의 다른 글

autoload with composer  (0) 2018.07.01
댓글