için bir test dizisi olarak özel bir akış sarmalayıcısı kullanarak, yerleşik http://
akış sargısını kullanan bir HTTP istemci sınıfı için birim sınamalarında bir saplama olarak kullanmak üzere özel bir akış sarıcısı yazdım.PHP'nin http: // akış sarıcısı
Özel olarak, özel akış sarmalayıcısı tarafından oluşturulan akışlarda stream_get_meta_data
numaralı çağrılara yapılan 'wrapper_data'
anahtarında döndürülen değer üzerinde denetim ihtiyacım var. Ne yazık ki, özel akış paketleyicileriyle ilgili belgeler kötüye gidiyor ve API beklenmedik görünüyor.
Özel bir sarıcıda hangi yöntem meta wrapper_data
yanıtını denetler? Ben özel sargı ile oluşturulan akışlarında var_dump(stream_get_meta_data($stream));
...
array(10) {
'wrapper_data' =>
class CustomHttpStreamWrapper#5 (3) {
public $context =>
resource(13) of type (stream-context)
public $position =>
int(0)
public $bodyData =>
string(14) "test body data"
}
...
Ama verimli içine sarmalayıcı koaksiyel gerektiğinde altındaki sınıfını kullanma
Sadece şu sonuç almak mümkün oldum gerçek http://
akışı sarmalayıcı tarafından döndürülen verilerin istemci sınıfının ayrıştırmayı test böylece meta veri alma aşağıdaki gibi bir şey ... İşte
array(10) {
'wrapper_data' => Array(
[0] => HTTP/1.1 200 OK
[1] => Content-Length: 438
)
...
Ben özel sarmalayıcı için şu anda sahip kod:
class CustomHttpStreamWrapper {
public $context;
public $position = 0;
public $bodyData = 'test body data';
public function stream_open($path, $mode, $options, &$opened_path) {
return true;
}
public function stream_read($count) {
$this->position += strlen($this->bodyData);
if ($this->position > strlen($this->bodyData)) {
return false;
}
return $this->bodyData;
}
public function stream_eof() {
return $this->position >= strlen($this->bodyData);
}
public function stream_stat() {
return array('wrapper_data' => array('test'));
}
public function stream_tell() {
return $this->position;
}
}
? [Docs] (http://www.php.net/manual/en/streamwrapper.stream-metadata.php) tersi de olsa, yardımcı olabilir. – Christian
Çok iyi niyetlerini onurlandırıyorum! – hakre