4

文档说什么

从阅读 php.net 看来,stream_context_set_params 几乎与 stream_context_set_option 做同样的事情。IE。

http://www.php.net/manual/en/function.stream-context-set-params.php

bool stream_context_set_params ( resource $stream_or_context , array $params )

http://www.php.net/manual/en/function.stream-context-set-option.php

bool stream_context_set_option ( resource $stream_or_context , array $options )

stream_context_set_option支持不支持的附加参数,stream_context_set_params否则它们似乎在做同样的事情。至少在理论上。

我的测试显示什么

我自己的测试会提出其他建议,实际上让我想知道stream_context_set_params实际做了什么(如果有的话)。

使用stream_context_set_params...

<?php
$ctx = stream_context_create();
stream_context_set_params($ctx, array('zz' => array('zz' => 'zz')));
print_r(stream_context_get_options($ctx));

打印出以下内容(这让我感到惊讶):

Array
(
)

使用stream_context_set_option...

<?php
$ctx = stream_context_create();
stream_context_set_option($ctx, array('zz' => array('zz' => 'zz')));
print_r(stream_context_get_options($ctx));

打印出以下内容(如我所料):

Array
(
    [zz] => Array
        (
            [zz] => zz
        )

)

所以我真的一点头绪都没有。有任何想法吗?

4

1 回答 1

0

bool stream_context_set_params ( resource $stream_or_context , array $params )

这次它只需要'通知'参数键,并由stream_notification_callback.

您可以在此处查看支持的上下文参数列表:http: //php.net/manual/en/context.params.php

<?php $opts = array(
        'http'=>array(
            'method'=>"GET",
            'header'=>"Accept-language: en\r\n" .
                "Cookie: foo=bar\r\n"
        ),
    );

    $context = stream_context_create($opts);
    stream_context_set_params($context
        , ['notification' => 'your_call_back_notification']
    );


    var_dump(stream_context_get_params($context));

输出:

Array(
[notification] => your_call_back_notification
[options] => Array
    (
        [http] => Array
            (
                [method] => GET
                [header] => Accept-language: en
                            Cookie: foo=bar

            )

    )
)

您可能会收到通知回调的警告错误,它必须是有效的可调用对象。查看http://php.net/manual/en/function.stream-notification-callback.php了解更多信息。

于 2015-03-15T06:43:53.327 回答