Stream_Filter_Register를 사용하면 개발자가 이름을 정의하고 클래스를 연결하여 사용자 정의 필터 동작을 구현할 수 있습니다. 기본 사용량은 다음과 같습니다.
<code> stream_filter_register ( 'myfilter', 'myfilterclass'); </코드>등록이 성공하면 MyFilter 라는 이름으로 필터를 적용 할 수 있습니다.
stream_filter_register 의 두 번째 매개 변수는 자동으로로드 할 수있는 정의 된 클래스 이름이어야합니다. 통과 한 수업이 존재하지 않거나 제대로 소개되지 않으면 등록이 실패합니다.
해결책:
클래스가 정의되고 클래스 파일이 자동 로딩을 사용하여 올바르게 포함되거나로드되었는지 확인하십시오.
네임 스페이스가 올바른지 확인하면 클래스 이름으로 전달 된 매개 변수에는 전체 네임 스페이스가 포함되어야합니다.
예:
<code> <? php request_once 'myfilterclass.php'; // 클래스 정의 파일이 포함되어 있는지 확인하십시오. stream_filter_register ( 'myfilter', 'myfilterclass');
?>
</코드>
사용자 정의 필터 클래스는 php_user_filter 에서 상속되어야합니다. 그렇지 않으면 등록이 실패합니다.
해결책:
필터 클래스는 php_user_filter를 상속하고 필요한 메소드 필터 () 를 구현해야합니다.
예:
<code> <? php class myfilterclass 확장 php_user_filter {public function filter ($ in, $ out, & $ fureed, $ closing) {// 필터링 logic}}?> </code>같은 이름의 필터를 등록하기 위해 Stream_Filter_Register를 여러 번 호출하면 등록이 실패합니다.
해결책:
등록하기 전에 stream_get_filters ()를 사용하여 필터가 등록되었는지 확인할 수 있습니다.
또는 프로그램 충돌을 피하기 위해 등록 할 때 예외 캡처를 사용하십시오.
예:
<code> <? php $ filters = stream_get_filters (); if (! in_array ( 'myfilter', $ filters)) {stream_filter_register ( 'myfilter', 'myfilterclass'); }?> </code>일부 이전 버전의 PHP 또는 특수 PHP 구성에서는 사용자 정의 스트림 필터가 지원되지 않을 수 있습니다.
해결책:
PHP 버전이 Stream_Filter_register (PHP5.0.0+ 지원)를 지원하는지 확인하십시오.
흐름 필터 관련 기능이 비활성화되지 않았는지 확인하십시오.
php.ini 구성의 disable_factions가 함수를 비활성화하는지 확인하십시오.
때로는 코드 실행 순서, 범위 또는 환경 권한 제한으로 인한 실패입니다.
해결책:
등록 코드가 적시에 실행되고 자동로드 또는 클래스 정의가 아직 유효하지 않은 경우 등록되지 않도록하십시오.
CLI와 웹 환경의 차이가 다른 경우 별도로 테스트하십시오.
PHP 운영 환경에 충분한 권한이 있는지 확인하십시오.
stream_filter_register 등록이 실패하면 다음 사항이 선호됩니다.
사용자 정의 필터 클래스가 존재하며 올바르게로드됩니다.
필터 클래스가 php_user_filter 에서 상속되는지 여부.
동일한 이름의 필터가 반복적으로 등록되었는지 여부.
PHP 버전 및 구성 이이 기능을 지원하는지 여부.
코드 실행 타이밍 및 환경 권한 문제.
위의 핵심 포인트를 마스터 한 후 기본적으로 대부분의 등록 실패 문제를 찾아서 해결할 수있어 사용자 정의 흐름 필터가 적절한 역할을 수행 할 수 있습니다.