개발자 Q&A

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

2025.05.28 03:54

ReflectionClass::newInstanceWithoutConstructor 사용법에 대한 도움을 부탁드립니다.

목록
  • Lisp전문가 4일 전 2025.05.28 03:54
  • 66
    1
저는 ReflectionClass::newInstanceWithoutConstructor 메소드를 사용하여 객체를 생성하고자 하는데, 제대로 동작하지 않는 것 같습니다.

이 메소드는 객체를 생성하기 위해 constructor를 호출하지 않고, ReflectionClass::newInstance 메소드와 비슷하게 동작합니다.

하지만, newInstance 메소드와의 차이점을 모르겠습니다. newInstance 메소드는 constructor를 호출하여 객체를 생성하지만, newInstanceWithoutConstructor 메소드는 constructor를 호출하지 않고 객체를 생성합니다.

newInstanceWithoutConstructor 메소드를 사용하여 객체를 생성하는 방법은 어떻게 되나요?

아래의 예제코드를 사용하여 객체를 생성하려고 합니다.

php

$reflectionClass = new ReflectionClass('MyClass');

$obj = $reflectionClass->newInstanceWithoutConstructor();



위의 코드를 사용하여 객체를 생성하려고 하는데, 제대로 동작하지 않습니다.

newInstanceWithoutConstructor 메소드는 어떤 경우에 사용해야 하는가요?

혹시 newInstance 메소드와의 차이점을 알려주시면 감사하겠습니다.

위의 예제코드를 사용하여 객체를 생성하는 방법을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  4일 전



    newInstanceWithoutConstructor 메소드는 PHP 5.1.3 이상에서 사용할 수 있습니다. 이 메소드는 ReflectionClass에 대한 인스턴스를 생성하는 데 사용됩니다.

    newInstanceWithoutConstructor 메소드는 인스턴스를 생성하기 위해 클래스의 생성자를 호출하지 않습니다. 대신, 클래스의 private 멤버 변수를 초기화합니다.

    newInstance 메소드와의 차이점은, newInstance 메소드는 클래스의 생성자를 호출하여 인스턴스를 생성합니다. 반면, newInstanceWithoutConstructor 메소드는 클래스의 private 멤버 변수를 초기화하여 인스턴스를 생성합니다.

    newInstanceWithoutConstructor 메소드는 다음 경우에 사용할 수 있습니다.

    - 클래스의 생성자가 private이거나 protected으로 선언되어 있으면 newInstance 메소드를 사용할 수 없습니다. 이 경우 newInstanceWithoutConstructor 메소드를 사용하여 인스턴스를 생성할 수 있습니다.
    - 클래스의 생성자가 인자로 받는 매개변수가 많거나 복잡한 경우 newInstance 메소드를 사용할 수 없습니다. 이 경우 newInstanceWithoutConstructor 메소드를 사용하여 인스턴스를 생성할 수 있습니다.

    위의 예제코드를 사용하여 객체를 생성하는 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    $reflectionClass = new ReflectionClass('MyClass');
    
    $obj = $reflectionClass->newInstanceWithoutConstructor();
    
    
    
    // 또는
    
    
    
    $obj = $reflectionClass->newInstanceArgs(array());
    
    


    위의 코드는 MyClass 클래스의 private 멤버 변수를 초기화하여 인스턴스를 생성합니다.

    #hostingforum.kr
    php
    
    class MyClass {
    
        private $var1;
    
        private $var2;
    
    
    
        public function __construct() {
    
            $this->var1 = 'value1';
    
            $this->var2 = 'value2';
    
        }
    
    }
    
    


    위의 코드는 MyClass 클래스의 private 멤버 변수를 초기화하여 인스턴스를 생성합니다.

    #hostingforum.kr
    php
    
    $reflectionClass = new ReflectionClass('MyClass');
    
    $obj = $reflectionClass->newInstanceWithoutConstructor();
    
    
    
    echo $obj->var1 . "n"; // value1
    
    echo $obj->var2 . "n"; // value2
    
    

    2025-05-28 03:55

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

검색

게시물 검색