현재 위치: > 최신 기사 목록> 사용자 정의 스트림 래퍼에 전달 된 컨텍스트 매개 변수 가져 오기

사용자 정의 스트림 래퍼에 전달 된 컨텍스트 매개 변수 가져 오기

M66 2025-06-02

php에서 stream_context_get_options 함수를 사용하면 현재 스트림 컨텍스트에 대한 모든 옵션을 얻을 수 있습니다. 이것은 컨텍스트를 통해 스트림에 전달 된 매개 변수를 읽을 수 있으므로 사용자 정의 스트림 래퍼를 개발하는 데 매우 유용합니다.

이 기사는 Stream_Context_get_options 함수를 사용하여 사용자 정의 스트림 래퍼에 전달 된 컨텍스트 매개 변수를 얻고 샘플 코드를 통해 설명하는 방법을 자세히 소개합니다.

1. 스트림 래퍼와 컨텍스트 란 무엇입니까?

PHP에서 스트림 래퍼는 PHP가 스트림 리소스에 액세스하기 위해 사용하는 인터페이스입니다. 예를 들어, 공통 HTTP , FTP파일 프로토콜은 스트림 래퍼를 통해 모두 액세스 할 수 있습니다. 스트림 컨텍스트는 스트림의 동작에 영향을 미치기 위해 스트림 작업과 관련된 일련의 매개 변수 세트입니다. 컨텍스트 매개 변수에는 시간 초과, 프록시 서버 등과 같은 정보가 포함될 수 있습니다.

2. 사용자 정의 스트림 래퍼를 만듭니다

시작하기 전에 간단한 사용자 정의 스트림 래퍼를 만듭니다. 사용자 정의 스트림 래퍼를 사용하면 임의의 스트림 작업을 처리하고 컨텍스트를 통해 사용자 정의 매개 변수를 전달할 수 있습니다.

 class MyStreamWrapper {
    private $context;
    private $file;

    public function stream_open($path, $mode, $options, &$opened_path) {
        // 통과 된 컨텍스트를 얻으십시오
        $this->context = stream_context_get_options($this->context);
        echo "Stream open with context options:\n";
        print_r($this->context);
        return true;
    }

    public function stream_write($data) {
        // 실제 쓰기 작업
        echo "Writing data: " . $data;
        return strlen($data);
    }

    public function stream_set_option($option, $arg1, $arg2) {
        return false;
    }

    public function stream_close() {
        echo "Stream closed.\n";
    }
}

// 커스텀 등록wrapper
stream_wrapper_register("mystream", "MyStreamWrapper") or die("Failed to register protocol");

3. 컨텍스트 매개 변수를 사용하십시오

스트림 컨텍스트를 통해 매개 변수를 전달할 수 있습니다. stream_context_create 함수를 통해 컨텍스트를 작성하여 사용자 정의 스트림으로 전달하십시오.

 $options = [
    "http" => [
        "header" => "User-Agent: CustomUserAgent",
        "timeout" => 60
    ]
];

$context = stream_context_create($options);

// 스트림을 열 때 컨텍스트를 통과하십시오
$fp = fopen("mystream://some/path", "r", false, $context);

// 컨텍스트 옵션을 얻으십시오
$context_options = stream_context_get_options($context);
echo "Context options:\n";
print_r($context_options);

이 예에서는 HTTP 컨텍스트의 구성을 사용자 정의 스트림으로 전달합니다. Custom Stream의 Stream_Open 메소드에서는 Stream_Context_get_options를 통해 이러한 전달 된 컨텍스트 매개 변수를 얻습니다.

4. 컨텍스트 매개 변수 분석 및 출력

컨텍스트 옵션을 얻은 후에는 구문 분석하고 처리 할 수 ​​있습니다. 다음은 컨텍스트로 전달 된 옵션을 구문 분석하고 인쇄하는 방법입니다.

 // 컨텍스트 옵션을 얻으십시오
$options = stream_context_get_options($context);
foreach ($options as $protocol => $params) {
    echo "Protocol: $protocol\n";
    foreach ($params as $key => $value) {
        echo "  $key => $value\n";
    }
}

5. 결과 출력

위의 코드를 실행하면 출력이 다음과 같습니다.

 Stream open with context options:
Array
(
    [http] => Array
        (
            [header] => User-Agent: CustomUserAgent
            [timeout] => 60
        )
)
Context options:
Protocol: http
  header => User-Agent: CustomUserAgent
  timeout => 60

6. 요약

stream_context_get_options 함수를 통해 PHP를 통해 PHP는 사용자 정의 스트림 래퍼에 전달 된 컨텍스트 매개 변수를 얻고 조작 할 수 있습니다. 이것은 맞춤형 스트리밍 동작이 필요한 응용 프로그램에 매우 유용합니다. 복잡한 요구를 충족시키기 위해 이러한 방식으로 스트리밍 작업을위한 다양한 옵션을 유연하게 구성 할 수 있습니다.