현재 위치: > 최신 기사 목록> Stream_wrapper_register와 함께 Stream_get_filters 및 Stream_wrapper_register를 사용하십시오

Stream_wrapper_register와 함께 Stream_get_filters 및 Stream_wrapper_register를 사용하십시오

gitbox 2025-05-27

PHP에서 Stream은 파일, 네트워크 연결, 메모리 데이터 등과 같은 다양한 유형의 데이터를 처리 할 수있는 매우 강력하고 유연한 기능입니다. 스트림은 데이터 읽기, 쓰기 및 변환과 같은 작업을 처리하는 데 매우 편리한 API를 제공합니다. 이러한 작업에서 Stream_get_FiltersStream_Wrapper_Register 함수는 사용자 정의 스트림 처리 기능을 구현하는 키입니다. 이 기사는이 두 기능의 조합을 통해 사용자 정의 스트림 처리 기능을 구현하는 방법을 자세히 소개합니다.

1. 스트림 필터 란 무엇입니까?

PHP에서 스트림 필터를 사용하면 스트림에서 읽거나 쓰기 전에 데이터를 수정할 수 있습니다. 스트림 필터는 텍스트 인코딩, 암호화 및 암호 해독, 데이터 압축 및 데이터 형식 변환과 같은 작업을 처리하는 데 사용될 수 있습니다. PHP는 String.toupper (문자열 변환) 등과 같은 여러 내장 스트림 필터를 제공합니다.

2. stream_get_filters 함수

stream_get_filters 함수는 현재 사용 가능한 스트림 필터 목록을 반환하는 데 사용됩니다. 이 기능을 통해 시스템에서 지원되는 스트림 필터를 확인한 다음 스트림에 적용 할 적절한 필터를 선택할 수 있습니다.

문법:

 array stream_get_filters(void)

반품 값 :

이 함수는 현재 등록 된 모든 스트림 필터 이름을 포함하는 배열을 반환합니다.

예:

 $filters = stream_get_filters();
print_r($filters);

이 코드는 현재 지원되는 모든 스트림 필터의 이름을 출력합니다.

3. stream_wrapper_register 함수

stream_wrapper_register 함수는 사용자 정의 스트림 래퍼를 등록하는 데 사용됩니다. 이 기능을 사용하면 PHP가 특정 유형의 스트림을 처리 할 수 ​​있도록 사용자 정의 프로토콜을 만들 수 있습니다. 사용자 정의 스트림 래퍼는 스트림 필터와 함께 사용하여 완전히 사용자 정의 된 데이터 처리 흐름을 생성 할 수 있습니다.

문법:

 bool stream_wrapper_register ( string $protocol , string $classname )
  • $ 프로토콜 : 파일 , http 등 등록 할 프로토콜 이름.

  • $ className : StreamWrapper 인터페이스를 구현하는 클래스 이름입니다.

예:

 class MyStreamWrapper {
    // 사용자 정의 스트림 처리 로직을 구현하십시오
}

stream_wrapper_register("myprotocol", "MyStreamWrapper");

위의 예에서는 MyProtocol 이라는 프로토콜을 등록하여 Custom MyStreamWrapper 클래스와 연결합니다. 현재 MyProtocol : // 로 시작하는 모든 URL은 처리를 위해 MyStreamWrapper 클래스에 양도됩니다.

4. Stream_get_FiltersStream_Wrapper_Register를 조합하여 사용하십시오

Stream_get_FiltersStream_Wrapper_Register를 사용하여 사용자 정의 스트림 처리 중에 스트림 필터를 유연하게 추가, 제거 또는 선택하여 특정 요구 사항을 충족시킬 수 있습니다.

예 : 사용자 정의 프로토콜을 만들고 필터를 적용하십시오

사용자 정의 스트림 프로토콜 MyProtocol을 작성하고 스트림 필터를 적용해야한다고 가정하십시오. 우리는 다음과 같이 할 수 있습니다.

 class MyStreamWrapper {
    private $stream;

    public function stream_open($path, $mode, $options, &$opened_path) {
        // 열린 스트림
        $this->stream = fopen($path, $mode);
        return $this->stream !== false;
    }

    public function stream_read($count) {
        return fread($this->stream, $count);
    }

    public function stream_write($data) {
        return fwrite($this->stream, $data);
    }

    public function stream_close() {
        fclose($this->stream);
    }
}

// 사용자 정의 스트림 래퍼를 등록하십시오
stream_wrapper_register("myprotocol", "MyStreamWrapper");

// 흐름 필터 사용
$filters = stream_get_filters();
if (in_array('string.toupper', $filters)) {
    stream_filter_append($this->stream, 'string.toupper');
}

// 사용자 정의 프로토콜 파일을 엽니 다
$file = fopen("myprotocol://example.txt", "r+");
$content = fread($file, 100);
echo $content;
fclose($file);

위의 예에서는 myProtocol 이라는 사용자 정의 스트림 프로토콜과 String.toupper 스트림 필터가 사용 가능한지 확인하기 위해 myProtocol과 사용하였습니다. 사용 가능한 경우 Stream_Filter_Append를 통해 필터를 적용하여 읽기 내용이 자동으로 대문자로 변환됩니다.

5. 요약

Stream_get_FiltersStream_Wrapper_Register 를 사용하여 특정 데이터 처리 요구를 충족시키기 위해 유연한 사용자 정의 스트림 처리 기능을 만들 수 있습니다. Stream_get_Filters는 스트림 필터 관리 기능을 제공하는 반면 Stream_Wrapper_Register를 사용하면 사용자 지정 프로토콜에 맞춤형 스트림 작업을 구현할 수 있습니다. 이 둘의 조합은 스트림 처리에서 PHP의 기능을 크게 확장하고 코드의 확장 성과 유연성을 향상시킬 수 있습니다.