我搜索了几个小时,我无法弄清楚PHP中的“流上下文”是什么。我正在尝试使用API,它涉及使用这个“流上下文”。
文档说:
上下文是一组参数和特定于包装器的选项,用于修改或增强流的行为。
这是我正在谈论的代码:
// Encode the credentials and create the stream context.
$auth = base64_encode("$acctKey:$acctKey");
$data = array(
'http' => array(
'request_fulluri' => true,
// ignore_errors can help debug – remove for production. This option added in PHP 5.2.10
'ignore_errors' => true,
'header' => "Authorization: Basic $auth")
);
$context = stream_context_create($data);
// Get the response from Bing.
$response = file_get_contents($requestUri, 0, $context);
答案 0 :(得分:7)
修改流属性的上下文参数。
选项特定于流使用的任何包装器。这些示例包括文件,所有不同的php://
URI,HTTP包装器(如执行file_get_contents('http://example.com')
时 - 它与file_get_contents('some-file.txt')
不同)
任何流!
在这种情况下,流上下文将传递给file_get_contents
,告诉它将该授权标头和那些选项发送到包装器,允许file_get_contents
从HTTP URL获取内容。
您可以找到HTTP上下文选项列表on the PHP website。
答案 1 :(得分:7)
我花了一些时间来理解PHP的流上下文选项和包装器。我写了一篇文章,讲述了什么帮助我最终围绕how to understand PHP stream contexts options and wrappers。我希望它有所帮助。
要正确处理下线(流数据),您需要适当的代码来处理传递的不同类型的项目(数据类型)。处理每种不同类型数据类型的工具是“参数”。
“上下文”取决于传递的内容(流式传输)。因此,对于“流式传输”(传递)“参数”(处理所需工具)的不同“上下文”(项目种类),“数据类型”(项目类型)将发生变化。
术语上下文简单地提到了这样一个事实:对于不同的数据类型,情况是唯一的,具有自己的必需参数。
PHP流包装器需要一个上下文才能知道处理数据类型需要哪些参数。
答案 2 :(得分:1)
http,request_fulluri,ignore_errors,header都是参数。 它们改变了函数的方式(在这种情况下为file_get_contents)。
特定于包装器的选项类似于“http” - 你不会在文件系统文件流上使用它,因为它不适用。
流是数据本身的传输,当file_get_contents打开连接,传输所有内容等时发生...