문제

나는 현재 다음을 수행 할 수 있습니다.

class SubClass extends SuperClass {
  function __construct() {
    parent::__construct();
  }
}

class SuperClass {
  function __construct() {
    // this echoes "I'm SubClass and I'm extending SuperClass"
    echo 'I\'m '.get_class($this).' and I\'m extending '.__CLASS__;
  }
}

파일 이름과 비슷한 일을하고 싶습니다 (__FILE__, 그러나 동적으로 평가); 슈퍼 클래스에서 서브 클래스가 어떤 파일에 존재하는지 알고 싶습니다. 우아한 방식으로 가능합니까?

나는 당신이 무언가를 할 수 있다는 것을 알고 있습니다 get_included_files(), 그러나 특히 수많은 인스턴스가있는 경우 그다지 효율적이지 않습니다.

도움이 되었습니까?

해결책

반사를 사용할 수 있습니다.

$ref = new ReflectionObject($this);
$ref->getFileName(); // return the file where the object's class was declared

다른 팁

어, 내가 생각할 수있는 것은 아닙니다. 각 서브 클래스는 반환 된 명시 적으로 구현 된 방법이 있어야합니다. __FILE__, 처음에는 상속 요점을 완전히 물리칩니다.

나는 또한 왜 이와 같은 것이 유용한 지 궁금합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top