1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
httpclient.php
См. документацию.
1<?php
2
9
10namespace Bitrix\Main\Web;
11
12use Bitrix\Main\IO;
13use Bitrix\Main\Config\Configuration;
14use Bitrix\Main\ArgumentException;
15use Psr\Log;
16use Psr\Http\Message\RequestInterface;
17use Psr\Http\Message\ResponseInterface;
18use Psr\Http\Client\ClientInterface;
19use Psr\Http\Client\ClientExceptionInterface;
20use Psr\Http\Client\NetworkExceptionInterface;
21use Http\Promise\Promise as PromiseInterface;
22
23class HttpClient implements Log\LoggerAwareInterface, ClientInterface, Http\DebugInterface
24{
25 use Log\LoggerAwareTrait;
27
28 const HTTP_1_0 = '1.0';
29 const HTTP_1_1 = '1.1';
30
31 const HTTP_GET = 'GET';
32 const HTTP_POST = 'POST';
33 const HTTP_PUT = 'PUT';
34 const HTTP_HEAD = 'HEAD';
35 const HTTP_PATCH = 'PATCH';
36 const HTTP_DELETE = 'DELETE';
37 const HTTP_OPTIONS = 'OPTIONS';
38
42
43 protected $proxyHost = '';
44 protected $proxyPort = 80;
45 protected $proxyUser = '';
46 protected $proxyPassword = '';
47 protected $socketTimeout = self::DEFAULT_SOCKET_TIMEOUT;
48 protected $streamTimeout = self::DEFAULT_STREAM_TIMEOUT;
49 protected $waitResponse = true;
50 protected $redirect = true;
51 protected $redirectMax = 5;
52 protected $redirectCount = 0;
53 protected $compress = false;
54 protected $version = self::HTTP_1_1;
55 protected $requestCharset = '';
56 protected $sslVerify = true;
57 protected $bodyLengthMax = 0;
58 protected $privateIp = true;
59 protected $contextOptions = [];
60 protected $outputStream = null;
61 protected $useCurl = false;
62 protected $curlLogFile = null;
63 protected $shouldFetchBody = null;
64 protected $sendEvents = true;
66
68 protected ?Http\Request $request = null;
69 protected ?Http\Response $response = null;
70 protected ?Http\Queue $queue = null;
71 protected ?IpAddress $effectiveIp = null;
72 protected $effectiveUrl;
73 protected $error = [];
74
101 public function __construct(array $options = null)
102 {
103 $this->headers = new HttpHeaders();
104
105 if ($options === null)
106 {
107 $options = [];
108 }
109
110 $defaultOptions = Configuration::getValue('http_client_options');
111 if ($defaultOptions !== null)
112 {
113 $options += $defaultOptions;
114 }
115
116 if (!empty($options))
117 {
118 if (isset($options['redirect']))
119 {
120 $this->setRedirect($options["redirect"], $options["redirectMax"] ?? null);
121 }
122 if (isset($options['waitResponse']))
123 {
124 $this->waitResponse($options['waitResponse']);
125 }
126 if (isset($options['socketTimeout']))
127 {
128 $this->setTimeout($options['socketTimeout']);
129 }
130 if (isset($options['streamTimeout']))
131 {
132 $this->setStreamTimeout($options['streamTimeout']);
133 }
134 if (isset($options['version']))
135 {
136 $this->setVersion($options['version']);
137 }
138 if (isset($options['proxyHost']))
139 {
140 $this->setProxy($options['proxyHost'], $options['proxyPort'] ?? null, $options['proxyUser'] ?? null, $options['proxyPassword'] ?? null);
141 }
142 if (isset($options['compress']))
143 {
144 $this->setCompress($options['compress']);
145 }
146 if (isset($options['charset']))
147 {
148 $this->setCharset($options['charset']);
149 }
150 if (isset($options['disableSslVerification']) && $options['disableSslVerification'] === true)
151 {
152 $this->disableSslVerification();
153 }
154 if (isset($options['bodyLengthMax']))
155 {
156 $this->setBodyLengthMax($options['bodyLengthMax']);
157 }
158 if (isset($options['privateIp']))
159 {
160 $this->setPrivateIp($options['privateIp']);
161 }
162 if (isset($options['debugLevel']))
163 {
164 $this->setDebugLevel((int)$options['debugLevel']);
165 }
166 if (isset($options['cookies']))
167 {
168 $this->setCookies($options['cookies']);
169 }
170 if (isset($options['headers']))
171 {
172 $this->setHeaders($options['headers']);
173 }
174 if (isset($options['useCurl']))
175 {
176 $this->useCurl = (bool)$options['useCurl'];
177 }
178 if (isset($options['curlLogFile']))
179 {
180 $this->curlLogFile = $options['curlLogFile'];
181 }
182 if (isset($options['sendEvents']))
183 {
184 $this->sendEvents = (bool)$options['sendEvents'];
185 }
186 if (isset($options['responseBuilder']))
187 {
188 $this->setResponseBuilder($options['responseBuilder']);
189 }
190 }
191
192 if ($this->useCurl && !function_exists('curl_init'))
193 {
194 $this->useCurl = false;
195 }
196 }
197
204 public function get($url)
205 {
206 if ($this->query(Http\Method::GET, $url))
207 {
208 return $this->getResult();
209 }
210 return false;
211 }
212
219 public function head($url)
220 {
221 if ($this->query(Http\Method::HEAD, $url))
222 {
223 return $this->getHeaders();
224 }
225 return false;
226 }
227
236 public function post($url, $postData = null, $multipart = false)
237 {
238 if ($multipart)
239 {
241 if ($postData === false)
242 {
243 return false;
244 }
245 }
246
247 if ($this->query(Http\Method::POST, $url, $postData))
248 {
249 return $this->getResult();
250 }
251 return false;
252 }
253
261 protected function prepareMultipart($postData)
262 {
263 if (is_array($postData))
264 {
265 try
266 {
268 $this->setHeader('Content-type', 'multipart/form-data; boundary=' . $data->getBoundary());
269
270 return $data;
271 }
272 catch (ArgumentException $e)
273 {
274 $this->addError('MULTIPART', $e->getMessage(), true);
275 return false;
276 }
277 }
278
279 return $postData;
280 }
281
290 public function query($method, $url, $entityBody = null)
291 {
292 $this->effectiveUrl = $url;
293 $this->effectiveIp = null;
294 $this->error = [];
295
296 if (is_array($entityBody))
297 {
298 $entityBody = new Http\FormStream($entityBody);
299 }
300
301 if ($entityBody instanceof Http\Stream)
302 {
303 $body = $entityBody;
304 }
305 elseif (is_resource($entityBody))
306 {
307 $body = new Http\Stream($entityBody);
308 }
309 else
310 {
311 $body = new Http\Stream('php://temp', 'r+');
312 $body->write($entityBody ?? '');
313 }
314
315 $this->redirectCount = 0;
316
317 while (true)
318 {
319 //Only absoluteURI is accepted
320 $uri = new Uri($this->effectiveUrl);
321
322 // make a PSR-7 request
323 $request = new Http\Request($method, $uri, $this->headers->getHeaders(), $body, $this->version);
324
325 try
326 {
327 // PSR-18 magic is here
328 $this->sendRequest($request);
329 }
330 catch (ClientExceptionInterface $e)
331 {
332 // compatibility mode
333 if ($e instanceof NetworkExceptionInterface)
334 {
335 $this->addError('NETWORK', $e->getMessage());
336 }
337 return false;
338 }
339
340 if (!$this->waitResponse)
341 {
342 return true;
343 }
344
345 if ($this->redirect && ($location = $this->getHeaders()->get('Location')) != '')
346 {
347 if ($this->redirectCount < $this->redirectMax)
348 {
349 // there can be a different host in Location
350 $this->headers->delete('Host');
351
352 // relative URI is possible according to RFC 9110
353 $this->effectiveUrl = (string)(new Uri($location))->resolveRelativeUri($uri);
354
355 $status = $this->getStatus();
356 if ($status == 302 || $status == 303)
357 {
359 }
360
361 $this->redirectCount++;
362 }
363 else
364 {
365 $this->addError('REDIRECT', "Maximum number of redirects ({$this->redirectMax}) has been reached at URL {$url}", true);
366 return false;
367 }
368 }
369 else
370 {
371 return true;
372 }
373 }
374 }
375
384 public function setHeader($name, $value, $replace = true)
385 {
386 if ($replace || !$this->headers->has($name))
387 {
388 $this->headers->set($name, $value);
389 }
390 return $this;
391 }
392
399 public function setHeaders(array $headers)
400 {
401 foreach ($headers as $name => $value)
402 {
403 $this->setHeader($name, $value);
404 }
405 return $this;
406 }
407
414 {
415 if ($this->request)
416 {
417 return $this->request->getHeadersCollection();
418 }
419 return $this->headers;
420 }
421
425 public function clearHeaders()
426 {
427 $this->headers->clear();
428 }
429
436 public function setCookies(array $cookies)
437 {
438 if (!empty($cookies))
439 {
440 $this->setHeader('Cookie', (new HttpCookies($cookies))->implode());
441 }
442
443 return $this;
444 }
445
453 public function setAuthorization($user, $pass)
454 {
455 $this->setHeader('Authorization', 'Basic ' . base64_encode($user . ':' . $pass));
456 return $this;
457 }
458
466 public function setRedirect($value, $max = null)
467 {
468 $this->redirect = (bool)$value;
469 if ($max !== null)
470 {
471 $this->redirectMax = intval($max);
472 }
473 return $this;
474 }
475
482 public function waitResponse($value)
483 {
484 $this->waitResponse = (bool)$value;
485 if (!$this->waitResponse)
486 {
487 $this->setStreamTimeout(self::DEFAULT_STREAM_TIMEOUT_NO_WAIT);
488 }
489
490 return $this;
491 }
492
499 public function setTimeout($value)
500 {
501 $this->socketTimeout = intval($value);
502 return $this;
503 }
504
511 public function setStreamTimeout($value)
512 {
513 $this->streamTimeout = intval($value);
514 return $this;
515 }
516
523 public function setVersion($value)
524 {
525 $this->version = $value;
526 return $this;
527 }
528
537 public function setCompress($value)
538 {
539 $this->compress = (bool)$value;
540 return $this;
541 }
542
549 public function setCharset($value)
550 {
551 $this->requestCharset = $value;
552 return $this;
553 }
554
560 public function disableSslVerification()
561 {
562 $this->sslVerify = false;
563 return $this;
564 }
565
572 public function setPrivateIp($value)
573 {
574 $this->privateIp = (bool)$value;
575 return $this;
576 }
577
587 public function setProxy($proxyHost, $proxyPort = null, $proxyUser = null, $proxyPassword = null)
588 {
589 $this->proxyHost = $proxyHost;
590 $proxyPort = (int)$proxyPort;
591 if ($proxyPort > 0)
592 {
593 $this->proxyPort = $proxyPort;
594 }
595 $this->proxyUser = $proxyUser ?? '';
596 $this->proxyPassword = $proxyPassword ?? '';
597
598 return $this;
599 }
600
610 public function setOutputStream($handler)
611 {
612 $this->outputStream = $handler;
613 return $this;
614 }
615
623 {
624 $this->bodyLengthMax = intval($bodyLengthMax);
625 return $this;
626 }
627
635 public function download($url, $filePath, string $method = Http\Method::GET, $entityBody = null)
636 {
637 $result = $this->query($method, $url, $entityBody);
638
639 if ($result && ($status = $this->getStatus()) >= 200 && $status < 300)
640 {
641 $this->saveFile($filePath);
642
643 return true;
644 }
645
646 return false;
647 }
648
654 public function saveFile($filePath)
655 {
656 $dir = IO\Path::getDirectory($filePath);
658
659 $file = new IO\File($filePath);
660 $handler = $file->open('w+');
661
662 $this->setOutputStream($handler);
663 $this->getResult();
664
665 $file->close();
666 }
667
673 public function getEffectiveUrl()
674 {
675 return $this->effectiveUrl;
676 }
677
685 {
686 $this->contextOptions = array_replace_recursive($this->contextOptions, $options);
687 return $this;
688 }
689
695 public function getHeaders(): HttpHeaders
696 {
697 if ($this->response)
698 {
699 return $this->response->getHeadersCollection();
700 }
701 return new HttpHeaders();
702 }
703
709 public function getCookies(): HttpCookies
710 {
711 return $this->getHeaders()->getCookies();
712 }
713
719 public function getStatus()
720 {
721 if ($this->response)
722 {
723 return $this->response->getStatusCode();
724 }
725 return 0;
726 }
727
733 public function getResult()
734 {
735 $result = '';
736 if ($this->response)
737 {
738 $body = $this->response->getBody();
739
740 if ($this->outputStream === null)
741 {
742 $result = (string)$body;
743 }
744 elseif ($body instanceof Http\Stream)
745 {
746 $body->copyTo($this->outputStream);
747 }
748 }
749 return $result;
750 }
751
757 public function getResponse()
758 {
759 return $this->response;
760 }
761
767 public function getError()
768 {
769 return $this->error;
770 }
771
777 public function getContentType()
778 {
779 return $this->getHeaders()->getContentType();
780 }
781
787 public function getCharset()
788 {
789 return $this->getHeaders()->getCharset();
790 }
791
797 public function getPeerAddress()
798 {
799 if ($this->effectiveIp)
800 {
801 return (string)$this->effectiveIp;
802 }
803 return false;
804 }
805
806 protected function addError($code, $message, $triggerWarning = false)
807 {
808 $this->error[$code] = $message;
809
810 if ($triggerWarning)
811 {
812 trigger_error($message, E_USER_WARNING);
813 }
814 }
815
816 protected function buildRequest(RequestInterface $request): Http\Request
817 {
818 $method = $request->getMethod();
819 $uri = $request->getUri();
820 $body = $request->getBody();
821
822 $punyUri = new Uri((string)$uri);
823 if (($punyHost = $punyUri->convertToPunycode()) != $uri->getHost())
824 {
825 $uri = $uri->withHost($punyHost);
826 $request = $request->withUri($uri);
827 }
828
829 if (!$request->hasHeader('Host'))
830 {
831 $request = $request->withHeader('Host', $uri->getHost());
832 }
833 if (!$request->hasHeader('Connection'))
834 {
835 $request = $request->withHeader('Connection', 'close');
836 }
837 if (!$request->hasHeader('Accept'))
838 {
839 $request = $request->withHeader('Accept', '*/*');
840 }
841 if (!$request->hasHeader('Accept-Language'))
842 {
843 $request = $request->withHeader('Accept-Language', 'en');
844 }
845 if ($this->compress)
846 {
847 $request = $request->withHeader('Accept-Encoding', 'gzip');
848 }
849 if (($userInfo = $uri->getUserInfo()) != '')
850 {
851 $request = $request->withHeader('Authorization', 'Basic ' . base64_encode($userInfo));
852 }
853 if ($this->proxyHost != '' && $this->proxyUser != '')
854 {
855 $request = $request->withHeader('Proxy-Authorization', 'Basic ' . base64_encode($this->proxyUser . ':' . $this->proxyPassword));
856 }
857
858 // the client doesn't support "Expect-Continue", set empty value for cURL
859 if ($this->useCurl)
860 {
861 $request = $request->withHeader('Expect', '');
862 }
863
864 if ($method == Http\Method::POST)
865 {
866 //special processing for POST requests
867 if (!$request->hasHeader('Content-Type'))
868 {
869 $contentType = 'application/x-www-form-urlencoded';
870 if ($this->requestCharset != '')
871 {
872 $contentType .= '; charset=' . $this->requestCharset;
873 }
874 $request = $request->withHeader('Content-Type', $contentType);
875 }
876 }
877
878 $size = $body->getSize();
879
880 if ($size > 0 || $method == Http\Method::POST || $method == Http\Method::PUT)
881 {
882 // A valid Content-Length field value is required on all HTTP/1.0 request messages containing an entity body.
883 if (!$request->hasHeader('Content-Length'))
884 {
885 $request = $request->withHeader('Content-Length', $size ?? strlen((string)$body));
886 }
887 }
888
889 if ($this->sendEvents)
890 {
891 // Here's the chance to tune up the client and to rebuild the request.
892 $event = new Http\RequestEvent($this, $request, 'OnHttpClientBuildRequest');
893 $event->send();
894
895 foreach ($event->getResults() as $eventResult)
896 {
897 $request = $eventResult->getRequest();
898 }
899 }
900
901 return new Http\Request(
902 $request->getMethod(),
903 $request->getUri(),
904 $request->getHeaders(),
905 $request->getBody(),
906 $request->getProtocolVersion()
907 );
908 }
909
910 protected function checkRequest(RequestInterface $request): bool
911 {
912 $uri = $request->getUri();
913
914 $scheme = $uri->getScheme();
915 if ($scheme !== 'http' && $scheme !== 'https')
916 {
917 $this->addError('URI_SCHEME', 'Only http and https shemes are supported.');
918 return false;
919 }
920
921 if ($uri->getHost() == '')
922 {
923 $this->addError('URI_HOST', 'Incorrect host in URI.');
924 return false;
925 }
926
927 $punyUri = new Uri((string)$uri);
928 $error = $punyUri->convertToPunycode();
929 if ($error instanceof \Bitrix\Main\Error)
930 {
931 $this->addError('URI_PUNICODE', "Error converting hostname to punycode: {$error->getMessage()}");
932 return false;
933 }
934
935 if (!$this->privateIp)
936 {
937 $ip = IpAddress::createByUri($punyUri);
938 if ($ip->isPrivate())
939 {
940 $this->addError('PRIVATE_IP', "Resolved IP is incorrect or private: {$ip->get()}");
941 return false;
942 }
943 $this->effectiveIp = $ip;
944 }
945
946 return true;
947 }
948
952 public function sendRequest(RequestInterface $request): ResponseInterface
953 {
954 if (!$this->checkRequest($request))
955 {
956 throw new Http\RequestException($request, reset($this->error));
957 }
958
959 $this->request = $this->buildRequest($request);
960
961 $handler = $this->createHandler($this->request);
962
963 $this->response = $handler->execute();
964
965 return $this->response;
966 }
967
973 public function sendAsyncRequest(RequestInterface $request): PromiseInterface
974 {
975 if (!$this->checkRequest($request))
976 {
977 throw new Http\RequestException($request, reset($this->error));
978 }
979
980 $this->request = $this->buildRequest($request);
981
982 if ($this->queue === null)
983 {
984 $this->queue = $this->createQueue();
985 }
986
987 $handler = $this->createHandler($this->request, true);
988
989 $promise = $this->createPromise($handler, $this->queue);
990
991 $this->queue->add($promise);
992
993 return $promise;
994 }
995
1001 protected function createHandler(RequestInterface $request, bool $async = false)
1002 {
1003 if ($this->sslVerify === false)
1004 {
1005 $this->contextOptions['ssl']['verify_peer_name'] = false;
1006 $this->contextOptions['ssl']['verify_peer'] = false;
1007 $this->contextOptions['ssl']['allow_self_signed'] = true;
1008 }
1009
1010 $handlerOptions = [
1011 'waitResponse' => $this->waitResponse,
1012 'bodyLengthMax' => $this->bodyLengthMax,
1013 'proxyHost' => $this->proxyHost,
1014 'proxyPort' => $this->proxyPort,
1015 'effectiveIp' => $this->effectiveIp,
1016 'contextOptions' => $this->contextOptions,
1017 'socketTimeout' => $this->socketTimeout,
1018 'streamTimeout' => $this->streamTimeout,
1019 'async' => $async,
1020 'curlLogFile' => $this->curlLogFile,
1021 ];
1022
1023 if (!isset($this->responseBuilder))
1024 {
1025 $this->responseBuilder = new Http\ResponseBuilder();
1026 }
1027
1028 if ($this->useCurl)
1029 {
1030 $handler = new Http\Curl\Handler($request, $this->responseBuilder, $handlerOptions);
1031 }
1032 else
1033 {
1034 $handler = new Http\Socket\Handler($request, $this->responseBuilder, $handlerOptions);
1035 }
1036
1037 if ($this->logger !== null)
1038 {
1039 $handler->setLogger($this->logger);
1040 $handler->setDebugLevel($this->debugLevel);
1041 }
1042
1043 if ($this->shouldFetchBody !== null)
1044 {
1045 $handler->shouldFetchBody($this->shouldFetchBody);
1046 }
1047
1048 return $handler;
1049 }
1050
1056 protected function createPromise($handler, Http\Queue $queue)
1057 {
1058 if ($this->useCurl)
1059 {
1060 return new Http\Curl\Promise($handler, $queue);
1061 }
1062 return new Http\Socket\Promise($handler, $queue);
1063 }
1064
1068 protected function createQueue()
1069 {
1070 if ($this->useCurl)
1071 {
1072 return new Http\Curl\Queue();
1073 }
1074 return new Http\Socket\Queue();
1075 }
1076
1082 public function wait(): array
1083 {
1084 $responses = [];
1085
1086 if ($this->queue)
1087 {
1088 foreach ($this->queue->wait() as $promise)
1089 {
1090 $responses[$promise->getId()] = $promise->wait();
1091 }
1092 }
1093
1094 return $responses;
1095 }
1096
1103 public function shouldFetchBody(callable $callback)
1104 {
1105 $this->shouldFetchBody = $callback;
1106 return $this;
1107 }
1108
1115 public function setResponseBuilder(Http\ResponseBuilderInterface $responseBuilder)
1116 {
1117 $this->responseBuilder = $responseBuilder;
1118 return $this;
1119 }
1120}
xml version
Определения yandex.php:67
Определения error.php:15
static createDirectory($path)
Определения directory.php:142
static getDirectory($path)
Определения path.php:119
Определения request.php:10
Определения response.php:5
const GET
Определения method.php:14
setProxy($proxyHost, $proxyPort=null, $proxyUser=null, $proxyPassword=null)
Определения httpclient.php:587
post($url, $postData=null, $multipart=false)
Определения httpclient.php:236
shouldFetchBody(callable $callback)
Определения httpclient.php:1103
Http Request $request
Определения httpclient.php:68
setCookies(array $cookies)
Определения httpclient.php:436
const HTTP_POST
Определения httpclient.php:32
const HTTP_1_0
Определения httpclient.php:28
setPrivateIp($value)
Определения httpclient.php:572
setOutputStream($handler)
Определения httpclient.php:610
const HTTP_OPTIONS
Определения httpclient.php:37
__construct(array $options=null)
Определения httpclient.php:101
prepareMultipart($postData)
Определения httpclient.php:261
checkRequest(RequestInterface $request)
Определения httpclient.php:910
const DEFAULT_SOCKET_TIMEOUT
Определения httpclient.php:39
const HTTP_HEAD
Определения httpclient.php:34
setCompress($value)
Определения httpclient.php:537
saveFile($filePath)
Определения httpclient.php:654
const DEFAULT_STREAM_TIMEOUT_NO_WAIT
Определения httpclient.php:41
IpAddress $effectiveIp
Определения httpclient.php:71
setContextOptions(array $options)
Определения httpclient.php:684
setResponseBuilder(Http\ResponseBuilderInterface $responseBuilder)
Определения httpclient.php:1115
const HTTP_GET
Определения httpclient.php:31
HttpHeaders $headers
Определения httpclient.php:67
sendRequest(RequestInterface $request)
Определения httpclient.php:952
createHandler(RequestInterface $request, bool $async=false)
Определения httpclient.php:1001
const HTTP_1_1
Определения httpclient.php:29
Http Queue $queue
Определения httpclient.php:70
getRequestHeaders()
Определения httpclient.php:413
setVersion($value)
Определения httpclient.php:523
setTimeout($value)
Определения httpclient.php:499
const HTTP_PATCH
Определения httpclient.php:35
const HTTP_PUT
Определения httpclient.php:33
download($url, $filePath, string $method=Http\Method::GET, $entityBody=null)
Определения httpclient.php:635
setHeader($name, $value, $replace=true)
Определения httpclient.php:384
setAuthorization($user, $pass)
Определения httpclient.php:453
Http ResponseBuilderInterface $responseBuilder
Определения httpclient.php:65
createPromise($handler, Http\Queue $queue)
Определения httpclient.php:1056
disableSslVerification()
Определения httpclient.php:560
query($method, $url, $entityBody=null)
Определения httpclient.php:290
setRedirect($value, $max=null)
Определения httpclient.php:466
sendAsyncRequest(RequestInterface $request)
Определения httpclient.php:973
waitResponse($value)
Определения httpclient.php:482
Http Response $response
Определения httpclient.php:69
const HTTP_DELETE
Определения httpclient.php:36
const DEFAULT_STREAM_TIMEOUT
Определения httpclient.php:40
head($url)
Определения httpclient.php:219
setBodyLengthMax($bodyLengthMax)
Определения httpclient.php:622
getEffectiveUrl()
Определения httpclient.php:673
setHeaders(array $headers)
Определения httpclient.php:399
setCharset($value)
Определения httpclient.php:549
addError($code, $message, $triggerWarning=false)
Определения httpclient.php:806
setStreamTimeout($value)
Определения httpclient.php:511
buildRequest(RequestInterface $request)
Определения httpclient.php:816
static createByUri(UriInterface $uri)
Определения ipaddress.php:44
Определения uri.php:17
$options
Определения commerceml2.php:49
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
if(file_exists($_SERVER['DOCUMENT_ROOT'] . "/urlrewrite.php")) $uri
Определения urlrewrite.php:61
$status
Определения session.php:10
$name
Определения menu_edit.php:35
Определения Image.php:9
trait DebugInterfaceTrait
Определения debuginterfacetrait.php:15
$user
Определения mysql_to_pgsql.php:33
$message
Определения payment.php:8
$event
Определения prolog_after.php:141
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$dir
Определения quickway.php:303
$contentType
Определения quickway.php:301
$location
Определения options.php:2729
$pass
Определения result.php:5
$method
Определения index.php:27
$postData
Определения index.php:29
$max
Определения template_copy.php:262
$url
Определения iframe.php:7