함수 내부에서 함수가 호출되는 범위를 결정하는 방법이 있습니까? (또는 방법, 나는 나머지 게시물에서 의미하는 기능을 사용합니다.)PHP에서 호출 범위 결정
내가 싫어하는 것은 __FILE__
또는 __CLASS__
상수를 함수에 전달해야한다는 것입니다. 이 정보는 스택 트레이스 등에서 사용할 수 있으므로 어딘가에 떠 다니는 것을 알 수 있습니다.하지만 런타임에 예외를 던지지 않고 인트로 스펙 션하는 방법을 알고 싶습니다.
솔루션에 대한 성능 특성이있는 경우 해당 특성도 알고 싶습니다.
내가 관심이 사용 사례가 있습니다.
- 함수 호출을 시작한 클래스 유형을 결정
- 내 함수를 호출하는 파일/라인/기능 결정
기본적으로 내가 원하는 것은 다음과 같습니다.
class util
{
public static function checkScope()
{
echo $magic_scope_stuff;
}
public static function blah()
{
util::checkScope();
}
}
util::checkScope(); // main, line 14
util::blah(); // class util, line 9
가능한 복제본 [다른 클래스의 메소드를 호출 한 클래스를 찾으십시오.] (http://stackoverflow.com/questions/1214043/find-out-which-class-called-a-method-in-another- 클래스) – Gordon
이 질문은 지금 당장 요청되며, 따라서 더 많은 중복이 있어야합니다. 그렇게 필사적으로 원하신다면,'debug_backtrace'를 남용하십시오. 그러나 일반적으로 그 필요성을 갖는 것은 디자인 냄새입니다. PHP에 이러한 기능을 구현하는 방법은 php.internals에서도 논의되고 거부되었습니다. http://marc.info/?l=php-internals&m=125313473914294&w=3 – Gordon
@Gordon 독서 자료를 제공해 주셔서 감사합니다. – cbednarski