개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.04 06:06

spl_autoload 사용법에 대한 질문

목록
  • 루트권한 2일 전 2025.06.04 06:06
  • 7
    1
저는 PHP의 spl_autoload 기능을 사용하여 클래스를 autoload 하려는데,

아래와 같은 코드를 작성했습니다.

php

function autoload($class) {

    require_once 'class/' . $class . '.php';

}



spl_autoload_register('autoload');



이 코드는 클래스를 autoload 하는 데 성공하지만,

다음과 같은 코드를 작성했는데 오류가 발생합니다.

php

class User {

    public function __construct() {

        echo 'User 생성';

    }

}



class Admin extends User {

    public function __construct() {

        echo 'Admin 생성';

        parent::__construct();

    }

}



오류 메시지는 'Cannot access parent class User' 이라고 나옵니다.

spl_autoload 기능을 사용하여 상속관계의 클래스를 autoload 하는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  2일 전



    spl_autoload 기능을 사용하여 상속관계의 클래스를 autoload 하는 방법은 다음과 같습니다.

    1. autoload 함수를 수정하여, 클래스 이름을 파라미터로 받은 후, require_once 함수를 사용하여 클래스 파일을 로드합니다.
    2. autoload 함수를 spl_autoload_register 함수에 등록합니다.
    3. 상속관계의 클래스를 autoload 하기 위해, autoload 함수를 수정하여, 클래스 이름을 파라미터로 받은 후, require_once 함수를 사용하여 부모 클래스 파일을 로드합니다.
    4. autoload 함수를 사용하여, 상속관계의 클래스를 autoload 합니다.

    autoload 함수를 수정하여, 상속관계의 클래스를 autoload 하는 코드는 다음과 같습니다.

    #hostingforum.kr
    php
    
    function autoload($class) {
    
        $file = 'class/' . $class . '.php';
    
        if (file_exists($file)) {
    
            require_once $file;
    
        } else {
    
            $parent = get_parent_class($class);
    
            if ($parent) {
    
                autoload($parent);
    
                require_once $file;
    
            }
    
        }
    
    }
    
    
    
    spl_autoload_register('autoload');
    
    


    이 코드는 autoload 함수를 사용하여, 상속관계의 클래스를 autoload 합니다. autoload 함수는 클래스 이름을 파라미터로 받은 후, require_once 함수를 사용하여 클래스 파일을 로드합니다. autoload 함수는 또한, 상속관계의 클래스를 autoload 하기 위해, 부모 클래스 파일을 로드합니다.

    2025-06-04 06:07

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 25,677건 / 23 페이지

검색

게시물 검색