클래스가 정의된 PHP 파일(실행 시) 찾기
PHP에 특정 클래스(또는 함수)가 정의된 PHP 파일을 찾을 수 있는 반사/내성/매직이 있습니까?
즉, PHP 클래스 또는 인스턴스화된 객체의 이름을 가지고 있습니다.클래스가 정의된 파일 시스템 경로를 반환하는 항목(함수, 반사 클래스 등)에 전달합니다.
/path/to/class/definition.php
(을) 사용할 수 있다는 것을 깨달았습니다.get_included_files())지금까지 포함된 모든 파일의 목록을 가져오고 모든 파일을 수동으로 구문 분석합니다. 단 한 번의 시도에는 많은 파일 시스템 액세스가 필요합니다.
또한 이 정보를 캐시하는 __autoload 메커니즘에 추가 코드를 작성할 수도 있습니다.단, 기존 __autoload를 변경하는 것은 제가 생각하는 상황에서는 허용되지 않습니다.
이 기능을 사용할 수 있는 확장에 대해 들어보는 것도 좋지만, 궁극적으로는 "스톡" 설치에서 실행할 수 있는 것을 원합니다.
해라ReflectionClass
- Reflection Class : : get File Name :파일명을 가져옵니다.
예:
class Foo {}
$reflector = new \ReflectionClass('Foo');
echo $reflector->getFileName();
이것은 돌아올 것이다.false예를 들어 네이티브 클래스에서 파일 이름을 찾을 수 없는 경우
namesched 파일의 ReflectionClass의 경우 접두사 "\"를 추가하여 다음과 같이 글로벌하게 만듭니다.
$syslog = new \Reflection Class('FOO');
그렇지 않으면 정의되지 않은 네임스페이스에 ReflectionClass라는 오류가 생성됩니다.위 답변에 대해 코멘트를 할 권한이 없었기 때문에 보충 답변으로 이 글을 씁니다.
리플렉터를 사용하여 다음과 같은 기능을 구축할 수 있습니다.
function file_by_function( $function_name ){
if( function_exists( $function_name ) ){
$reflector = new \ReflectionFunction( $function_name );
}
elseif( class_exists( $function_name ) ){
$reflector = new \ReflectionClass( $function_name );
}
else{
return false;
}
return $reflector->getFileName();
}
file_by_function('Foo')은 Foo가 함수 또는 클래스인 경우 Foo가 정의된 파일 경로를 반환하고 파일을 찾을 수 없는 경우 false를 반환합니다.
includes 폴더가 있는 경우 셸 스크립트명령어를 실행하여 "class $className"에 대해 "grep"할 수 있습니다.$filename = ``grep -r "class $className" $includesFolder/*\그게 어떤 파일에 들어있는지 알 수 있어요그 외에는 PHP가 대신 할 수 있는 매직 기능은 없다고 생각합니다.
언급URL : https://stackoverflow.com/questions/2420066/finding-the-php-file-at-run-time-where-a-class-was-defined
'programing' 카테고리의 다른 글
| MySQL Workbench에서 테이블 생성 스크립트를 가져오려면 어떻게 해야 합니까? (0) | 2022.10.23 |
|---|---|
| Java에서 명명된 매개 변수 관용어 (0) | 2022.10.23 |
| MySQL: 쿼리에서 열 이름 또는 별칭 가져오기 (0) | 2022.10.23 |
| Python에서 트리를 구현하려면 어떻게 해야 하나요? (0) | 2022.10.23 |
| PHP MYSQL UPDATE(존재하는 경우) 또는 INSERT(존재하지 않는 경우)? (0) | 2022.10.23 |