php에서 stream_context_get_options 함수를 사용하면 현재 스트림 컨텍스트에 대한 모든 옵션을 얻을 수 있습니다. 이것은 컨텍스트를 통해 스트림에 전달 된 매개 변수를 읽을 수 있으므로 사용자 정의 스트림 래퍼를 개발하는 데 매우 유용합니다.
이 기사는 Stream_Context_get_options 함수를 사용하여 사용자 정의 스트림 래퍼에 전달 된 컨텍스트 매개 변수를 얻고 샘플 코드를 통해 설명하는 방법을 자세히 소개합니다.
PHP에서 스트림 래퍼는 PHP가 스트림 리소스에 액세스하기 위해 사용하는 인터페이스입니다. 예를 들어, 공통 HTTP , FTP 및 파일 프로토콜은 스트림 래퍼를 통해 모두 액세스 할 수 있습니다. 스트림 컨텍스트는 스트림의 동작에 영향을 미치기 위해 스트림 작업과 관련된 일련의 매개 변수 세트입니다. 컨텍스트 매개 변수에는 시간 초과, 프록시 서버 등과 같은 정보가 포함될 수 있습니다.
시작하기 전에 간단한 사용자 정의 스트림 래퍼를 만듭니다. 사용자 정의 스트림 래퍼를 사용하면 임의의 스트림 작업을 처리하고 컨텍스트를 통해 사용자 정의 매개 변수를 전달할 수 있습니다.
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");
스트림 컨텍스트를 통해 매개 변수를 전달할 수 있습니다. 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를 통해 이러한 전달 된 컨텍스트 매개 변수를 얻습니다.
컨텍스트 옵션을 얻은 후에는 구문 분석하고 처리 할 수 있습니다. 다음은 컨텍스트로 전달 된 옵션을 구문 분석하고 인쇄하는 방법입니다.
// 컨텍스트 옵션을 얻으십시오
$options = stream_context_get_options($context);
foreach ($options as $protocol => $params) {
echo "Protocol: $protocol\n";
foreach ($params as $key => $value) {
echo " $key => $value\n";
}
}
위의 코드를 실행하면 출력이 다음과 같습니다.
Stream open with context options:
Array
(
[http] => Array
(
[header] => User-Agent: CustomUserAgent
[timeout] => 60
)
)
Context options:
Protocol: http
header => User-Agent: CustomUserAgent
timeout => 60
stream_context_get_options 함수를 통해 PHP를 통해 PHP는 사용자 정의 스트림 래퍼에 전달 된 컨텍스트 매개 변수를 얻고 조작 할 수 있습니다. 이것은 맞춤형 스트리밍 동작이 필요한 응용 프로그램에 매우 유용합니다. 복잡한 요구를 충족시키기 위해 이러한 방식으로 스트리밍 작업을위한 다양한 옵션을 유연하게 구성 할 수 있습니다.