# params

function_name: json_decode
name: json
type: string
description:
<p class="para">
       The <code class="parameter">json</code> <span class="type">string</span> being decoded.
      </p>
      <p class="para">
       This function only works with UTF-8 encoded strings.
      </p>
      
 <blockquote class="note"><p><strong class="note">Note</strong>: 
  <p class="para">
   PHP implements a superset of JSON as specified in the original
   <a href="http://www.faqs.org/rfcs/rfc7159" class="link external">&raquo;&nbsp;RFC 7159</a>.
  </p>
 </p></blockquote>


function_name: json_decode
name: associative
type: null
description:
<p class="para">
       When <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, JSON objects will be returned as
       associative <span class="type">array</span>s; when <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>, JSON objects will be returned as <span class="type">object</span>s.
       When <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, JSON objects will be returned as associative <span class="type">array</span>s or
       <span class="type">object</span>s depending on whether <strong><code><a href="json.constants.html#constant.json-object-as-array">JSON_OBJECT_AS_ARRAY</a></code></strong>
       is set in the <code class="parameter">flags</code>.
      </p>


function_name: json_decode
name: depth
type: int
initializer: 512
description:
<p class="para">
       Maximum nesting depth of the structure being decoded.
       The value must be greater than <code class="literal">0</code>,
       and less than or equal to <code class="literal">2147483647</code>.
      </p>


function_name: json_decode
name: flags
type: int
description:
<p class="para">
       Bitmask of
       <strong><code><a href="json.constants.html#constant.json-bigint-as-string">JSON_BIGINT_AS_STRING</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-invalid-utf8-ignore">JSON_INVALID_UTF8_IGNORE</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-invalid-utf8-substitute">JSON_INVALID_UTF8_SUBSTITUTE</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-object-as-array">JSON_OBJECT_AS_ARRAY</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-throw-on-error">JSON_THROW_ON_ERROR</a></code></strong>.
       The behaviour of these constants is described on the
       <a href="json.constants.html" class="link">JSON constants</a> page.
      </p>


function_name: json_encode
name: value
type: mixed
description:
<p class="para">
       The <code class="parameter">value</code> being encoded. Can be any type except
       a <a href="language.types.resource.html" class="link">resource</a>.
      </p>
      <p class="para">
       All string data must be UTF-8 encoded.
      </p>
      
 <blockquote class="note"><p><strong class="note">Note</strong>: 
  <p class="para">
   PHP implements a superset of JSON as specified in the original
   <a href="http://www.faqs.org/rfcs/rfc7159" class="link external">&raquo;&nbsp;RFC 7159</a>.
  </p>
 </p></blockquote>


function_name: json_encode
name: flags
type: int
description:
<p class="para">
       Bitmask consisting of
       <strong><code><a href="json.constants.html#constant.json-force-object">JSON_FORCE_OBJECT</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-hex-quot">JSON_HEX_QUOT</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-hex-tag">JSON_HEX_TAG</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-hex-amp">JSON_HEX_AMP</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-hex-apos">JSON_HEX_APOS</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-invalid-utf8-ignore">JSON_INVALID_UTF8_IGNORE</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-invalid-utf8-substitute">JSON_INVALID_UTF8_SUBSTITUTE</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-numeric-check">JSON_NUMERIC_CHECK</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-partial-output-on-error">JSON_PARTIAL_OUTPUT_ON_ERROR</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-preserve-zero-fraction">JSON_PRESERVE_ZERO_FRACTION</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-pretty-print">JSON_PRETTY_PRINT</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-unescaped-line-terminators">JSON_UNESCAPED_LINE_TERMINATORS</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-unescaped-slashes">JSON_UNESCAPED_SLASHES</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-unescaped-unicode">JSON_UNESCAPED_UNICODE</a></code></strong>,
       <strong><code><a href="json.constants.html#constant.json-throw-on-error">JSON_THROW_ON_ERROR</a></code></strong>.
       The behaviour of these constants is described on the
       <a href="json.constants.html" class="link">JSON constants</a> page.
      </p>


function_name: json_validate
name: json
type: string
description:
<p class="para">
       The string to validate.
      </p>
      <p class="para">
       This function only works with UTF-8 encoded strings.
      </p>
      
 <blockquote class="note"><p><strong class="note">Note</strong>: 
  <p class="para">
   PHP implements a superset of JSON as specified in the original
   <a href="http://www.faqs.org/rfcs/rfc7159" class="link external">&raquo;&nbsp;RFC 7159</a>.
  </p>
 </p></blockquote>


function_name: json_validate
name: flags
type: int
description:
<p class="para">
       Currently only
       <strong><code><a href="json.constants.html#constant.json-invalid-utf8-ignore">JSON_INVALID_UTF8_IGNORE</a></code></strong>
       is accepted.
      </p>


function_name: simdjson_decode
name: json
type: string
description:
<p class="para">
      The <code class="parameter">json</code> <span class="type">string</span> being decoded.
     </p>
     <p class="para">
      This function only works with UTF-8 encoded strings.
     </p>
     <p class="para">
      This function parses valid inputs which
      <span class="function">json_decode</span> can decode,
      provided that they are less than 4 GiB long.
     </p>


function_name: simdjson_decode
name: associative
type: bool
description:
<p class="para">
      When <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, JSON objects will be returned as
      associative <span class="type">array</span>s; when <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>, JSON objects will be returned as <span class="type">object</span>s.
     </p>


function_name: simdjson_decode
name: depth
type: int
initializer: 512
description:
<p class="para">
      Maximum nesting depth of the structure being decoded.
      The value must be greater than <code class="literal">0</code>,
      and less than or equal to <code class="literal">2147483647</code>.

      Callers should use reasonably small values,
      because larger depths require more buffer space and will
      increase the recursion depth, unlike the current <span class="function">json_decode</span> implementation.
     </p>


function_name: simdjson_is_valid
name: json
type: string
description:
<p class="para">
       The <code class="parameter">json</code> <span class="type">string</span> being validated.
      </p>
      <p class="para">
       This function only works with UTF-8 encoded strings.
      </p>
      <p class="para">
       This function validates inputs which
       <span class="function">json_decode</span> can decode,
       provided that they are less than 4 GiB long.
      </p>


function_name: simdjson_is_valid
name: depth
type: int
initializer: 512
description:
<p class="para">
      Maximum nesting depth of the structure being validated.
      The value must be greater than <code class="literal">0</code>,
      and less than or equal to <code class="literal">2147483647</code>.

      Callers should use reasonably small values,
      because larger depths require more buffer space and will
      increase the recursion depth, unlike the current <span class="function">json_decode</span> implementation.
     </p>


function_name: simdjson_key_count
name: json
type: string
description:
<p class="para">
      The <code class="parameter">json</code> <span class="type">string</span> being queried.
     </p>


function_name: simdjson_key_count
name: throw_if_uncountable
type: bool
description:
<p class="para">
      When true, a <span class="classname">SimdJsonException</span> will be thrown
      instead of returning 0 when the value the JSON pointer points to
      is neither an object nor an array.
     </p>


function_name: simdjson_key_value
name: json
type: string
description:
<p class="para">
      The <code class="parameter">json</code> <span class="type">string</span> being queried and decoded.
     </p>
      <p class="para">
       This function only works with UTF-8 encoded strings.
      </p>
      <p class="para">
       This function parses valid inputs which
       <span class="function">json_decode</span> can decode,
       provided that they are less than 4 GiB long.
      </p>


function_name: LuaSandbox.loadBinary
name: code
type: string
description:
<p class="para">
      Data from  <span class="methodname">LuaSandboxFunction::dump</span>.
     </p>


function_name: LuaSandbox.registerLibrary
name: libname
type: string
description:
<p class="para">
      The name of the library. In the Lua state, the global variable of this
      name will be set to the table of functions. If the table already exists,
      the new functions will be added to it.
     </p>


function_name: LuaSandbox.registerLibrary
name: functions
type: array
description:
<p class="para">
      An <span class="type">array</span>, where each key is a function name, and each value is a
      corresponding PHP <span class="type">callable</span>.
     </p>


function_name: LuaSandbox.setCPULimit
name: limit
type: bool
description:
<p class="para">
      Limit as a <span class="type">float</span> in seconds, or <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> for no limit.
     </p>


function_name: define
name: constant_name
type: string
description:
<p class="para">
       The name of the constant.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        It is possible to <span class="function">define</span> constants with reserved or
        even invalid names, whose value can (only) be retrieved with
        <span class="function">constant</span>. However, doing so is not recommended.
       </p>
      </p></blockquote>


function_name: define
name: value
type: mixed
description:
<p class="para">
       The value of the constant. In PHP 5, <code class="parameter">value</code> must
       be a <span class="type">scalar</span> value (<span class="type">int</span>,
       <span class="type">float</span>, <span class="type">string</span>, <span class="type">bool</span>, or
       <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>). In PHP 7, <span class="type">array</span> values are also accepted.
      </p>
      <div class="warning"><strong class="warning">Warning</strong>
       <p class="para">
        While it is possible to define <span class="type">resource</span> constants, it is
        not recommended and may cause unpredictable behavior.
       </p>
      </div>


function_name: define
name: case_insensitive
type: bool
description:
<p class="para">
       If set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the constant will be defined case-insensitive. 
       The default behavior is case-sensitive; i.e. 
       <code class="literal">CONSTANT</code> and <code class="literal">Constant</code> represent
       different values.
      </p>
      <div class="warning"><strong class="warning">Warning</strong>
       <p class="simpara">
        Defining case-insensitive constants is deprecated as of PHP 7.3.0.
        As of PHP 8.0.0, only <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> is an acceptable value, passing
        <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> will produce a warning.
       </p>
      </div>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Case-insensitive constants are stored as lower-case.
       </p>
      </p></blockquote>


function_name: eval
name: code
type: string
description:
<p class="para">
       Valid PHP code to be evaluated.
      </p>
      <p class="para">
       The code must not be wrapped in opening and closing
       <a href="language.basic-syntax.phpmode.html" class="link">PHP tags</a>, i.e.
       <code class="literal">&#039;echo &quot;Hi!&quot;;&#039;</code> must be passed instead of
       <code class="literal">&#039;&lt;?php echo &quot;Hi!&quot;; ?&gt;&#039;</code>. It is still possible to leave and
       re-enter PHP mode though using the appropriate PHP tags, e.g.
       <code class="literal">&#039;echo &quot;In PHP mode!&quot;; ?&gt;In HTML mode!&lt;?php echo &quot;Back in PHP mode!&quot;;&#039;</code>.
      </p>
      <p class="para">
       Apart from that the passed code must be valid PHP. This includes that all statements
       must be properly terminated using a semicolon.
       <code class="literal">&#039;echo &quot;Hi!&quot;&#039;</code> for example will cause a parse error, whereas
       <code class="literal">&#039;echo &quot;Hi!&quot;;&#039;</code> will work.
      </p>
      <p class="para">
       A <code class="literal">return</code> statement will immediately terminate the
       evaluation of the code. 
      </p>
      <p class="para">
       The code will be executed in the scope of the code calling <span class="function">eval</span>. Thus any
       variables defined or changed in the <span class="function">eval</span> call will remain visible after
       it terminates.
      </p>


function_name: exit
name: status
type: int
description:
<p class="para">
       If <code class="parameter">status</code> is a string, this function prints the
       <code class="parameter">status</code> just before exiting.
      </p>
      <p class="para">
       If <code class="parameter">status</code> is an <span class="type">int</span>, that
       value will be used as the exit status and not printed. Exit statuses should be in
       the range 0 to 254, the exit status 255 is reserved by PHP and shall
       not be used. The status 0 is used to terminate the program
       successfully.
      </p>


function_name: get_browser
name: user_agent
type: null
description:
<p class="para">
       The User Agent to be analyzed. By default, the value of HTTP
       User-Agent header is used; however, you can alter this (i.e., look up
       another browser&#039;s info) by passing this parameter.
      </p>
      <p class="para">
       You can bypass this parameter with a <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> value.
      </p>


function_name: get_browser
name: return_array
type: bool
description:
<p class="para">
       If set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, this function will return an <span class="type">array</span>
       instead of an <span class="type">object</span>.
      </p>


function_name: highlight_file
name: return
type: bool
description:
<p class="para">
       Set this parameter to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to make this function return the
       highlighted code.
      </p>


function_name: highlight_string
name: string
type: string
description:
<p class="para">
       The PHP code to be highlighted. This should include the opening tag.
      </p>


function_name: hrtime
name: as_number
type: bool
description:
<p class="para">
       Whether the high resolution time should be returned as <span class="type">array</span>
       or number.
      </p>


function_name: ignore_user_abort
name: enable
type: null
description:
<p class="para">
       If set and not <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, this function will set the <a href="misc.configuration.html#ini.ignore-user-abort" class="link">ignore_user_abort</a> ini setting
       to the given <code class="parameter">enable</code>. Otherwise, this function will
       only return the previous setting without changing it.
      </p>


function_name: pack
name: format
type: string
description:
<p class="para">
       The <code class="parameter">format</code> string consists of format codes
       followed by an optional repeater argument. The repeater argument can
       be either an integer value or <code class="literal">*</code> for repeating to
       the end of the input data. For a, A, h, H the repeat count specifies
       how many characters of one data argument are taken, for @ it is the
       absolute position where to put the next data, for everything else the
       repeat count specifies how many data arguments are consumed and packed
       into the resulting binary string.
      </p>
      <p class="para">
       Currently implemented formats are:
       <table class="doctable table">
        <caption><strong><span class="function">pack</span> format characters</strong></caption>
        
         <thead>
          <tr>
           <th>Code</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>a</td>
           <td>NUL-padded string</td>
          </tr>

          <tr>
           <td>A</td>
           <td>SPACE-padded string</td></tr>

          <tr>
           <td>h</td>
           <td>Hex string, low nibble first</td></tr>

          <tr>
           <td>H</td>
           <td>Hex string, high nibble first</td></tr>

          <tr><td>c</td><td>signed char</td></tr>

          <tr>
           <td>C</td>
           <td>unsigned char</td></tr>

          <tr>
           <td>s</td>
           <td>signed short (always 16 bit, machine byte order)</td>
          </tr>

          <tr>
           <td>S</td>
           <td>unsigned short (always 16 bit, machine byte order)</td>
          </tr>

          <tr>
           <td>n</td>
           <td>unsigned short (always 16 bit, big endian byte order)</td>
          </tr>

          <tr>
           <td>v</td>
           <td>unsigned short (always 16 bit, little endian byte order)</td>
          </tr>

          <tr>
           <td>i</td>
           <td>signed integer (machine dependent size and byte order)</td>
          </tr>

          <tr>
           <td>I</td>
           <td>unsigned integer (machine dependent size and byte order)</td>
          </tr>

          <tr>
           <td>l</td>
           <td>signed long (always 32 bit, machine byte order)</td>
          </tr>

          <tr>
           <td>L</td>
           <td>unsigned long (always 32 bit, machine byte order)</td>
          </tr>

          <tr>
           <td>N</td>
           <td>unsigned long (always 32 bit, big endian byte order)</td>
          </tr>

          <tr>
           <td>V</td>
           <td>unsigned long (always 32 bit, little endian byte order)</td>
          </tr>

          <tr>
           <td>q</td>
           <td>signed long long (always 64 bit, machine byte order)</td>
          </tr>

          <tr>
           <td>Q</td>
           <td>unsigned long long (always 64 bit, machine byte order)</td>
          </tr>

          <tr>
           <td>J</td>
           <td>unsigned long long (always 64 bit, big endian byte order)</td>
          </tr>

          <tr>
           <td>P</td>
           <td>unsigned long long (always 64 bit, little endian byte order)</td>
          </tr>

          <tr>
           <td>f</td>
           <td>float (machine dependent size and representation)</td>
          </tr>

          <tr>
           <td>g</td>
           <td>float (machine dependent size, little endian byte order)</td>
          </tr>

          <tr>
           <td>G</td>
           <td>float (machine dependent size, big endian byte order)</td>
          </tr>

          <tr>
           <td>d</td>
           <td>double (machine dependent size and representation)</td>
          </tr>

          <tr>
           <td>e</td>
           <td>double (machine dependent size, little endian byte order)</td>
          </tr>

          <tr>
           <td>E</td>
           <td>double (machine dependent size, big endian byte order)</td>
          </tr>

          <tr>
           <td>x</td>
           <td>NUL byte</td>
          </tr>

          <tr>
           <td>X</td>
           <td>Back up one byte</td>
          </tr>

          <tr>
           <td>Z</td>
           <td>NUL-padded string</td>
          </tr>

          <tr>
           <td>@</td>
           <td>NUL-fill to absolute position</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: sapi_windows_cp_conv
name: in_codepage
type: string
description:
<p class="para">
      The codepage of the <code class="parameter">subject</code> string.
      Either the codepage name or identifier.
     </p>


function_name: sapi_windows_cp_conv
name: out_codepage
type: string
description:
<p class="para">
      The codepage to convert the <code class="parameter">subject</code> string to.
      Either the codepage name or identifier.
     </p>


function_name: sapi_windows_cp_get
name: kind
type: string
initializer: ""
description:
<p class="para">
      The kind of operating system codepage to get,
      either <code class="literal">&#039;ansi&#039;</code> or <code class="literal">&#039;oem&#039;</code>.
      Any other value refers to the current codepage of the process.
     </p>


function_name: sapi_windows_generate_ctrl_event
name: event
type: int
description:
<p class="para">
      The <code class="literal">CTRL</code> event to send;
      either <strong><code><a href="reserved.constants.html#constant.php-windows-event-ctrl-c">PHP_WINDOWS_EVENT_CTRL_C</a></code></strong>
      or <strong><code><a href="reserved.constants.html#constant.php-windows-event-ctrl-break">PHP_WINDOWS_EVENT_CTRL_BREAK</a></code></strong>.
     </p>


function_name: sapi_windows_generate_ctrl_event
name: pid
type: int
description:
<p class="para">
      The ID of the process to which to send the event to. If <code class="literal">0</code>
      is given, the event is sent to all processes of the process group.
     </p>


function_name: sapi_windows_set_ctrl_handler
name: handler
type: null
description:
<p class="para">
      A callback function to set or remove. If set, this function will be called
      whenever a <code class="literal">CTRL+C</code> or <code class="literal">CTRL+BREAK</code> event
      occurs. The function is supposed to have the following signature:
      <div class="methodsynopsis dc-description"><span class="type">void</span> <span class="methodname">handler</span>(<span class="methodparam"><span class="type">int</span> <code class="parameter">$event</code></span>)</div>

      <dl>
       
        <dt><code class="parameter">event</code></dt>
        <dd>
         <span class="simpara">
          The <code class="literal">CTRL</code> event which has been received;
          either <strong><code><a href="reserved.constants.html#constant.php-windows-event-ctrl-c">PHP_WINDOWS_EVENT_CTRL_C</a></code></strong>
          or <strong><code><a href="reserved.constants.html#constant.php-windows-event-ctrl-break">PHP_WINDOWS_EVENT_CTRL_BREAK</a></code></strong>.
         </span>
        </dd>
       
      </dl>
      Setting a <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> <code class="parameter">handler</code> causes the process to ignore
      <code class="literal">CTRL+C</code> events, but not <code class="literal">CTRL+BREAK</code> events.
     </p>


function_name: sapi_windows_set_ctrl_handler
name: add
type: bool
description:
<p class="para">
      If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the handler is set. If <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>, the handler is removed.
     </p>


function_name: sapi_windows_vt100_support
name: enable
type: null
description:
<p class="para">
      If <span class="type">bool</span>, the VT100 feature will be enabled (if <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>) or disabled (if <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>).
     </p>


function_name: sleep
name: seconds
type: int
description:
<p class="para">
       Halt time in seconds (must be greater than or equal to <code class="literal">0</code>).
      </p>


function_name: time_nanosleep
name: nanoseconds
type: int
description:
<p class="para">
       Must be a non-negative integer less than 1 billion.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        On Windows, the system may sleep longer that the given number of nanoseconds,
        depending on the hardware.
       </span>
      </p></blockquote>


function_name: uniqid
name: prefix
type: string
initializer: ""
description:
<p class="para">
       Can be useful, for instance, if you generate identifiers
       simultaneously on several hosts that might happen to generate the
       identifier at the same microsecond.
      </p>
      <p class="para">
       With an empty <code class="parameter">prefix</code>, the returned string will
       be 13 characters long.  If <code class="parameter">more_entropy</code> is
       <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, it will be 23 characters.
      </p>


function_name: uniqid
name: more_entropy
type: bool
description:
<p class="para">
       If set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, <span class="function">uniqid</span> will add additional
       entropy (using the combined linear congruential generator) at the end
       of the return value, which increases the likelihood that the result
       will be unique.
      </p>


function_name: unpack
name: format
type: string
description:
<p class="para">
       See <span class="function">pack</span> for an explanation of the format codes.
      </p>


function_name: usleep
name: microseconds
type: int
description:
<p class="para">
       Halt time in microseconds. A microsecond is one millionth of a
       second.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        Values larger than <code class="literal">1000000</code> (i.e. sleeping for more than a second)
        may not be supported by the operating system. Use <span class="function">sleep</span> instead.
       </span>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        The sleep may be lengthened slightly (i.e. may be longer than <code class="parameter">microseconds</code>)
        by any system activity or by the time spent processing the call or by the granularity of system timers.
       </span>
      </p></blockquote>


function_name: mt_rand
name: max
type: int
description:
<p class="para">
       Optional highest value to be returned (default: <span class="function">mt_getrandmax</span>)
      </p>


function_name: mt_srand
name: seed
type: null
description:
<p class="para">
       Fills the state with values generated with a linear congruential generator
       that was seeded with <code class="parameter">seed</code> interpreted as an unsigned
       32 bit integer.
      </p>
      <p class="para">
       If <code class="parameter">seed</code> is omitted or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, a random unsigned
       32-bit integer will be used.
      </p>


function_name: mt_srand
name: mode
type: int
description:
<p class="para">
       Use one of the following constants to specify the implementation of the algorithm to use.
       <ul class="simplelist">
        <li>
         <strong><code><a href="random.constants.html#constant.mt-rand-mt19937">MT_RAND_MT19937</a></code></strong>:
         The correct Mt19937 implementation, available as of PHP 7.1.0.
        </li>
        <li>
         <strong><code><a href="random.constants.html#constant.mt-rand-php">MT_RAND_PHP</a></code></strong>
         Uses an incorrect Mersenne Twister implementation which was used as the default up till PHP 7.1.0.
         This mode is available for backward compatibility.
        </li>
       </ul>
      </p>
      <div class="warning"><strong class="warning">Warning</strong><p class="simpara">This feature has been
<em>DEPRECATED</em> as of PHP 8.3.0. Relying on this feature
is highly discouraged.</p></div>


function_name: rand
name: max
type: int
description:
<p class="para">
       The highest value to return (default: <span class="function">getrandmax</span>)
      </p>


function_name: random_bytes
name: length
type: int
description:
<p class="para">
      The length of the random string that should be returned in bytes; must be <code class="literal">1</code> or greater.
     </p>


function_name: Random\Randomizer.__construct
name: engine
type: null
description:
<p class="para">
      The <span class="classname">Random\Engine</span> to use to generate randomness.
     </p>

     <p class="para">
      If <code class="parameter">engine</code> is omitted or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, a new <span class="classname">Random\Engine\Secure</span> object will be used.
     </p>


function_name: Random\Randomizer.getBytes
name: length
type: int
description:
<p class="para">
      The length of the random <span class="type">string</span> that should be returned in bytes; must be <code class="literal">1</code> or greater.
     </p>


function_name: Random\Randomizer.getBytesFromString
name: string
type: string
description:
<p class="para">
       The <span class="type">string</span> from which the returned bytes are selected.
      </p>


function_name: Random\Randomizer.getBytesFromString
name: length
type: int
description:
<p class="para">
       The length of the random <span class="type">string</span> that should be returned in bytes; must be <code class="literal">1</code> or greater.
      </p>


function_name: Random\Randomizer.getFloat
name: boundary
type: Random\IntervalBoundary
initializer: Random\IntervalBoundary::ClosedOpen
description:
<p class="para">
       Specifies whether the interval boundaries are possible return values.
      </p>


function_name: Random\Randomizer.pickArrayKeys
name: num
type: int
description:
<p class="para">
      The number of array keys to return; must be between <code class="literal">1</code>
      and the number of elements in <code class="parameter">array</code>.
     </p>


function_name: Random\Randomizer.shuffleArray
name: array
type: array
description:
<p class="para">
      The <span class="type">array</span> whose values are shuffled.
     </p>
     <p class="para">
      The input <span class="type">array</span> will not be modified.
     </p>


function_name: Random\Randomizer.shuffleBytes
name: bytes
type: string
description:
<p class="para">
      The <span class="type">string</span> whose bytes are shuffled.
     </p>
     <p class="para">
      The input <span class="type">string</span> will not be modified.
     </p>


function_name: Random\Engine\Mt19937.__construct
name: seed
type: null
description:
<p class="para">
      Fills the state with values generated with a linear congruential generator
      that was seeded with <code class="parameter">seed</code> interpreted as an unsigned
      32 bit integer.
     </p>

     <p class="para">
      If <code class="parameter">seed</code> is omitted or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, a random unsigned
      32 bit integer will be used.
     </p>


function_name: Random\Engine\Mt19937.__construct
name: mode
type: int
description:
<p class="para">
      Use one of the following constants to specify the implementation of the algorithm to use.
      <ul class="simplelist">
       <li>
        <strong><code><a href="random.constants.html#constant.mt-rand-mt19937">MT_RAND_MT19937</a></code></strong>:
        The correct Mt19937 implementation.
       </li>
       <li>
        <strong><code><a href="random.constants.html#constant.mt-rand-php">MT_RAND_PHP</a></code></strong>:
        An incorrect implementation for backwards compatibility with <span class="function">mt_srand</span> prior to
        PHP 7.1.0.
       </li>
      </ul>
     </p>
     <div class="warning"><strong class="warning">Warning</strong><p class="simpara">This feature has been
<em>DEPRECATED</em> as of PHP 8.3.0. Relying on this feature
is highly discouraged.</p></div>


function_name: Random\Engine\PcgOneseq128XslRr64.__construct
name: seed
type: null
description:
<p class="para">
      How the internal 128 bit (16 byte) state consisting of one unsigned 128 bit integer is
      seeded depends on the type used as the <code class="parameter">seed</code>.
      <table class="doctable informaltable">
       
        <thead>
         <tr>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><span class="type">null</span></td>
          <td>
           Fills the state with 16 random bytes generated using the <acronym class="acronym">CSPRNG</acronym>.
          </td>
         </tr>

         <tr>
          <td><span class="type">int</span></td>
          <td>
           Fills the state by setting the state to <code class="literal">0</code>, advancing the engine one step,
           adding the value of <code class="parameter">seed</code> interpreted as an unsigned 64 bit integer,
           and advancing the engine another step.
          </td>
         </tr>

         <tr>
          <td><span class="type">string</span></td>
          <td>
           Fills the state by interpreting a 16 byte <span class="type">string</span> as a little-endian unsigned
           128 bit integer.
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: Random\Engine\PcgOneseq128XslRr64.jump
name: advance
type: int
description:
<p class="para">
      The number of steps to move ahead; must be <code class="literal">0</code> or greater.
     </p>


function_name: Random\Engine\Xoshiro256StarStar.__construct
name: seed
type: null
description:
<p class="para">
      How the internal 256 bit (32 byte) state consisting of four unsigned 64 bit integers is
      seeded depends on the type used as the <code class="parameter">seed</code>.
      <table class="doctable informaltable">
       
        <thead>
         <tr>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><span class="type">null</span></td>
          <td>
           Fills the state with 32 random bytes generated using the <acronym class="acronym">CSPRNG</acronym>.
          </td>
         </tr>

         <tr>
          <td><span class="type">int</span></td>
          <td>
           Fills the state with four consecutive values generated with the SplitMix64 algorithm
           that was seeded with <code class="parameter">seed</code> interpreted as an unsigned 64 bit integer.
          </td>
         </tr>

         <tr>
          <td><span class="type">string</span></td>
          <td>
           Fills the state by interpreting a 32 byte <span class="type">string</span> as four little-endian unsigned
           64 bit integers.
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: SeasLog.alert
name: content
type: array
description:
<p class="para">
      The `message` contain placeholders which implementors replace with values from content array.
      Sush as `message` is `log info  from {NAME}` and `content` is `array(&#039;NAME&#039; =&gt; neeke)`,
      the log information will `log info from neeke`.
     </p>


function_name: SeasLog.alert
name: logger
type: string
description:
<p class="para">
      The `logger` cased by the third param would be used right this right now, 
      like a temp logger, when the function SeasLog::setLogger() called in pre content.
      If `logger` NULL or &quot;&quot;, SeasLog will use lastest logger setted by  <span class="methodname">SeasLog::setLogger</span>. 
     </p>


function_name: SeasLog.analyzerDetail
name: order
type: int
description:
<p class="para">
      Int. Default is <a href="seaslog.constants.html#constant.seaslog-detail-order-asc" class="link">SEASLOG_DETAIL_ORDER_ASC</a>.
      See also:
        <ul class="simplelist">
         <li><a href="seaslog.constants.html#constant.seaslog-detail-order-asc" class="link">SEASLOG_DETAIL_ORDER_ASC</a></li>
         <li><a href="seaslog.constants.html#constant.seaslog-detail-order-desc" class="link">SEASLOG_DETAIL_ORDER_DESC</a></li>
        </ul>
     </p>


function_name: SeasLog.closeLoggerStream
name: model
type: int
description:
<p class="para">
      Constant int.
      <ul class="simplelist">
       <li><a href="seaslog.constants.html#constant.seaslog-close-logger-stream-mod-all" class="link">SEASLOG_CLOSE_LOGGER_STREAM_MOD_ALL</a></li>
       <li><a href="seaslog.constants.html#constant.seaslog-close-logger-stream-mod-assign" class="link">SEASLOG_CLOSE_LOGGER_STREAM_MOD_ASSIGN</a></li>
      </ul>
     </p>


function_name: SeasLog.getRequestVariable
name: key
type: int
description:
<p class="para">
      Constant int.
      <ul class="simplelist">
       <li><a href="seaslog.constants.html#constant.seaslog-request-variable-domain-port" class="link">SEASLOG_REQUEST_VARIABLE_DOMAIN_PORT</a></li>
       <li><a href="seaslog.constants.html#constant.seaslog-request-variable-request-uri" class="link">SEASLOG_REQUEST_VARIABLE_REQUEST_URI</a></li>
       <li><a href="seaslog.constants.html#constant.seaslog-request-variable-request-method" class="link">SEASLOG_REQUEST_VARIABLE_REQUEST_METHOD</a></li>
       <li><a href="seaslog.constants.html#constant.seaslog-request-variable-client-ip" class="link">SEASLOG_REQUEST_VARIABLE_CLIENT_IP</a></li>
      </ul>
     </p>


function_name: SeasLog.log
name: level
type: string
description:
<p class="para">
      Can use level in:
      <ul class="simplelist">
        <li><a href="seaslog.constants.html#constant.seaslog-debug" class="link">SEASLOG_DEBUG</a></li>
        <li><a href="seaslog.constants.html#constant.seaslog-info" class="link">SEASLOG_INFO</a></li>
        <li><a href="seaslog.constants.html#constant.seaslog-notice" class="link">SEASLOG_NOTICE</a></li>
        <li><a href="seaslog.constants.html#constant.seaslog-warning" class="link">SEASLOG_WARNING</a></li>
        <li><a href="seaslog.constants.html#constant.seaslog-error" class="link">SEASLOG_ERROR</a></li>
        <li><a href="seaslog.constants.html#constant.seaslog-critical" class="link">SEASLOG_CRITICAL</a></li>
        <li><a href="seaslog.constants.html#constant.seaslog-alert" class="link">SEASLOG_ALERT</a></li>
        <li><a href="seaslog.constants.html#constant.seaslog-emergency" class="link">SEASLOG_EMERGENCY</a></li>
      </ul>
      Or you can create a new level self-help.
     </p>


function_name: SeasLog.setDatetimeFormat
name: format
type: string
description:
<p class="para">
      String. Such as `Y-m-d H:i:s` or `Ymd His`. See also first param `format` at <span class="function">date</span>.
     </p>


function_name: SplDoublyLinkedList.offsetSet
name: index
type: null
description:
<p class="para">
       The index being set. If <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the next value will be added after the last item.
      </p>


function_name: SplDoublyLinkedList.setIteratorMode
name: mode
type: int
description:
<p class="simpara"><strong><code><a href="class.spldoublylinkedlist.html#spldoublylinkedlist.constants.it-mode-keep">SplDoublyLinkedList::IT_MODE_KEEP</a></code></strong> (Elements are traversed by the iterator)</p>


function_name: SplPriorityQueue.setExtractFlags
name: flags
type: int
description:
<p class="simpara"><strong><code><a href="class.splpriorityqueue.html#splpriorityqueue.constants.extr-both">SplPriorityQueue::EXTR_BOTH</a></code></strong> (0x00000003): Extract an array containing both</p>


function_name: SplFixedArray.__construct
name: size
type: int
description:
<p class="para">
       The size of the fixed array. 
       This expects a number between <code class="literal">0</code> and <strong><code><a href="reserved.constants.html#constant.php-int-max">PHP_INT_MAX</a></code></strong>.
      </p>


function_name: SplFixedArray.setSize
name: size
type: int
description:
<p class="para">
       The new array size. This should be a value between <code class="literal">0</code> and <strong><code><a href="reserved.constants.html#constant.php-int-max">PHP_INT_MAX</a></code></strong>.
      </p>


function_name: SplObjectStorage.count
name: mode
type: int
description:
<p class="para">
       If the optional <code class="parameter">mode</code> parameter is set to
       <strong><code><a href="array.constants.html#constant.count-recursive">COUNT_RECURSIVE</a></code></strong> (or 1), <span class="function">SplObjectStorage::count</span>
       will recursively count the storage.
      </p>


function_name: SplObjectStorage.removeAllExcept
name: storage
type: SplObjectStorage
description:
<p class="para">
       The storage containing the elements to retain in the current storage.
      </p>


function_name: ArrayIterator.asort
name: flags
type: int
description:
<p class="simpara">
       <strong><code><a href="array.constants.html#constant.sort-flag-case">SORT_FLAG_CASE</a></code></strong> - can be combined
       (bitwise OR) with
       <strong><code><a href="array.constants.html#constant.sort-string">SORT_STRING</a></code></strong> or
       <strong><code><a href="array.constants.html#constant.sort-natural">SORT_NATURAL</a></code></strong> to sort strings case-insensitively
      </p>


function_name: ArrayIterator.__construct
name: flags
type: int
description:
<p class="para">
       Flags to control the behaviour of the <span class="classname">ArrayIterator</span> object.
       See  <span class="methodname">ArrayIterator::setFlags</span>.
      </p>


function_name: ArrayIterator.setFlags
name: flags
type: int
description:
<p class="para">
       The new ArrayIterator behavior.
       It takes on either a bitmask, or named constants. Using named
       constants is strongly encouraged to ensure compatibility for future
       versions.
      </p>
      <p class="para">
       The available behavior flags are listed below. The actual
       meanings of these flags are described in the
       <a href="class.arrayiterator.html#arrayiterator.constants" class="link">predefined constants</a>.
       <table class="doctable table">
        <caption><strong>ArrayIterator behavior flags</strong></caption>
        
         <thead>
          <tr>
           <th>value</th>
           <th>constant</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>1</td>
           <td>
            <a href="class.arrayiterator.html#arrayiterator.constants.std-prop-list" class="link">ArrayIterator::STD_PROP_LIST</a>
           </td>
          </tr>

          <tr>
           <td>2</td>
           <td>
            <a href="class.arrayiterator.html#arrayiterator.constants.array-as-props" class="link">ArrayIterator::ARRAY_AS_PROPS</a>
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: ArrayIterator.uasort
name: callback
type: callable
description:
<p class="para">
 The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.
</p>
<div class="methodsynopsis dc-description"><span class="type">int</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$a</code></span>, <span class="methodparam"><span class="type">mixed</span> <code class="parameter">$b</code></span>)</div>

<div class="caution"><strong class="caution">Caution</strong>
 <p class="para">
  Returning <em>non-integer</em> values from the comparison
  function, such as <span class="type">float</span>, will result in an internal cast to
  <span class="type">int</span> of the callback&#039;s return value. So values such as
  <code class="literal">0.99</code> and <code class="literal">0.1</code> will both be cast to an
  integer value of <code class="literal">0</code>, which will compare such values as equal.
 </p>
</div>


function_name: CallbackFilterIterator.__construct
name: callback
type: callable
description:
<p class="para">
      The callback, which should return <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to accept the current item
      or <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> otherwise.
      See <a href="class.callbackfilteriterator.html#callbackfilteriterator.examples" class="link">Examples</a>.
     </p>
     <p class="para">
      May be any valid <span class="type">callable</span> value.
     </p>


function_name: DirectoryIterator.getBasename
name: suffix
type: string
initializer: ""
description:
<p class="para">
       If the base name ends in <code class="parameter">suffix</code>, 
       this will be cut.
      </p>


function_name: FilesystemIterator.__construct
name: flags
type: int
description:
<p class="para">
       Flags may be provided which will affect the behavior of some methods. 
       A list of the flags can found under <a href="class.filesystemiterator.html#filesystemiterator.constants" class="link">FilesystemIterator predefined constants</a>. 
       They can also be set later with  <span class="methodname">FilesystemIterator::setFlags</span>
      </p>

initializer:
FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS


function_name: FilesystemIterator.setFlags
name: flags
type: int
description:
<p class="para">
       The handling flags to set.
       See the <a href="class.filesystemiterator.html#filesystemiterator.constants" class="link">FilesystemIterator constants</a>.
      </p>


function_name: GlobIterator.__construct
name: flags
type: int
initializer: FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO
description:
<p class="para">
       Option flags, the flags may be a bitmask of the 
       <span class="classname">FilesystemIterator</span> constants.
      </p>


function_name: IteratorIterator.__construct
name: class
type: null
description:
<p class="para">
       The class name to use for the inner iterator. It allows to specify a
       different iterator class to wrap the provided iterator.
       By default, it will use the <code class="code">IteratorIterator</code> class itself.
      </p>


function_name: MultipleIterator.attachIterator
name: info
type: null
description:
<p class="para">
       The associative information for the Iterator, which must be an
       <span class="type">int</span>, a <span class="type">string</span>, or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>. 
      </p>


function_name: MultipleIterator.__construct
name: flags
type: int
initializer: MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_NUMERIC
description:
<p class="para">
       The flags to set, according to the
       <a href="class.multipleiterator.html#multipleiterator.constants" class="link">Flag Constants</a>.
       <ul class="simplelist">
        <li>
         <strong><code><a href="class.multipleiterator.html#multipleiterator.constants.mit-need-all">MultipleIterator::MIT_NEED_ALL</a></code></strong> or <strong><code><a href="class.multipleiterator.html#multipleiterator.constants.mit-need-any">MultipleIterator::MIT_NEED_ANY</a></code></strong>
        </li>
        <li>
         <strong><code><a href="class.multipleiterator.html#multipleiterator.constants.mit-keys-numeric">MultipleIterator::MIT_KEYS_NUMERIC</a></code></strong> or <strong><code><a href="class.multipleiterator.html#multipleiterator.constants.mit-keys-assoc">MultipleIterator::MIT_KEYS_ASSOC</a></code></strong>
        </li>
       </ul>
      </p>
      <p class="para">       Defaults to <strong><code><a href="class.multipleiterator.html#multipleiterator.constants.mit-need-all">MultipleIterator::MIT_NEED_ALL</a></code></strong>|<strong><code><a href="class.multipleiterator.html#multipleiterator.constants.mit-keys-numeric">MultipleIterator::MIT_KEYS_NUMERIC</a></code></strong>.</p>


function_name: MultipleIterator.setFlags
name: flags
type: int
description:
<p class="para">
       The flags to set, according to the
       <a href="class.multipleiterator.html#multipleiterator.constants" class="link">Flag Constants</a>
      </p>


function_name: RecursiveCachingIterator.__construct
name: flags
type: int
initializer: RecursiveCachingIterator::CALL_TOSTRING
description:
<p class="para">
       The flags. Use <strong><code>CALL_TOSTRING</code></strong> to call 
        <span class="methodname">RecursiveCachingIterator::__toString</span> for every element (the default),
       and/or <strong><code>CATCH_GET_CHILD</code></strong> to catch exceptions when trying to get children.
      </p>


function_name: RecursiveCallbackFilterIterator.__construct
name: callback
type: callable
description:
<p class="para">
      The callback, which should return <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to accept the current item
      or <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> otherwise.
      See <a href="class.recursivecallbackfilteriterator.html#recursivecallbackfilteriterator.examples" class="link">Examples</a>.
     </p>
     <p class="para">
      May be any valid <span class="type">callable</span> value.
     </p>


function_name: RecursiveDirectoryIterator.__construct
name: flags
type: int
initializer: FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO
description:
<p class="para">
       Flags may be provided which will affect the behavior of some methods.
       A list of the flags can found under
       <a href="class.filesystemiterator.html#filesystemiterator.constants" class="link">FilesystemIterator predefined constants</a>.
       They can also be set later with  <span class="methodname">FilesystemIterator::setFlags</span>.
      </p>


function_name: RecursiveFilterIterator.__construct
name: iterator
type: RecursiveIterator
description:
<p class="para">
       The <span class="classname">RecursiveIterator</span> to be filtered.
      </p>


function_name: RecursiveIteratorIterator.__construct
name: iterator
type: Traversable
description:
<p class="para">
       The iterator being constructed from. Either a
       <span class="classname">RecursiveIterator</span> or <span class="classname">IteratorAggregate</span>.
      </p>


function_name: RecursiveIteratorIterator.__construct
name: mode
type: int
initializer: RecursiveIteratorIterator::LEAVES_ONLY
description:
<p class="para">
       Optional mode. Possible values are
       <ul class="simplelist">
        <li>
         <strong><code><a href="class.recursiveiteratoriterator.html#recursiveiteratoriterator.constants.leaves-only">RecursiveIteratorIterator::LEAVES_ONLY</a></code></strong>
         - The default. Lists only leaves in iteration.
        </li>
        <li>
         <strong><code><a href="class.recursiveiteratoriterator.html#recursiveiteratoriterator.constants.self-first">RecursiveIteratorIterator::SELF_FIRST</a></code></strong>
         - Lists leaves and parents in iteration with parents coming first.
        </li>
        <li>
         <strong><code><a href="class.recursiveiteratoriterator.html#recursiveiteratoriterator.constants.child-first">RecursiveIteratorIterator::CHILD_FIRST</a></code></strong>
         - Lists leaves and parents in iteration with leaves coming first.
        </li>
       </ul>
      </p>


function_name: RecursiveIteratorIterator.__construct
name: flags
type: int
description:
<p class="para">
       Optional flag. Possible values are <strong><code><a href="class.recursiveiteratoriterator.html#recursiveiteratoriterator.constants.catch-get-child">RecursiveIteratorIterator::CATCH_GET_CHILD</a></code></strong>
       which will then ignore exceptions thrown in calls to  <span class="methodname">RecursiveIteratorIterator::getChildren</span>.
      </p>


function_name: RecursiveIteratorIterator.setMaxDepth
name: maxDepth
type: int
initializer: -1
description:
<p class="para">
       The maximum allowed depth. <code class="literal">-1</code> is used
       for any depth.
      </p>


function_name: RecursiveRegexIterator.__construct
name: mode
type: int
initializer: RecursiveRegexIterator::MATCH
description:
<p class="para">
       Operation mode, see  <span class="methodname">RegexIterator::setMode</span> for a list
       of modes.
      </p>


function_name: RecursiveRegexIterator.__construct
name: flags
type: int
description:
<p class="para">
       Special flags, see  <span class="methodname">RegexIterator::setFlags</span> for a list
       of available flags.
      </p>


function_name: RecursiveRegexIterator.__construct
name: pregFlags
type: int
description:
<p class="para">
       The regular expression flags. These flags depend on the operation mode parameter:
      </p>
      <p class="para">
      <table class="doctable table">
        <caption><strong><span class="classname">RegexIterator</span> preg_flags</strong></caption>
        
         <thead>
          <tr>
           <th>operation mode</th>
           <th>available flags</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><var class="varname">RecursiveRegexIterator::ALL_MATCHES</var></td>
           <td>
            See <span class="function">preg_match_all</span>.
           </td>
          </tr>

          <tr>
           <td><var class="varname">RecursiveRegexIterator::GET_MATCH</var></td>
           <td>
            See <span class="function">preg_match</span>.
           </td>
          </tr>

          <tr>
           <td><var class="varname">RecursiveRegexIterator::MATCH</var></td>
           <td>
            See <span class="function">preg_match</span>.
           </td>
          </tr>

          <tr>
           <td><var class="varname">RecursiveRegexIterator::REPLACE</var></td>
           <td>
            none.
           </td>
          </tr>

          <tr>
           <td><var class="varname">RecursiveRegexIterator::SPLIT</var></td>
           <td>
            See <span class="function">preg_split</span>.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: RecursiveTreeIterator.__construct
name: iterator
type: IteratorAggregate
description:
<p class="para">
       The <span class="classname">RecursiveIterator</span> or <span class="classname">IteratorAggregate</span> to iterate over.
      </p>


function_name: RecursiveTreeIterator.__construct
name: flags
type: int
initializer: RecursiveTreeIterator::BYPASS_KEY
description:
<p class="para">
       Flags may be provided which will affect the behavior of some methods. 
       A list of the flags can found under <a href="class.recursivetreeiterator.html#recursivetreeiterator.constants" class="link">RecursiveTreeIterator predefined constants</a>.
      </p>


function_name: RecursiveTreeIterator.__construct
name: mode
type: int
initializer: RecursiveTreeIterator::SELF_FIRST
description:
<p class="para">
       Flags to affect the behavior of the <span class="classname">RecursiveIteratorIterator</span> used internally. 
      </p>


function_name: RecursiveTreeIterator.setPrefixPart
name: part
type: int
description:
<p class="para">
       One of the <a href="class.recursivetreeiterator.html#recursivetreeiterator.constants" class="link">RecursiveTreeIterator::PREFIX_*</a> constants.
      </p>


function_name: RecursiveTreeIterator.setPrefixPart
name: value
type: string
description:
<p class="para">
       The value to assign to the part of the prefix specified in <code class="parameter">part</code>.
      </p>


function_name: RegexIterator.__construct
name: pregFlags
type: int
description:
<p class="para">
       The regular expression flags. These flags depend on the operation mode parameter:
      </p>
      <p class="para">
      <table class="doctable table">
        <caption><strong><span class="classname">RegexIterator</span> preg_flags</strong></caption>
        
         <thead>
          <tr>
           <th>operation mode</th>
           <th>available flags</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><var class="varname">RegexIterator::ALL_MATCHES</var></td>
           <td>
            See <span class="function">preg_match_all</span>.
           </td>
          </tr>

          <tr>
           <td><var class="varname">RegexIterator::GET_MATCH</var></td>
           <td>
            See <span class="function">preg_match</span>.
           </td>
          </tr>

          <tr>
           <td><var class="varname">RegexIterator::MATCH</var></td>
           <td>
            See <span class="function">preg_match</span>.
           </td>
          </tr>

          <tr>
           <td><var class="varname">RegexIterator::REPLACE</var></td>
           <td>
            none.
           </td>
          </tr>

          <tr>
           <td><var class="varname">RegexIterator::SPLIT</var></td>
           <td>
            See <span class="function">preg_split</span>.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: RegexIterator.setFlags
name: flags
type: int
description:
<p class="para">
       The flags to set, a bitmask of class constants.
      </p>
      <p class="para">
       The available flags are listed below. The actual
       meanings of these flags are described in the
       <a href="class.regexiterator.html#regexiterator.constants" class="link">predefined constants</a>.
       <table class="doctable table">
        <caption><strong><span class="classname">RegexIterator</span> flags</strong></caption>
        
         <thead>
          <tr>
           <th>value</th>
           <th>constant</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>1</td>
           <td>
            <a href="class.regexiterator.html#regexiterator.constants.use-key" class="link">RegexIterator::USE_KEY</a>
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: RegexIterator.setMode
name: mode
type: int
description:
<p class="para">
       The operation mode.
      </p>
      <p class="para">
       The available modes are listed below. The actual
       meanings of these modes are described in the
       <a href="class.regexiterator.html#regexiterator.constants" class="link">predefined constants</a>.
       <table class="doctable table">
        <caption><strong><span class="classname">RegexIterator</span> modes</strong></caption>
        
         <thead>
          <tr>
           <th>value</th>
           <th>constant</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>0</td>
           <td>
            <a href="class.regexiterator.html#regexiterator.constants.match" class="link">RegexIterator::MATCH</a>
           </td>
          </tr>

          <tr>
           <td>1</td>
           <td>
            <a href="class.regexiterator.html#regexiterator.constants.get-match" class="link">RegexIterator::GET_MATCH</a>
           </td>
          </tr>

          <tr>
           <td>2</td>
           <td>
            <a href="class.regexiterator.html#regexiterator.constants.all-matches" class="link">RegexIterator::ALL_MATCHES</a>
           </td>
          </tr>

          <tr>
           <td>3</td>
           <td>
            <a href="class.regexiterator.html#regexiterator.constants.split" class="link">RegexIterator::SPLIT</a>
           </td>
          </tr>

          <tr>
           <td>4</td>
           <td>
            <a href="class.regexiterator.html#regexiterator.constants.replace" class="link">RegexIterator::REPLACE</a>
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: RegexIterator.setPregFlags
name: pregFlags
type: int
description:
<p class="para">
       The regular expression flags. See  <span class="methodname">RegexIterator::__construct</span>
       for an overview of available flags.
      </p>


function_name: class_implements
name: object_or_class
type: string
description:
<p class="para">
       An object (class instance) or a string (class or interface name).
      </p>


function_name: class_implements
name: autoload
type: bool
description:
<p class="para">
       Whether to <a href="language.oop5.autoload.html" class="link">autoload</a>
       if not already loaded.
      </p>


function_name: iterator_apply
name: callback
type: callable
description:
<p class="para">
       The callback function to call on every element.
       This function only receives the given <code class="parameter">args</code>, so it
       is nullary by default. If <code class="literal">count($args) === 3</code>, for
       instance, the callback function is ternary.
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <span class="simpara">
         The function must return <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> in order to
         continue iterating over the <code class="parameter">iterator</code>.
        </span>
       </p></blockquote>
      </p>


function_name: iterator_apply
name: args
type: null
description:
<p class="para">
       An <span class="type">array</span> of arguments; each element of
       <code class="parameter">args</code> is passed to the callback
       <code class="parameter">callback</code> as separate argument.
      </p>


function_name: iterator_to_array
name: preserve_keys
type: bool
description:
<p class="para">
       Whether to use the iterator element keys as index.
      </p>
      <p class="para">
       If a key is an <span class="type">array</span> or
       <span class="type">object</span>, a warning will be generated. <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> keys will be
       converted to an empty string, <span class="type">float</span> keys will be
       truncated to their <span class="type">int</span> counterpart,
       <span class="type">resource</span> keys will generate a warning and be converted to
       their resource ID, and <span class="type">bool</span> keys will be converted to
       integers.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        If this parameter is not set or set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, duplicate keys will be
        overwritten. The last value with a given key will be in the returned
        <span class="type">array</span>. Set this parameter to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> to get all the values
        in any case.
       </p>
      </p></blockquote>


function_name: spl_autoload_extensions
name: file_extensions
type: null
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, it simply returns the current list
       of extensions each separated by comma. To modify the list of file
       extensions, simply invoke the functions with the new list of file
       extensions to use in a single string with each extensions separated
       by comma.
      </p>


function_name: spl_autoload_register
name: callback
type: null
description:
<p class="para">
       The autoload function being registered.
       If <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, then the default implementation of
       <span class="function">spl_autoload</span> will be registered.      
      </p>
      <div class="methodsynopsis dc-description">
       <span class="type">void</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">string</span> <code class="parameter">$class</code></span>)</div>

      <p class="para">
       The <code class="parameter">class</code> will not contain the leading
       backslash of a fully-qualified identifier.
      </p>


function_name: spl_autoload_register
name: throw
type: bool
description:
<p class="para">
       This parameter specifies whether
       <span class="function">spl_autoload_register</span> should throw 
       exceptions when the <code class="parameter">callback</code>
       cannot be registered.
      </p>
      <div class="warning"><strong class="warning">Warning</strong>
        <p class="para">
          This parameter is ignored as of PHP 8.0.0, and a notice will be
          emitted if set to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>. <span class="function">spl_autoload_register</span>
          will now always throw a <span class="classname">TypeError</span> on invalid
          arguments.
        </p>
      </div>


function_name: spl_autoload_register
name: prepend
type: bool
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, <span class="function">spl_autoload_register</span> will prepend
       the autoloader on the autoload queue instead of appending it.
      </p>


function_name: spl_autoload
name: file_extensions
type: null
description:
<p class="para">
       By default it checks all <a href="ini.core.html#ini.include-path" class="link">include_path</a>s to
       contain filenames built up by the lowercase class name appended by the
       filename extensions <code class="literal">.inc</code> and <code class="literal">.php</code>.
      </p>


function_name: SplFileInfo.getFileInfo
name: class
type: null
description:
<p class="para">
       Name of an <span class="classname">SplFileInfo</span> derived class to use. 
      </p>


function_name: SplFileInfo.getPathInfo
name: class
type: null
description:
<p class="para">
       Name of an <span class="classname">SplFileInfo</span> derived class to use, or itself if <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
      </p>


function_name: SplFileInfo.openFile
name: mode
type: string
initializer: "r"
description:
<p class="para">
       The mode for opening the file. See the <span class="function">fopen</span>
       documentation for descriptions of possible modes. The default 
       is read only.
      </p>


function_name: SplFileInfo.openFile
name: useIncludePath
type: bool
description:
<p class="para">
       When set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the filename is also
searched for within the <a href="ini.core.html#ini.include-path" class="link">include_path</a>
      </p>


function_name: SplFileInfo.openFile
name: context
type: null
description:
<p class="para">
       Refer to the <a href="context.html" class="link">context</a>
section of the manual for a description of <code class="literal">contexts</code>.
      </p>


function_name: SplFileInfo.setFileClass
name: class
type: string
initializer: SplFileObject::class
description:
<p class="para">
       The class name to use when  <span class="methodname">SplFileInfo::openFile</span>
       is called.
      </p>


function_name: SplFileInfo.setInfoClass
name: class
type: string
initializer: SplFileInfo::class
description:
<p class="para">
       The class name to use when
        <span class="methodname">SplFileInfo::getFileInfo</span> and
        <span class="methodname">SplFileInfo::getPathInfo</span> are called.
      </p>


function_name: SplFileObject.__construct
name: filename
type: string
description:
<p class="para">
       The file to read.
      </p>
      <div class="tip"><strong class="tip">Tip</strong><p class="simpara">A URL can be used as a
filename with this function if the <a href="filesystem.configuration.html#ini.allow-url-fopen" class="link">fopen wrappers</a> have been enabled.
See <span class="function">fopen</span> for more details on how to specify the
filename. See the <a href="wrappers.html" class="xref">Supported Protocols and Wrappers</a> for links to information
about what abilities the various wrappers have, notes on their usage,
and information on any predefined variables they may
provide.</p></div>


function_name: SplFileObject.__construct
name: mode
type: string
initializer: "r"
description:
<p class="para">
       The mode in which to open the file. See <span class="function">fopen</span> for a list of allowed modes.
      </p>


function_name: SplFileObject.__construct
name: useIncludePath
type: bool
description:
<p class="para">
       Whether to search in the <a href="ini.core.html#ini.include-path" class="link">include_path</a> for <code class="parameter">filename</code>.
      </p>


function_name: SplFileObject.__construct
name: context
type: null
description:
<p class="para">
       A valid context resource created with <span class="function">stream_context_create</span>.
      </p>


function_name: SplFileObject.fgetcsv
name: separator
type: string
initializer: ","
description:
<p class="para">
       The field delimiter (one single-byte character only). Defaults as a comma or the value set using  <span class="methodname">SplFileObject::setCsvControl</span>.
      </p>


function_name: SplFileObject.fgetcsv
name: enclosure
type: string
initializer: "\""
description:
<p class="para">
       The field enclosure character (one single-byte character only). Defaults as a double quotation mark or the value set using  <span class="methodname">SplFileObject::setCsvControl</span>.
      </p>


function_name: SplFileObject.fgetcsv
name: escape
type: string
initializer: "\\"
description:
<p class="para">
       The escape character (at most one single-byte character). Defaults as a backslash (<code class="literal">\</code>) or the value set using  <span class="methodname">SplFileObject::setCsvControl</span>.
       An empty string (<code class="literal">&quot;&quot;</code>) disables the proprietary escape mechanism.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        Usually an <code class="parameter">enclosure</code> character is escaped inside
        a field by doubling it; however, the <code class="parameter">escape</code>
        character can be used as an alternative. So for the default parameter
        values <code class="literal">&quot;&quot;</code> and <code class="literal">\&quot;</code> have the same
        meaning. Other than allowing to escape the
        <code class="parameter">enclosure</code> character the
        <code class="parameter">escape</code> character has no special meaning; it isn&#039;t
        even meant to escape itself.
       </span>
      </p></blockquote>


function_name: SplFileObject.fgetss
name: allowable_tags
type: string
description:
<p class="para">
       Optional parameter to specify tags which should not be stripped. 
      </p>


function_name: SplFileObject.flock
name: wouldBlock
type: int
description:
<p class="para">
       Set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> if the lock would block (EWOULDBLOCK errno condition).
      </p>


function_name: SplFileObject.fputcsv
name: separator
type: string
initializer: ","
description:
<p class="para">
      The optional <code class="parameter">separator</code> parameter sets the field
      delimiter (one single-byte character only).
     </p>


function_name: SplFileObject.fputcsv
name: enclosure
type: string
initializer: "\""
description:
<p class="para">
      The optional <code class="parameter">enclosure</code> parameter sets the field
       enclosure (one single-byte character only).
     </p>


function_name: SplFileObject.fputcsv
name: escape
type: string
initializer: "\\"
description:
<p class="para">
      The optional <code class="parameter">escape</code> parameter sets the
      escape character (at most one single-byte character).
      An empty string (<code class="literal">&quot;&quot;</code>) disables the proprietary escape mechanism.
     </p>


function_name: SplFileObject.fputcsv
name: eol
type: string
initializer: "\n"
description:
<p class="para">
      The optional <code class="parameter">eol</code> parameter sets
      a custom End of Line sequence.
     </p>


function_name: SplFileObject.fseek
name: offset
type: int
description:
<p class="para">
       The offset. A negative value can be used to move backwards through the file which
       is useful when SEEK_END is used as the <code class="parameter">whence</code> value.
      </p>


function_name: SplFileObject.fseek
name: whence
type: int
description:
<p class="para">
       <code class="parameter">whence</code> values are:
       <ul class="simplelist">
        <li><strong><code><a href="filesystem.constants.html#constant.seek-set">SEEK_SET</a></code></strong> - Set position equal to <code class="parameter">offset</code> bytes.</li>
        <li><strong><code><a href="filesystem.constants.html#constant.seek-cur">SEEK_CUR</a></code></strong> - Set position to current location plus <code class="parameter">offset</code>.</li>
        <li><strong><code><a href="filesystem.constants.html#constant.seek-end">SEEK_END</a></code></strong> - Set position to end-of-file plus <code class="parameter">offset</code>.</li>
       </ul>
      </p>
      <p class="para">
       If <code class="parameter">whence</code> is not specified, it is assumed to be <strong><code><a href="filesystem.constants.html#constant.seek-set">SEEK_SET</a></code></strong>.
      </p>


function_name: SplFileObject.ftruncate
name: size
type: int
description:
<p class="para">
       The size to truncate to.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        If <code class="parameter">size</code> is larger than the file it is extended with null bytes.
       </p>
       <p class="para">
        If <code class="parameter">size</code> is smaller than the file, the extra data will be lost.
       </p>
      </p></blockquote>


function_name: SplFileObject.fwrite
name: length
type: int
description:
<p class="para">
       If the <code class="parameter">length</code> argument is given, writing will
       stop after <code class="parameter">length</code> bytes have been written or
       the end of <code class="parameter">string</code> is reached, whichever comes
       first.
      </p>


function_name: SplFileObject.setCsvControl
name: escape
type: string
initializer: "\\"
description:
<p class="para">
       The field escape character (at most one single-byte character).
       An empty string (<code class="literal">&quot;&quot;</code>) disables the proprietary escape mechanism.
      </p>


function_name: SplFileObject.setFlags
name: flags
type: int
description:
<p class="para">
       Bit mask of the flags to set. See 
       <a href="class.splfileobject.html#splfileobject.constants" class="link">SplFileObject constants</a> 
       for the available flags.
      </p>


function_name: SplTempFileObject.__construct
name: maxMemory
type: int
initializer: 2 * 1024 * 1024
description:
<p class="para">
       The maximum amount of memory (in bytes, default is 2 MB) for 
       the temporary file to use. If the temporary file exceeds this 
       size, it will be moved to a file in the system&#039;s temp directory.
      </p>
      <p class="para">
       If <code class="parameter">maxMemory</code> is negative, only memory
       will be used. If <code class="parameter">maxMemory</code> is zero, 
       no memory will be used.
      </p>


function_name: ArrayObject.__construct
name: array
type: object
initializer: []
description:
<p class="para">
       The <code class="parameter">array</code> parameter accepts an 
       <span class="type">array</span> or an <span class="type">Object</span>.
      </p>


function_name: ArrayObject.__construct
name: flags
type: int
description:
<p class="para">
       Flags to control the behaviour of the <span class="classname">ArrayObject</span> object.
       See  <span class="methodname">ArrayObject::setFlags</span>.
      </p>


function_name: ArrayObject.__construct
name: iteratorClass
type: string
initializer: ArrayIterator::class
description:
<p class="para">
       Specify the class that will be used for iteration of the <span class="classname">ArrayObject</span> object.
       The class must implement <span class="interfacename">ArrayIterator</span>.
      </p>


function_name: ArrayObject.exchangeArray
name: array
type: object
description:
<p class="para">
       The new <span class="type">array</span> or <span class="type">object</span> to exchange with the current array.
      </p>


function_name: ArrayObject.setFlags
name: flags
type: int
description:
<p class="para">
       The new ArrayObject behavior.
       It takes on either a bitmask, or named constants. Using named
       constants is strongly encouraged to ensure compatibility for future
       versions.
      </p>
      <p class="para">
       The available behavior flags are listed below. The actual
       meanings of these flags are described in the
       <a href="class.arrayobject.html#arrayobject.constants" class="link">predefined constants</a>.
       <table class="doctable table">
        <caption><strong>ArrayObject behavior flags</strong></caption>
        
         <thead>
          <tr>
           <th>value</th>
           <th>constant</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>1</td>
           <td>
            <a href="class.arrayobject.html#arrayobject.constants.std-prop-list" class="link">ArrayObject::STD_PROP_LIST</a>
           </td>
          </tr>

          <tr>
           <td>2</td>
           <td>
            <a href="class.arrayobject.html#arrayobject.constants.array-as-props" class="link">ArrayObject::ARRAY_AS_PROPS</a>
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: ArrayObject.setIteratorClass
name: iteratorClass
type: string
description:
<p class="para">
       The classname of the array iterator to use when iterating over this object.
      </p>


function_name: SplObserver.update
name: subject
type: SplSubject
description:
<p class="para">
       The <span class="classname">SplSubject</span> notifying the observer of an update.
      </p>


function_name: php_user_filter.filter
name: in
type: resource
description:
<p class="para">
      <code class="parameter">in</code> is a resource pointing to a <code class="literal">bucket brigade</code>
      which contains one or more <code class="literal">bucket</code> objects containing data to be filtered.
     </p>


function_name: php_user_filter.filter
name: out
type: resource
description:
<p class="para">
      <code class="parameter">out</code> is a resource pointing to a second <code class="literal">bucket brigade</code>
      into which your modified buckets should be placed.
     </p>


function_name: php_user_filter.filter
name: consumed
type: int
description:
<p class="para">
      <code class="parameter">consumed</code>, which must <em>always</em>
      be declared by reference, should be incremented by the length of the data
      which your filter reads in and alters.  In most cases this means you will
      increment <code class="parameter">consumed</code> by <code class="literal">$bucket-&gt;datalen</code>
      for each <code class="literal">$bucket</code>.
     </p>


function_name: php_user_filter.filter
name: closing
type: bool
description:
<p class="para">
      If the stream is in the process of closing
      (and therefore this is the last pass through the filterchain),
      the <code class="parameter">closing</code> parameter will be set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>.
     </p>


function_name: streamWrapper.dir_opendir
name: path
type: string
description:
<p class="para">
       Specifies the URL that was passed to <span class="function">opendir</span>.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        The URL can be broken apart with <span class="function">parse_url</span>.
       </p>
      </p></blockquote>


function_name: streamWrapper.mkdir
name: options
type: int
description:
<p class="para">
       A bitwise mask of values, such as <strong><code>STREAM_MKDIR_RECURSIVE</code></strong>.
      </p>


function_name: streamWrapper.rename
name: path_to
type: string
description:
<p class="para">
       The URL which the <code class="parameter">path_from</code> should be renamed to.
      </p>


function_name: streamWrapper.stream_cast
name: cast_as
type: int
description:
<p class="para">
       Can be <strong><code><a href="stream.constants.html#constant.stream-cast-for-select">STREAM_CAST_FOR_SELECT</a></code></strong> when
       <span class="function">stream_select</span> is calling
       <span class="function">stream_cast</span> or
       <strong><code><a href="stream.constants.html#constant.stream-cast-as-stream">STREAM_CAST_AS_STREAM</a></code></strong> when
       <span class="function">stream_cast</span> is called for other uses.
      </p>


function_name: streamWrapper.stream_lock
name: operation
type: int
description:
<p class="simpara">
          <strong><code><a href="filesystem.constants.html#constant.lock-nb">LOCK_NB</a></code></strong> if you don&#039;t want
          <span class="function">flock</span> to block while locking.
          (not supported on Windows)
         </p>


function_name: streamWrapper.stream_metadata
name: path
type: string
description:
<p class="para">
       The file path or URL to set metadata.  Note that in the case of a URL, it must be a :// delimited
       URL.  Other URL forms are not supported.
      </p>


function_name: streamWrapper.stream_metadata
name: option
type: int
description:
<p class="para">
       One of:
       <ul class="simplelist">
        <li><strong><code><a href="stream.constants.html#constant.stream-meta-touch">STREAM_META_TOUCH</a></code></strong> (The method was called in response to <span class="function">touch</span>)</li>
        <li><strong><code><a href="stream.constants.html#constant.stream-meta-owner-name">STREAM_META_OWNER_NAME</a></code></strong> (The method was called in response to <span class="function">chown</span> with string parameter)</li>
        <li><strong><code><a href="stream.constants.html#constant.stream-meta-owner">STREAM_META_OWNER</a></code></strong> (The method was called in response to  <span class="function">chown</span>)</li>
        <li><strong><code><a href="stream.constants.html#constant.stream-meta-group-name">STREAM_META_GROUP_NAME</a></code></strong> (The method was called in response to <span class="function">chgrp</span>)</li>
        <li><strong><code><a href="stream.constants.html#constant.stream-meta-group">STREAM_META_GROUP</a></code></strong> (The method was called in response to <span class="function">chgrp</span>)</li>
        <li><strong><code><a href="stream.constants.html#constant.stream-meta-access">STREAM_META_ACCESS</a></code></strong> (The method was called in response to  <span class="function">chmod</span>)</li>
       </ul>
      </p>


function_name: streamWrapper.stream_metadata
name: value
type: mixed
description:
<p class="para">
       If <code class="parameter">option</code> is
       <ul class="simplelist">
        <li><strong><code><a href="stream.constants.html#constant.stream-meta-touch">STREAM_META_TOUCH</a></code></strong>: <span class="type">Array</span> consisting of two arguments of the <span class="function">touch</span>
        function.</li>
        <li><strong><code><a href="stream.constants.html#constant.stream-meta-owner-name">STREAM_META_OWNER_NAME</a></code></strong> or <strong><code><a href="stream.constants.html#constant.stream-meta-group-name">STREAM_META_GROUP_NAME</a></code></strong>:
        The name of the owner user/group as <span class="type">string</span>.</li>
        <li><strong><code><a href="stream.constants.html#constant.stream-meta-owner">STREAM_META_OWNER</a></code></strong> or <strong><code><a href="stream.constants.html#constant.stream-meta-group">STREAM_META_GROUP</a></code></strong>:
        The value owner user/group argument as <span class="type">int</span>.</li>
        <li><strong><code><a href="stream.constants.html#constant.stream-meta-access">STREAM_META_ACCESS</a></code></strong>: The argument of the <span class="function">chmod</span> as <span class="type">int</span>.</li>
       </ul>
      </p>


function_name: streamWrapper.stream_open
name: path
type: string
description:
<p class="para">
       Specifies the URL that was passed to the original function.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        The URL can be broken apart with <span class="function">parse_url</span>.  Note that only URLs
        delimited by :// are supported. : and :/ while technically valid URLs, are not.
       </p>
      </p></blockquote>


function_name: streamWrapper.stream_open
name: mode
type: string
description:
<p class="para">
       The mode used to open the file, as detailed for <span class="function">fopen</span>.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Remember to check if the <code class="parameter">mode</code> is valid for the
        <code class="parameter">path</code> requested.
       </p>
      </p></blockquote>


function_name: streamWrapper.stream_open
name: options
type: int
description:
<p class="para">
       Holds additional flags set by the streams API. It can hold one or more
       of the following values OR&#039;d together.
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Flag</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="stream.constants.html#constant.stream-use-path">STREAM_USE_PATH</a></code></strong></td>
           <td>If <code class="parameter">path</code> is relative, search
            for the resource using the include_path.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="stream.constants.html#constant.stream-report-errors">STREAM_REPORT_ERRORS</a></code></strong></td>
           <td>If this flag is set, you are responsible for raising
            errors using <span class="function">trigger_error</span> during
            opening of the stream.  If this flag is not set, you
            should not raise any errors.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: streamWrapper.stream_open
name: opened_path
type: null
description:
<p class="para">
       If the <code class="parameter">path</code> is opened successfully,
       and <strong><code><a href="stream.constants.html#constant.stream-use-path">STREAM_USE_PATH</a></code></strong> is set in <code class="parameter">options</code>,
       <code class="parameter">opened_path</code> should be set to the full
       path of the file/resource that was actually opened.
      </p>


function_name: streamWrapper.stream_read
name: count
type: int
description:
<p class="para">
       How many bytes of data from the current position should be returned.
      </p>


function_name: streamWrapper.stream_seek
name: whence
type: int
initializer: SEEK_SET
description:
<p class="para">
       Possible values:
       <ul class="simplelist">
        <li><strong><code><a href="filesystem.constants.html#constant.seek-set">SEEK_SET</a></code></strong> - Set position equal to <code class="parameter">offset</code> bytes.</li>
        <li><strong><code><a href="filesystem.constants.html#constant.seek-cur">SEEK_CUR</a></code></strong> - Set position to current location plus <code class="parameter">offset</code>.</li>
        <li><strong><code><a href="filesystem.constants.html#constant.seek-end">SEEK_END</a></code></strong> - Set position to end-of-file plus <code class="parameter">offset</code>.</li>
       </ul>
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        The current implementation never sets <code class="parameter">whence</code> to
        <strong><code><a href="filesystem.constants.html#constant.seek-cur">SEEK_CUR</a></code></strong>; instead such seeks are internally converted
        to <strong><code><a href="filesystem.constants.html#constant.seek-set">SEEK_SET</a></code></strong> seeks.
       </span>
      </p></blockquote>


function_name: streamWrapper.stream_set_option
name: option
type: int
description:
<p class="para">
       One of:
       <ul class="simplelist">
        <li><strong><code>STREAM_OPTION_BLOCKING</code></strong> (The method was called in response to <span class="function">stream_set_blocking</span>)</li>
        <li><strong><code>STREAM_OPTION_READ_TIMEOUT</code></strong> (The method was called in response to <span class="function">stream_set_timeout</span>)</li>
        <li><strong><code>STREAM_OPTION_WRITE_BUFFER</code></strong> (The method was called in response to  <span class="function">stream_set_write_buffer</span>)</li>
       </ul>
      </p>


function_name: streamWrapper.stream_set_option
name: arg1
type: int
description:
<p class="para">
       If <code class="parameter">option</code> is
       <ul class="simplelist">
        <li><strong><code>STREAM_OPTION_BLOCKING</code></strong>: requested blocking mode (1 meaning block 0 not blocking).</li>
        <li><strong><code>STREAM_OPTION_READ_TIMEOUT</code></strong>: the timeout in seconds.</li>
        <li><strong><code>STREAM_OPTION_WRITE_BUFFER</code></strong>: buffer mode (<strong><code><a href="stream.constants.html#constant.stream-buffer-none">STREAM_BUFFER_NONE</a></code></strong> or <strong><code><a href="stream.constants.html#constant.stream-buffer-full">STREAM_BUFFER_FULL</a></code></strong>).</li>
       </ul>
      </p>


function_name: streamWrapper.stream_set_option
name: arg2
type: int
description:
<p class="para">
       If <code class="parameter">option</code> is
       <ul class="simplelist">
        <li><strong><code>STREAM_OPTION_BLOCKING</code></strong>: This option is not set.</li>
        <li><strong><code>STREAM_OPTION_READ_TIMEOUT</code></strong>: the timeout in microseconds.</li>
        <li><strong><code>STREAM_OPTION_WRITE_BUFFER</code></strong>: the requested buffer size.</li>
       </ul>
      </p>


function_name: streamWrapper.stream_write
name: data
type: string
description:
<p class="para">
       Should be stored into the underlying stream.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        If there is not enough room in the underlying stream, store as much as
        possible.
       </p>
      </p></blockquote>


function_name: streamWrapper.url_stat
name: path
type: string
description:
<p class="para">
       The file path or URL to stat.  Note that in the case of a URL, it must be a :// delimited
       URL.  Other URL forms are not supported.
      </p>


function_name: streamWrapper.url_stat
name: flags
type: int
description:
<p class="para">
       Holds additional flags set by the streams API. It can hold one or more
       of the following values OR&#039;d together.
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Flag</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>STREAM_URL_STAT_LINK</td>
           <td>
            For resources with the ability to link to other resource
            (such as an HTTP Location: forward, or a filesystem
            symlink).  This flag specified that only information
            about the link itself should be returned, not the
            resource pointed to by the link.  This flag is set in
            response to calls to <span class="function">lstat</span>,
            <span class="function">is_link</span>, or <span class="function">filetype</span>.
           </td>
          </tr>

          <tr>
           <td>STREAM_URL_STAT_QUIET</td>
           <td>If this flag is set, your wrapper should not raise any
            errors.  If this flag is not set, you are responsible for
            reporting errors using the <span class="function">trigger_error</span>
            function during stating of the path.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: stream_bucket_prepend
name: brigade
type: resource
description:
<p class="para">
      <code class="parameter">brigade</code> is a resource pointing to a <code class="literal">bucket brigade</code>
      which contains one or more <code class="literal">bucket</code> objects.
     </p>


function_name: stream_context_create
name: options
type: null
description:
<p class="para">
       Must be an associative array of associative arrays in the format
       <code class="literal">$arr[&#039;wrapper&#039;][&#039;option&#039;] = $value</code>, or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>. Refer to <a href="context.html" class="link">context options</a> for a list of available wrappers and options.
      </p>
      <p class="para">
       Defaults to <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
      </p>


function_name: stream_context_create
name: params
type: null
description:
<p class="para">
       Must be an associative array in the format
       <code class="literal">$arr[&#039;parameter&#039;] = $value</code>, or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
       Refer to <a href="context.params.html" class="link">context parameters</a> for
       a listing of standard stream parameters.
      </p>


function_name: stream_context_get_default
name: options
type: null
description:
<p class="simpara">
       <code class="parameter">options</code> must be an associative
       array of associative arrays in the format
       <code class="literal">$arr[&#039;wrapper&#039;][&#039;option&#039;] = $value</code>, or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
      </p>


function_name: stream_context_get_options
name: stream_or_context
type: resource
description:
<p class="para">
       The <span class="type">stream</span> or <span class="type">context</span> to get options from
      </p>


function_name: stream_context_get_params
name: context
type: resource
description:
<p class="para">
       A stream <span class="type">resource</span> or a
       <a href="context.html" class="link">context</a> <span class="type">resource</span>
      </p>


function_name: stream_context_set_default
name: options
type: array
description:
<p class="para">
       The options to set for the default context.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        <code class="parameter">options</code> must be an associative
        array of associative arrays in the format
        <code class="literal">$arr[&#039;wrapper&#039;][&#039;option&#039;] = $value</code>.
       </p>
      </p></blockquote>


function_name: stream_context_set_option
name: wrapper
type: string
description:
<p class="para">
       The name of the wrapper (which may be different than the protocol).
       Refer to <a href="context.html" class="link">context options and parameters</a>
       for a listing of stream options.
     </p>


function_name: stream_context_set_option
name: options
type: array
description:
<p class="para">
       The options to set for <code class="parameter">stream_or_context</code>.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        <code class="parameter">options</code> must be an associative
        array of associative arrays in the format
        <code class="literal">$arr[&#039;wrapper&#039;][&#039;option&#039;] = $value</code>.
       </p>
       <p class="para">
       Refer to <a href="context.html" class="link">context options and parameters</a>
       for a listing of stream options.
       </p>
      </p></blockquote>


function_name: stream_context_set_options
name: options
type: array
description:
<p class="para">
       The options to set for <code class="parameter">context</code>.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        <code class="parameter">options</code> must be an associative
        <span class="type">array</span> of associative arrays in the format
        <code class="code">$array[&#039;wrapper&#039;][&#039;option&#039;] = $value</code>.
       </p>
       <p class="para">
        Refer to <a href="context.html" class="link">context options and parameters</a>
        for a listing of stream options.
       </p>
      </p></blockquote>


function_name: stream_context_set_params
name: params
type: array
description:
<p class="para">
       An associative array of parameters to be set in the following format:
       <code class="literal">$params[&#039;paramname&#039;] = &quot;paramvalue&quot;;</code>.
      </p>
      <table class="doctable table">
       <caption><strong>Supported parameters</strong></caption>
       
        <thead>
         <tr>
          <th>Parameter</th>
          <th>Purpose</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>
           <code class="literal">notification</code>
          </td>
          <td>
           Name of user-defined callback function to be called whenever a stream triggers a notification.
           Only supported for <a href="wrappers.http.html" class="link">http://</a> and
           <a href="wrappers.ftp.html" class="link">ftp://</a> stream wrappers.
          </td>
         </tr>

         <tr>
          <td>
           <code class="literal">options</code>
          </td>
          <td>
           Array of options as in <a href="context.html" class="link">context options and parameters</a>.
          </td>
         </tr>

        </tbody>
       
      </table>


function_name: stream_filter_append
name: read_write
type: int
description:
<p class="para">
       By default, <span class="function">stream_filter_append</span> will
       attach the filter to the <code class="literal">read filter chain</code>
       if the file was opened for reading (i.e. File Mode:
       <code class="literal">r</code>, and/or <code class="literal">+</code>).  The filter
       will also be attached to the <code class="literal">write filter chain</code>
       if the file was opened for writing (i.e. File Mode:
       <code class="literal">w</code>, <code class="literal">a</code>, and/or <code class="literal">+</code>).
       <strong><code><a href="stream.constants.html#constant.stream-filter-read">STREAM_FILTER_READ</a></code></strong>,
       <strong><code><a href="stream.constants.html#constant.stream-filter-write">STREAM_FILTER_WRITE</a></code></strong>, and/or
       <strong><code><a href="stream.constants.html#constant.stream-filter-all">STREAM_FILTER_ALL</a></code></strong> can also be passed to the
       <code class="parameter">read_write</code> parameter to override this behavior.
      </p>


function_name: stream_filter_append
name: params
type: mixed
description:
<p class="para">
       This filter will be added with the specified 
       <code class="parameter">params</code> to the <em>end</em> of
       the list and will therefore be called last during stream operations.
       To add a filter to the beginning of the list, use
       <span class="function">stream_filter_prepend</span>.
      </p>


function_name: stream_filter_prepend
name: read_write
type: int
description:
<p class="para">
       By default, <span class="function">stream_filter_prepend</span> will
       attach the filter to the <code class="literal">read filter chain</code>
       if the file was opened for reading (i.e. File Mode:
       <code class="literal">r</code>, and/or <code class="literal">+</code>).  The filter
       will also be attached to the <code class="literal">write filter chain</code>
       if the file was opened for writing (i.e. File Mode:
       <code class="literal">w</code>, <code class="literal">a</code>, and/or <code class="literal">+</code>).
       <strong><code><a href="stream.constants.html#constant.stream-filter-read">STREAM_FILTER_READ</a></code></strong>,
       <strong><code><a href="stream.constants.html#constant.stream-filter-write">STREAM_FILTER_WRITE</a></code></strong>, and/or
       <strong><code><a href="stream.constants.html#constant.stream-filter-all">STREAM_FILTER_ALL</a></code></strong> can also be passed to the
       <code class="parameter">read_write</code> parameter to override this behavior.
       See <span class="function">stream_filter_append</span> for an example of
       using this parameter.
      </p>


function_name: stream_filter_prepend
name: params
type: mixed
description:
<p class="para">
       This filter will be added with the specified <code class="parameter">params</code>
       to the <em>beginning</em> of the list and will therefore be
       called first during stream operations.  To add a filter to the end of the
       list, use <span class="function">stream_filter_append</span>.
      </p>


function_name: stream_filter_register
name: class
type: string
description:
<p class="para">
       To implement a filter, you need to define a class as an extension of
       <span class="classname">php_user_filter</span> with a number of member
       functions. When performing read/write operations on the stream
       to which your filter is attached, PHP will pass the data through your
       filter (and any other filters attached to that stream) so that the
       data may be modified as desired. You must implement the methods
       exactly as described in <span class="classname">php_user_filter</span> - doing
       otherwise will lead to undefined behaviour.
      </p>


function_name: stream_get_contents
name: stream
type: resource
description:
<p class="para">
       A stream resource (e.g. returned from <span class="function">fopen</span>)
      </p>


function_name: stream_get_contents
name: length
type: null
description:
<p class="para">
       The maximum bytes to read. Defaults to <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> (read all the remaining
       buffer).
      </p>


function_name: stream_get_contents
name: offset
type: int
initializer: -1
description:
<p class="para">
       Seek to the specified offset before reading. If this number is negative,
       no seeking will occur and reading will start from the current position.
      </p>


function_name: stream_get_line
name: length
type: int
description:
<p class="para">
       The maximum number of bytes to read from the handle.
       Negative values are not supported.
       Zero (<code class="literal">0</code>) means the default socket chunk size,
       i.e. <code class="literal">8192</code> bytes.
      </p>


function_name: stream_get_meta_data
name: stream
type: resource
description:
<p class="para">
       The stream can be any stream created by <span class="function">fopen</span>,
       <span class="function">fsockopen</span> <span class="function">pfsockopen</span> and <span class="function">stream_socket_client</span>.
      </p>


function_name: stream_notification_callback
name: notification_code
type: int
description:
<p class="para">
       One of the <strong><code>STREAM_NOTIFY_*</code></strong> notification constants.
      </p>


function_name: stream_notification_callback
name: severity
type: int
description:
<p class="para">
       One of the <strong><code>STREAM_NOTIFY_SEVERITY_*</code></strong> notification constants.
      </p>


function_name: stream_notification_callback
name: message_code
type: int
description:
<p class="para">
       Passed if a descriptive message code is available for the event.
      </p>
      <p class="para">
       The meaning of this value is dependent on the specific wrapper in use.
      </p>


function_name: stream_notification_callback
name: bytes_transferred
type: int
description:
<p class="para">
       If applicable, the <code class="parameter">bytes_transferred</code> will be
       populated.
      </p>


function_name: stream_notification_callback
name: bytes_max
type: int
description:
<p class="para">
       If applicable, the <code class="parameter">bytes_max</code> will be
       populated.
      </p>


function_name: stream_select
name: read
type: null
description:
<p class="para">
       The streams listed in the <code class="parameter">read</code> array will be watched to
       see if characters become available for reading (more precisely, to see if
       a read will not block - in particular, a stream resource is also ready on
       end-of-file, in which case an <span class="function">fread</span> will return
       a zero length string).
      </p>


function_name: stream_select
name: write
type: null
description:
<p class="para">
       The streams listed in the <code class="parameter">write</code> array will be
       watched to see if a write will not block.
      </p>


function_name: stream_select
name: except
type: null
description:
<p class="para">
       The streams listed in the <code class="parameter">except</code> array will be
       watched for high priority exceptional (&quot;out-of-band&quot;) data arriving.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        When <span class="function">stream_select</span> returns, the arrays
        <code class="parameter">read</code>, <code class="parameter">write</code> and
        <code class="parameter">except</code> are modified to indicate which stream
        resource(s) actually changed status.
        The original keys of the <span class="type">array</span>s are preserved.
       </p>
      </p></blockquote>


function_name: stream_select
name: seconds
type: null
description:
<p class="para">
       The <code class="parameter">seconds</code> and <code class="parameter">microseconds</code>
       together form the <em>timeout</em> parameter,
       <code class="parameter">seconds</code> specifies the number of seconds while
       <code class="parameter">microseconds</code> the number of microseconds.
       The <code class="parameter">timeout</code> is an upper bound on the amount of time
       that <span class="function">stream_select</span> will wait before it returns.
       If <code class="parameter">seconds</code> and <code class="parameter">microseconds</code> are
       both set to <code class="literal">0</code>, <span class="function">stream_select</span> will
       not wait for data - instead it will return immediately, indicating the
       current status of the streams.
      </p>
      <p class="para">
       If <code class="parameter">seconds</code> is <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> <span class="function">stream_select</span>
       can block indefinitely, returning only when an event on one of the
       watched streams occurs (or if a signal interrupts the system call).
      </p>
      <div class="warning"><strong class="warning">Warning</strong>
       <p class="para">
        Using a timeout value of <code class="literal">0</code> allows you to
        instantaneously poll the status of the streams, however, it is NOT a
        good idea to use a <code class="literal">0</code> timeout value in a loop as it
        will cause your script to consume too much CPU time.
       </p>
       <p class="para">
        It is much better to specify a timeout value of a few seconds, although
        if you need to be checking and running other code concurrently, using a
        timeout value of at least <code class="literal">200000</code> microseconds will
        help reduce the CPU usage of your script.
       </p>
       <p class="para">
        Remember that the timeout value is the maximum time that will elapse;
        <span class="function">stream_select</span> will return as soon as the
        requested streams are ready for use.
       </p>
      </div>


function_name: stream_set_blocking
name: enable
type: bool
description:
<p class="para">
       If <code class="parameter">enable</code> is <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>, the given stream
       will be switched to non-blocking mode, and if <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, it
       will be switched to blocking mode.  This affects calls like
       <span class="function">fgets</span> and <span class="function">fread</span>
       that read from the stream.  In non-blocking mode an
       <span class="function">fgets</span> call will always return right away
       while in blocking mode it will wait for data to become available
       on the stream.
      </p>


function_name: stream_set_read_buffer
name: size
type: int
description:
<p class="para">
      The number of bytes to buffer. If <code class="parameter">size</code>
      is 0 then read operations are unbuffered.  This ensures that all reads
      with <span class="function">fread</span> are completed before other processes are
      allowed to read from that input stream.
     </p>


function_name: stream_set_write_buffer
name: size
type: int
description:
<p class="para">
       The number of bytes to buffer. If <code class="parameter">size</code>
       is 0 then write operations are unbuffered.  This ensures that all writes
       with <span class="function">fwrite</span> are completed before other processes are
       allowed to write to that output stream.
      </p>


function_name: stream_socket_accept
name: timeout
type: null
description:
<p class="para">
       Override the default socket accept timeout. Time should be given in
       seconds. By default, <a href="filesystem.configuration.html#ini.default-socket-timeout" class="link">default_socket_timeout</a>
       is used.
      </p>


function_name: stream_socket_accept
name: peer_name
type: string
description:
<p class="para">
       Will be set to the name (address) of the client which connected, if
       included and available from the selected transport.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Can also be determined later using
        <span class="function">stream_socket_get_name</span>.
       </p>
      </p></blockquote>


function_name: stream_socket_client
name: error_code
type: int
description:
<p class="para">
       Will be set to the system level error number if connection fails.
      </p>


function_name: stream_socket_client
name: error_message
type: string
description:
<p class="para">
       Will be set to the system level error message if the connection fails.
      </p>


function_name: stream_socket_client
name: timeout
type: null
description:
<p class="para">
       Number of seconds until the <code class="literal">connect()</code> system call
       should timeout. By default, <a href="filesystem.configuration.html#ini.default-socket-timeout" class="link">default_socket_timeout</a>
       is used.
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <span class="simpara">
         This parameter only applies when not making asynchronous
         connection attempts.
        </span>
       </p></blockquote>
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
         To set a timeout for reading/writing data over the socket, use the
         <span class="function">stream_set_timeout</span>, as the
         <code class="parameter">timeout</code> only applies while making connecting
         the socket.
        </p>
       </p></blockquote>
      </p>


function_name: stream_socket_client
name: flags
type: int
description:
<p class="para">
       Bitmask field which may be set to any combination of connection flags.
       Currently the select of connection flags is limited to
       <strong><code><a href="stream.constants.html#constant.stream-client-connect">STREAM_CLIENT_CONNECT</a></code></strong> (default),
       <strong><code><a href="stream.constants.html#constant.stream-client-async-connect">STREAM_CLIENT_ASYNC_CONNECT</a></code></strong> and
       <strong><code><a href="stream.constants.html#constant.stream-client-persistent">STREAM_CLIENT_PERSISTENT</a></code></strong>.
      </p>


function_name: stream_socket_enable_crypto
name: crypto_method
type: null
description:
<p class="simpara"><strong><code>STREAM_CRYPTO_METHOD_TLSv1_3_SERVER</code></strong> (as of PHP 7.4.0)</p>


function_name: stream_socket_enable_crypto
name: session_stream
type: null
description:
<p class="para">
       Seed the stream with settings from <code class="parameter">session_stream</code>.
      </p>


function_name: stream_socket_get_name
name: remote
type: bool
description:
<p class="para">
       If set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> the <code class="literal">remote</code> socket name will be returned, if set
       to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> the <code class="literal">local</code> socket name will be returned.
      </p>


function_name: stream_socket_pair
name: domain
type: int
description:
<p class="para">
       The protocol family to be used: <strong><code><a href="stream.constants.html#constant.stream-pf-inet">STREAM_PF_INET</a></code></strong>,
       <strong><code><a href="stream.constants.html#constant.stream-pf-inet6">STREAM_PF_INET6</a></code></strong> or
       <strong><code><a href="stream.constants.html#constant.stream-pf-unix">STREAM_PF_UNIX</a></code></strong>
      </p>


function_name: stream_socket_pair
name: type
type: int
description:
<p class="para">
       The type of communication to be used:
       <strong><code><a href="stream.constants.html#constant.stream-sock-dgram">STREAM_SOCK_DGRAM</a></code></strong>,
       <strong><code><a href="stream.constants.html#constant.stream-sock-raw">STREAM_SOCK_RAW</a></code></strong>,
       <strong><code><a href="stream.constants.html#constant.stream-sock-rdm">STREAM_SOCK_RDM</a></code></strong>,
       <strong><code><a href="stream.constants.html#constant.stream-sock-seqpacket">STREAM_SOCK_SEQPACKET</a></code></strong> or
       <strong><code><a href="stream.constants.html#constant.stream-sock-stream">STREAM_SOCK_STREAM</a></code></strong>
      </p>


function_name: stream_socket_pair
name: protocol
type: int
description:
<p class="para">
       The protocol to be used: <strong><code><a href="stream.constants.html#constant.stream-ipproto-icmp">STREAM_IPPROTO_ICMP</a></code></strong>,
       <strong><code><a href="stream.constants.html#constant.stream-ipproto-ip">STREAM_IPPROTO_IP</a></code></strong>,
       <strong><code><a href="stream.constants.html#constant.stream-ipproto-raw">STREAM_IPPROTO_RAW</a></code></strong>,
       <strong><code><a href="stream.constants.html#constant.stream-ipproto-tcp">STREAM_IPPROTO_TCP</a></code></strong> or
       <strong><code><a href="stream.constants.html#constant.stream-ipproto-udp">STREAM_IPPROTO_UDP</a></code></strong>       
      </p>


function_name: stream_socket_recvfrom
name: length
type: int
description:
<p class="para">
       The number of bytes to receive from the <code class="parameter">socket</code>.
      </p>


function_name: stream_socket_recvfrom
name: flags
type: int
description:
<p class="para">
       The value of <code class="parameter">flags</code> can be any combination
       of the following:
       <table class="doctable table">
        <caption><strong>Possible values for <code class="parameter">flags</code></strong></caption>
        
         <tbody class="tbody">
          <tr>
           <td><strong><code>STREAM_OOB</code></strong></td>
           <td>
            Process OOB (<code class="literal">out-of-band</code>) data.
           </td>
          </tr>

          <tr>
           <td><strong><code>STREAM_PEEK</code></strong></td>
           <td>
            Retrieve data from the socket, but do not consume the buffer.
            Subsequent calls to <span class="function">fread</span> or
            <span class="function">stream_socket_recvfrom</span> will see
            the same data.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: stream_socket_recvfrom
name: address
type: null
description:
<p class="para">
       If <code class="parameter">address</code> is provided it will be populated with
       the address of the remote socket.
      </p>


function_name: stream_socket_sendto
name: flags
type: int
description:
<p class="para">
       The value of <code class="parameter">flags</code> can be any combination
       of the following:
       <table class="doctable table">
        <caption><strong>possible values for <code class="parameter">flags</code></strong></caption>
        
         <tbody class="tbody">
          <tr>
           <td><strong><code>STREAM_OOB</code></strong></td>
           <td>
            Process OOB (out-of-band) data.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: stream_socket_sendto
name: address
type: string
initializer: ""
description:
<p class="para">
       The address specified when the socket stream was created will be used
       unless an alternate address is specified in <code class="parameter">address</code>.
      </p>
      <p class="para">
       If specified, it must be in dotted quad (or [ipv6]) format.
      </p>


function_name: stream_socket_server
name: address
type: string
description:
<p class="para">
       The type of socket created is determined by the transport specified
       using standard URL formatting: <code class="literal">transport://target</code>.
      </p>
      <p class="para">
       For Internet Domain sockets (<strong><code><a href="sockets.constants.html#constant.af-inet">AF_INET</a></code></strong>) such as TCP and UDP, the
       <code class="literal">target</code> portion of the 
       <code class="parameter">remote_socket</code> parameter should consist of a
       hostname or IP address followed by a colon and a port number.  For
       Unix domain sockets, the <code class="literal">target</code> portion should
       point to the socket file on the filesystem.
      </p>
      <p class="para">
       Depending on the environment, Unix domain sockets may not be available.
       A list of available transports can be retrieved using
       <span class="function">stream_get_transports</span>. See
       <a href="transports.html" class="xref">List of Supported Socket Transports</a> for a list of bulitin transports.
      </p>


function_name: stream_socket_server
name: error_code
type: int
description:
<p class="para">
       If the optional <code class="parameter">error_code</code> and <code class="parameter">error_message</code>
       arguments are present they will be set to indicate the actual system
       level error that occurred in the system-level <code class="literal">socket()</code>,
       <code class="literal">bind()</code>, and <code class="literal">listen()</code> calls. If
       the value returned in <code class="parameter">error_code</code> is 
       <code class="literal">0</code> and the function returned <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>, it is an
       indication that the error occurred before the <code class="literal">bind()</code>
       call. This is most likely due to a problem initializing the socket. 
       Note that the <code class="parameter">error_code</code> and
       <code class="parameter">error_message</code> arguments will always be passed by reference.
      </p>


function_name: stream_socket_server
name: flags
type: int
initializer: STREAM_SERVER_BIND | STREAM_SERVER_LISTEN
description:
<p class="para">
       A bitmask field which may be set to any combination of socket creation
       flags.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        For UDP sockets, you must use <strong><code><a href="stream.constants.html#constant.stream-server-bind">STREAM_SERVER_BIND</a></code></strong> as
        the <code class="parameter">flags</code> parameter.
       </p>
      </p></blockquote>


function_name: stream_socket_shutdown
name: stream
type: resource
description:
<p class="para">
       An open stream (opened with <span class="function">stream_socket_client</span>,
       for example)
      </p>


function_name: stream_socket_shutdown
name: mode
type: int
description:
<p class="para">
       One of the following constants: <strong><code><a href="stream.constants.html#constant.stream-shut-rd">STREAM_SHUT_RD</a></code></strong>
       (disable further receptions), <strong><code><a href="stream.constants.html#constant.stream-shut-wr">STREAM_SHUT_WR</a></code></strong>
       (disable further transmissions) or
       <strong><code><a href="stream.constants.html#constant.stream-shut-rdwr">STREAM_SHUT_RDWR</a></code></strong> (disable further receptions and
       transmissions).
      </p>


function_name: stream_wrapper_register
name: protocol
type: string
description:
<p class="para">
       The wrapper name to be registered.
       Valid protocol names must contain alphanumerics, dots (.), plusses (+), or hyphens (-) only.
      </p>


function_name: stream_wrapper_register
name: class
type: string
description:
<p class="para">
       The classname which implements the <code class="parameter">protocol</code>.
      </p>


function_name: stream_wrapper_register
name: flags
type: int
description:
<p class="para">
       Should be set to <strong><code>STREAM_IS_URL</code></strong> if
       <code class="parameter">protocol</code> is a URL protocol. Default is 0, local
       stream.
      </p>


function_name: swoole_async_dns_lookup
name: callback
type: callable
description:
<div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">string</span> <code class="parameter">$hostname</code></span>, <span class="methodparam"><span class="type">string</span> <code class="parameter">$ip</code></span>)</div>

      <dl>
       
        <dt><code class="parameter">hostname</code></dt>
        <dd>
         <p class="para">
          The host name.
         </p>
        </dd>
       
       
        <dt><code class="parameter">IP</code></dt>
        <dd>
         <p class="para">
          The IP address.
         </p>
        </dd>
       
      </dl>


function_name: swoole_async_read
name: callback
type: callable
description:
<div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">string</span> <code class="parameter">$filename</code></span>, <span class="methodparam"><span class="type">string</span> <code class="parameter">$content</code></span>)</div>

      <dl>
       
        <dt><code class="parameter">filename</code></dt>
        <dd>
         <p class="para">
          The name of the file.
         </p>
        </dd>
       
       
        <dt><code class="parameter">content</code></dt>
        <dd>
         <p class="para">
          The content readed from the file stream.
         </p>
        </dd>
       
      </dl>


function_name: swoole_async_readfile
name: callback
type: callable
description:
<div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">string</span> <code class="parameter">$filename</code></span>, <span class="methodparam"><span class="type">string</span> <code class="parameter">$content</code></span>)</div>

      <dl>
       
        <dt><code class="parameter">filename</code></dt>
        <dd>
         <p class="para">
          The name of the file.
         </p>
        </dd>
       
       
        <dt><code class="parameter">content</code></dt>
        <dd>
         <p class="para">
          The content read from the file.
         </p>
        </dd>
       
      </dl>


function_name: swoole_error_log
name: level
type: int
description:
<p class="para">
      Log Level, constants can be used: <strong><code><a href="swoole.constants.html#constant.swoole-log-debug">SWOOLE_LOG_DEBUG</a></code></strong>,
      <strong><code><a href="swoole.constants.html#constant.swoole-log-trace">SWOOLE_LOG_TRACE</a></code></strong>,
      <strong><code><a href="swoole.constants.html#constant.swoole-log-info">SWOOLE_LOG_INFO</a></code></strong>,
      <strong><code><a href="swoole.constants.html#constant.swoole-log-notice">SWOOLE_LOG_NOTICE</a></code></strong>,
      <strong><code><a href="swoole.constants.html#constant.swoole-log-warning">SWOOLE_LOG_WARNING</a></code></strong>,
      <strong><code><a href="swoole.constants.html#constant.swoole-log-error">SWOOLE_LOG_ERROR</a></code></strong>,
      <strong><code><a href="swoole.constants.html#constant.swoole-log-none">SWOOLE_LOG_NONE</a></code></strong>
     </p>


function_name: Swoole\Async.readFile
name: callback
type: callable
description:
<div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">string</span> <code class="parameter">$filename</code></span>, <span class="methodparam"><span class="type">string</span> <code class="parameter">$content</code></span>)</div>

      <dl>
       
        <dt><code class="parameter">filename</code></dt>
        <dd>
         <p class="para">
          The name of the file.
         </p>
        </dd>
       
       
        <dt><code class="parameter">content</code></dt>
        <dd>
         <p class="para">
          The content readed from the file.
         </p>
        </dd>
       
      </dl>


function_name: Swoole\Atomic.cmpset
name: new_value
type: int
description:
<p class="para">
      The value to set to the atomic object if the cmp_value is the same as the current value of
      the atomic object.
     </p>


function_name: Swoole\Buffer.append
name: data
type: string
description:
<p class="para">
      The string or binary data to append at the end of the memory buffer.
     </p>


function_name: Swoole\Client.connect
name: timeout
type: int
description:
<p class="para">
      The timeout(second) of connect/send/recv, the dafault value is 0.1s
     </p>


function_name: Swoole\Client.connect
name: flag
type: int
description:
<p class="para">
      If the type of client is UDP, the $flag means if to enable the configuration udp_connect. 
      If the configuration udp_connect is enabled, the client will only receive the data from specified ip:port.
      If the type of client is TCP and the $flag is set to 1, it must use swoole_client_select to check the connection status before send/recv.
     </p>


function_name: Swoole\Client.__construct
name: sock_type
type: int
description:
<p class="para">
      The type of socket: SWOOLE_TCP, SWOOLE_UDP, SWOOLE_ASYNC, SWOOLE_SSL, SWOOLE_KEEP.
     </p>


function_name: Swoole\Coroutine.call_user_func_array
name: param_array
type: array
description:
<p class="para">
       Zero or more parameters in the array to be passed to the callback.
      </p>


function_name: Swoole\Server.getClientInfo
name: ignore_error
type: bool
description:
<p class="para">
      Whether to ignore errors, if set to true,
      connection information will be returned even if the connection is closed.
     </p>


function_name: tidy.__construct
name: filename
type: null
description:
<p class="para">
       If the <code class="parameter">filename</code> parameter is given, this function
       will also read that file and initialize the object with the file,
       acting like <span class="function">tidy_parse_file</span>.
      </p>


function_name: tidy.__construct
name: config
type: null
description:
<p class="para">
       The config <code class="parameter">config</code> can be passed either as an
       array or as a string. If a string is passed, it is interpreted as the
       name of the configuration file, otherwise, it is interpreted as the
       options themselves.
      </p>
      <p class="para">
       For an explanation about each option, visit <a href="http://api.html-tidy.org/#quick-reference" class="link external">&raquo;&nbsp;http://api.html-tidy.org/#quick-reference</a>.
      </p>


function_name: tidy.__construct
name: encoding
type: null
description:
<p class="para">
       The <code class="parameter">encoding</code> parameter sets the encoding for
       input/output documents. The possible values for encoding  are: 
       <code class="literal">ascii</code>, <code class="literal">latin0</code>, <code class="literal">latin1</code>,
       <code class="literal">raw</code>, <code class="literal">utf8</code>, <code class="literal">iso2022</code>,
       <code class="literal">mac</code>, <code class="literal">win1252</code>, <code class="literal">ibm858</code>,
       <code class="literal">utf16</code>, <code class="literal">utf16le</code>, <code class="literal">utf16be</code>,
       <code class="literal">big5</code>, and <code class="literal">shiftjis</code>.
      </p>


function_name: tidy.__construct
name: useIncludePath
type: bool
description:
<p class="para">
       Search for the file in the <a href="ini.core.html#ini.include-path" class="link">include_path</a>.
      </p>


function_name: tidy.getOpt
name: option
type: string
description:
<p class="para">
       You will find a list with each configuration option and their types
       at: <a href="http://api.html-tidy.org/#quick-reference" class="link external">&raquo;&nbsp;http://api.html-tidy.org/#quick-reference</a>.
      </p>


function_name: tidy.parseFile
name: config
type: null
description:
<p class="para">
       The config <code class="parameter">config</code> can be passed either as an
       array or as a string. If a string is passed, it is interpreted as the
       name of the configuration file, otherwise, it is interpreted as the
       options themselves.
      </p>
      <p class="para">
       For an explanation about each option, see
       <a href="http://api.html-tidy.org/#quick-reference" class="link external">&raquo;&nbsp;http://api.html-tidy.org/#quick-reference</a>.
      </p>


function_name: tidy.repairFile
name: config
type: null
description:
<p class="para">
       The config <code class="parameter">config</code> can be passed either as an
       array or as a string. If a string is passed, it is interpreted as the
       name of the configuration file, otherwise, it is interpreted as the
       options themselves.
      </p>
      <p class="para">
       Check http://tidy.sourceforge.net/docs/quickref.html for an
       explanation about each option.
      </p>


function_name: tidy.repairString
name: config
type: null
description:
<p class="para">
       The config <code class="parameter">config</code> can be passed either as an
       array or as a string. If a string is passed, it is interpreted as the
       name of the configuration file, otherwise, it is interpreted as the
       options themselves.
      </p>
      <p class="para">
       Check <a href="http://api.html-tidy.org/#quick-reference" class="link external">&raquo;&nbsp;http://api.html-tidy.org/#quick-reference</a> for
       an explanation about each option.
      </p>


function_name: PhpToken.__construct
name: id
type: int
description:
<p class="para">
      One of the T_* constants (see <a href="tokens.html" class="xref">List of Parser Tokens</a>), or an ASCII codepoint representing a single-char token.
     </p>


function_name: PhpToken.__construct
name: pos
type: int
initializer: -1
description:
<p class="para">
      The starting position (0-based) in the tokenized string (the number of bytes).
     </p>


function_name: PhpToken.is
name: kind
type: array
description:
<p class="para">
       Either a single value to match the token&#039;s id or textual content, or an array thereof.
      </p>


function_name: PhpToken.tokenize
name: flags
type: int
description:
<p class="simpara">
          <strong><code>TOKEN_PARSE</code></strong> - Recognises the ability to use
          reserved words in specific contexts.
         </p>


function_name: base64_decode
name: strict
type: bool
description:
<p class="para">
       If the <code class="parameter">strict</code> parameter is set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>
       then the <span class="function">base64_decode</span> function will return
       <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> if the input contains character from outside the base64
       alphabet. Otherwise invalid characters will be silently discarded.
      </p>


function_name: get_headers
name: associative
type: bool
description:
<p class="para">
       If the optional <code class="parameter">associative</code> parameter is set to true,
       <span class="function">get_headers</span> parses the response and sets the 
       array&#039;s keys.
      </p>


function_name: get_headers
name: context
type: null
description:
<p class="para">
       A valid context resource created with
       <span class="function">stream_context_create</span>, or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> to use the
       default context.
      </p>


function_name: get_meta_tags
name: filename
type: string
description:
<p class="para">
       The path to the HTML file, as a string. This can be a local file or an
       <acronym class="acronym">URL</acronym>.
      </p>
      <p class="para">
       <div class="example" id="example-18">
        <p><strong>Example # What <span class="function">get_meta_tags</span> parses</strong></p>
        <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;meta name=&quot;author&quot; content=&quot;name&quot;&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;php documentation&quot;&gt;
&lt;meta name=&quot;DESCRIPTION&quot; content=&quot;a php manual&quot;&gt;
&lt;meta name=&quot;geo.position&quot; content=&quot;49.33;-86.59&quot;&gt;
&lt;/head&gt; &lt;!-- parsing stops here --&gt;</pre>
</div>
        </div>

       </div>
      </p>


function_name: get_meta_tags
name: use_include_path
type: bool
description:
<p class="para">
       Setting <code class="parameter">use_include_path</code> to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> will result
       in PHP trying to open the file along the standard include path as per
       the <a href="ini.core.html#ini.include-path" class="link">include_path</a> directive.
       This is used for local files, not URLs.
      </p>


function_name: http_build_query
name: data
type: object
description:
<p class="para">
       May be an array or object containing properties.
      </p>
      <p class="para">
       If <code class="parameter">data</code> is an array, it may be a simple
       one-dimensional structure, or an array of arrays (which in
       turn may contain other arrays).
      </p>
      <p class="para">
       If <code class="parameter">data</code> is an object, then only public
       properties will be incorporated into the result.
      </p>


function_name: http_build_query
name: numeric_prefix
type: string
initializer: ""
description:
<p class="para">
       If numeric indices are used in the base array and this parameter is
       provided, it will be prepended to the numeric index for elements in
       the base array only.
      </p>
      <p class="para">
       This is meant to allow for legal variable names when the data is
       decoded by PHP or another CGI application later on.
      </p>


function_name: http_build_query
name: arg_separator
type: null
description:
<p class="para">
       The argument separator. If not set or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, 
       <a href="ini.core.html#ini.arg-separator.output" class="link">arg_separator.output</a>
       is used to separate arguments.
      </p>


function_name: http_build_query
name: encoding_type
type: int
description:
<p class="para">
       By default, <strong><code><a href="url.constants.html#constant.php-query-rfc1738">PHP_QUERY_RFC1738</a></code></strong>.
      </p>
      <p class="para">
       If <code class="parameter">encoding_type</code> is
       <strong><code><a href="url.constants.html#constant.php-query-rfc1738">PHP_QUERY_RFC1738</a></code></strong>, then encoding is performed per
       <a href="http://www.faqs.org/rfcs/rfc1738" class="link external">&raquo;&nbsp;RFC 1738</a> and the
       <code class="literal">application/x-www-form-urlencoded</code> media type, which
       implies that spaces are encoded as plus (<code class="literal">+</code>) signs.
      </p>
      <p class="para">
       If <code class="parameter">encoding_type</code> is
       <strong><code><a href="url.constants.html#constant.php-query-rfc3986">PHP_QUERY_RFC3986</a></code></strong>, then encoding is performed
       according to <a href="http://www.faqs.org/rfcs/rfc3986" class="link external">&raquo;&nbsp;RFC 3986</a>, and
       spaces will be percent encoded (<code class="literal">%20</code>).
      </p>


function_name: parse_url
name: component
type: int
initializer: -1
description:
<p class="para">
       Specify one of <strong><code><a href="url.constants.html#constant.php-url-scheme">PHP_URL_SCHEME</a></code></strong>,
       <strong><code><a href="url.constants.html#constant.php-url-host">PHP_URL_HOST</a></code></strong>, <strong><code><a href="url.constants.html#constant.php-url-port">PHP_URL_PORT</a></code></strong>,
       <strong><code><a href="url.constants.html#constant.php-url-user">PHP_URL_USER</a></code></strong>, <strong><code><a href="url.constants.html#constant.php-url-pass">PHP_URL_PASS</a></code></strong>,
       <strong><code><a href="url.constants.html#constant.php-url-path">PHP_URL_PATH</a></code></strong>, <strong><code><a href="url.constants.html#constant.php-url-query">PHP_URL_QUERY</a></code></strong>
       or <strong><code><a href="url.constants.html#constant.php-url-fragment">PHP_URL_FRAGMENT</a></code></strong> to retrieve just a specific
       URL component as a <span class="type">string</span> (except when
       <strong><code><a href="url.constants.html#constant.php-url-port">PHP_URL_PORT</a></code></strong> is given, in which case the return
       value will be an <span class="type">int</span>).
      </p>


function_name: V8Js.__construct
name: variables
type: array
initializer: array()
description:
<p class="para">
      Map of PHP variables that will be available in Javascript. Must be an associative <span class="type">array</span>
      in format <code class="literal">array(&quot;name-for-js&quot; =&gt; &quot;name-of-php-variable&quot;)</code>. Defaults to empty array.
     </p>


function_name: V8Js.__construct
name: extensions
type: array
initializer: array()
description:
<p class="para">
      List of extensions registered using <span class="function">V8Js::registerExtension</span> which should be available 
      in the Javascript context of the created <span class="classname">V8Js</span> object.
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Extensions registered to be enabled automatically do not need to be listed in this array.
        Also if an extension has dependencies, those dependencies can be omitted as well. Defaults to empty array.
       </p>
      </p></blockquote>
     </p>


function_name: V8Js.__construct
name: report_uncaught_exceptions
type: bool
description:
<p class="para">
      Controls whether uncaught Javascript exceptions are reported immediately or not. Defaults to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>. If set to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>
      the uncaught exception can be accessed using <span class="function">V8Js::getPendingException</span>.
     </p>


function_name: V8Js.executeString
name: flags
type: int
description:
<p class="para">
          <strong><code><a href="class.v8js.html#v8js.constants.flag-force-array">V8Js::FLAG_FORCE_ARRAY</a></code></strong>: forces all Javascript
          objects passed to PHP to be associative arrays
         </p>


function_name: V8Js.registerExtension
name: dependencies
type: array
initializer: array()
description:
<p class="para">
      Array of extension names the extension to be registered depends on. Any such extension is
      enabled automatically when this extension is loaded.
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        All extensions, including the dependencies, must be registered before any <span class="classname">V8Js</span>
        are created which use them.
       </p>
      </p></blockquote>
     </p>


function_name: V8Js.registerExtension
name: auto_enable
type: bool
description:
<p class="para">
      If set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the extension will be enabled automatically in all <span class="classname">V8Js</span> contexts.
     </p>


function_name: yaml_emit_file
name: data
type: mixed
description:
<p class="para">
       The <code class="parameter">data</code> being encoded. Can be any type except
       a <span class="type">resource</span>.
      </p>


function_name: yaml_emit_file
name: encoding
type: int
initializer: YAML_ANY_ENCODING
description:
<p class="para">
       Output character encoding chosen from
       <strong><code><a href="yaml.constants.html#constant.yaml-any-encoding">YAML_ANY_ENCODING</a></code></strong>,
       <strong><code><a href="yaml.constants.html#constant.yaml-utf8-encoding">YAML_UTF8_ENCODING</a></code></strong>,
       <strong><code><a href="yaml.constants.html#constant.yaml-utf16le-encoding">YAML_UTF16LE_ENCODING</a></code></strong>,
       <strong><code><a href="yaml.constants.html#constant.yaml-utf16be-encoding">YAML_UTF16BE_ENCODING</a></code></strong>.
      </p>


function_name: yaml_emit_file
name: linebreak
type: int
initializer: YAML_ANY_BREAK
description:
<p class="para">
       Output linebreak style chosen from
       <strong><code><a href="yaml.constants.html#constant.yaml-any-break">YAML_ANY_BREAK</a></code></strong>,
       <strong><code><a href="yaml.constants.html#constant.yaml-cr-break">YAML_CR_BREAK</a></code></strong>,
       <strong><code><a href="yaml.constants.html#constant.yaml-ln-break">YAML_LN_BREAK</a></code></strong>,
       <strong><code><a href="yaml.constants.html#constant.yaml-crln-break">YAML_CRLN_BREAK</a></code></strong>.
      </p>


function_name: yaml_emit_file
name: callbacks
type: array
description:
<p class="para">
       Content handlers for emitting YAML nodes. Associative <span class="type">array</span>
       of classname =&gt; <span class="type">callable</span> mappings. See
       <a href="yaml.callbacks.emit.html" class="link">emit callbacks</a> for more
       details.
      </p>


function_name: yaml_parse_file
name: pos
type: int
description:
<p class="para">
       Document to extract from stream (<code class="literal">-1</code> for all
       documents, <code class="literal">0</code> for first document, ...).
      </p>


function_name: yaml_parse_file
name: ndocs
type: int
description:
<p class="para">
       If <code class="parameter">ndocs</code> is provided, then it is filled with the
       number of documents found in stream.
      </p>


function_name: yaml_parse_file
name: callbacks
type: array
description:
<p class="para">
       Content handlers for YAML nodes. Associative <span class="type">array</span> of YAML
       tag =&gt; <span class="type">callable</span> mappings. See
       <a href="yaml.callbacks.parse.html" class="link">parse callbacks</a> for more
       details.
      </p>


function_name: yaml_parse_url
name: url
type: string
description:
<p class="para">
       <code class="parameter">url</code> should be of the form &quot;scheme://...&quot;. PHP
       will search for a protocol handler (also known as a wrapper) for that
       scheme. If no wrappers for that protocol are registered, PHP will emit
       a notice to help you track potential problems in your script and then
       continue as though filename specifies a regular file.
      </p>


function_name: yaml_parse_url
name: callbacks
type: array
description:
<p class="para">
       Content handlers for YAML nodes. Associative <span class="type">array</span> of YAML
       tag =&gt; <span class="type">callable</span> mappings. See
       <a href="yaml.callbacks.parse.html" class="link">parse callbacks</a> for more
      </p>


function_name: yaml_parse
name: input
type: string
description:
<p class="para">
       The <span class="type">string</span> to parse as a YAML document stream.
      </p>


function_name: Yaf_Application.bootstrap
name: bootstrap
type: Yaf_Bootstrap_Abstract
description:
<p class="para">
      A <span class="classname">Yaf_Bootstrap_Abstract</span> instance      
     </p>


function_name: Yaf_Application.__construct
name: config
type: mixed
description:
<p class="para">
       A ini config file path, or a config array
     </p>
     <p class="para">
       If is a ini config file, there should be a section named as the one
       defined by <a href="yaf.configuration.html#ini.yaf.environ" class="link">yaf.environ</a>, which
       is &quot;product&quot; by default.
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        If you use a ini configuration file as your applicatioin&#039;s config
        container. you would open the <a href="yaf.configuration.html#ini.yaf.cache-config" class="link">yaf.cache_config</a> to improve
        performance.
       </p>
      </p></blockquote>
     </p>
     <p class="para">
       And the config entry(and there default value) list blow:
      <div class="example" id="example-20">
       <p><strong>Example # A ini config file example</strong></p>
       <div class="example-contents">
<div class="inicode"><pre class="inicode">[product]
;this one should alway be defined, and have no default value
application.directory=APPLICATION_PATH

;following configs have default value, you may no need to define them
application.library = APPLICATION_PATH . &quot;/library&quot;
application.dispatcher.throwException=1
application.dispatcher.catchException=1

application.baseUri=&quot;&quot;

;the php script ext name
ap.ext=php

;the view template ext name
ap.view.ext=phtml

ap.dispatcher.defaultModule=Index
ap.dispatcher.defaultController=Index
ap.dispatcher.defaultAction=index

;defined modules
ap.modules=Index</pre>
</div>
       </div>

      </div>
     </p>


function_name: Yaf_Dispatcher.autoRender
name: flag
type: bool
description:
<p class="para">
      bool
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        since 2.2.0, if this parameter is not given, then the current state
        will be returned
       </p>
      </p></blockquote>
     </p>


function_name: Yaf_Dispatcher.flushInstantly
name: flag
type: bool
description:
<p class="para">
      bool
       <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        since 2.2.0, if this parameter is not given, then the current state
        will be returned
       </p>
      </p></blockquote>     
     </p>


function_name: Yaf_Controller_Abstract.forward
name: module
type: string
description:
<p class="para">
       destination module name, if NULL was given, then default module name
       is assumed
     </p>


function_name: Yaf_View_Interface.setScriptPath
name: template_dir
type: string
description:
<p class="para">
      A absolute path to the template directory, by default,
      <span class="classname">Yaf_Dispatcher</span> use
      <a href="yaf.appconfig.html#configuration.yaf.directory" class="link">application.directory</a> . &quot;/views&quot; as this paramter.
     </p>


function_name: Yaf_View_Simple.assign
name: name
type: string
description:
<p class="para">
       A string or an array.
     </p>
     <p class="para">
       if is string, then the next argument $value is required. 
     </p>


function_name: Yaf_View_Simple.assignRef
name: name
type: string
description:
<p class="para">
       A string name which will be used to access the value in the tempalte.
     </p>


function_name: Yaf_View_Simple.clear
name: name
type: string
description:
<p class="para">
       assigned variable name
     </p>
     <p class="para">
      if empty, will clear all assigned variables
     </p>


function_name: Yaf_View_Simple.__construct
name: template_dir
type: string
description:
<p class="para">
      The base directory of the templates,  by default, 
      it is APPLICATOIN . &quot;/views&quot; for Yaf.
     </p>


function_name: Yaf_View_Simple.__construct
name: options
type: array
description:
<p class="para">
      <div class="cdata"><pre>
      Options for the engine, as of Yaf 2.1.13, you can use short tag
      &quot;&lt;?=$var?&gt;&quot; in your template(regardless of &quot;short_open_tag&quot;), 
      so comes a option named &quot;short_tag&quot;,  you can switch this off 
      to prevent use short_tag in template.
      </pre></div>
     </p>


function_name: Yaf_View_Simple.__get
name: name
type: string
description:
<p class="para">
      the assigned variable name
     </p>
     <p class="para">
      if this is empty, all assigned variables will be returned
     </p>


function_name: Yaf_Loader.registerLocalNamespace
name: prefix
type: mixed
description:
<p class="para">
      a string or a array of class name prefix.
      all class prefix with these prefix will be loaded in local library path.
     </p>


function_name: Yaf_Loader.registerNamespace
name: path
type: string
description:
<p class="para">
      a string of path, it is better to use abosolute path here for performance
     </p>


function_name: Yaf_Request_Abstract.getEnv
name: default
type: string
description:
<p class="para">
      if this parameter is provide, this will be returned if the varialbe can
      not be found
     </p>


function_name: Yaf_Request_Abstract.getServer
name: default
type: string
description:
<p class="para">
      if this parameter is provide, this will be returned if the variable can
      not be found
     </p>


function_name: Yaf_Request_Abstract.setActionName
name: action
type: string
description:
<p class="para">
      <span class="type">string</span>, action name, it should in lower case style, like &quot;index&quot; or &quot;foo_bar&quot; 
     </p>


function_name: Yaf_Request_Abstract.setActionName
name: format_name
type: bool
initializer: true
description:
<p class="para">
      this is introduced in Yaf 3.2.0, by default Yaf will format the name into lower case style,
      if this is set to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> , Yaf will set the original name to request.
     </p>


function_name: Yaf_Request_Abstract.setControllerName
name: controller
type: string
description:
<p class="para">
      <span class="type">string</span>, controller name, this should be in camel style, like &quot;Index&quot; or &quot;Foo_Bar&quot; 
     </p>


function_name: Yaf_Request_Abstract.setControllerName
name: format_name
type: bool
initializer: true
description:
<p class="para">
      this is introduced in Yaf 3.2.0, by default Yaf will format the name into camel mode,
      if this is set to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> , Yaf will set the original name to request.
     </p>


function_name: Yaf_Request_Abstract.setModuleName
name: module
type: string
description:
<p class="para">
      <span class="type">string</span> module name, it should be in camel style, like &quot;Index&quot; or &quot;Foo_Bar&quot;   
     </p>


function_name: Yaf_Request_Http.getCookie
name: default
type: string
description:
<p class="para">
      if this parameter is provide, this will be returned if the cookie can
      not be found
     </p>


function_name: Yaf_Response_Abstract.appendBody
name: key
type: string
description:
<p class="para">
      the content key, you can set a content with a key, if you don&#039;t
      specific, then Yaf_Response_Abstract::DEFAULT_BODY will be used
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
       this parameter is introduced as of 2.2.0
      </p>
      </p></blockquote>
     </p>


function_name: Yaf_Response_Abstract.clearBody
name: key
type: string
description:
<p class="para">
      the content key, if you don&#039;t specific, then all contents will be
      cleared.
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
       this parameter is introduced as of 2.2.0
      </p>
      </p></blockquote>
     </p>


function_name: Yaf_Response_Abstract.getBody
name: key
type: string
description:
<p class="para">
      the content key, if you don&#039;t specific, then Yaf_Response_Abstract::DEFAULT_BODY
      will be used. if you pass in a <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, then all contents will be returned
      as a array
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
       this parameter is introduced as of 2.2.0
      </p>
      </p></blockquote>
     </p>


function_name: Yaf_Route_Regex.__construct
name: match
type: string
description:
<p class="para">
       A complete Regex pattern, will be used to match a request uri, if
       doesn&#039;t matched, <span class="classname">Yaf_Route_Regex</span> will return
       <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>.
     </p>


function_name: Yaf_Route_Regex.__construct
name: route
type: array
description:
<p class="para">
      When the match pattern matches the request uri,
      <span class="classname">Yaf_Route_Regex</span> will use this to decide which
      m/c/a to routed.
     </p>
     <p class="para">
      either of m/c/a in this array is optianl, if you don&#039;t assgian a
      specific value, it will be routed to default.
     </p>


function_name: Yaf_Route_Regex.__construct
name: reverse
type: string
description:
<p class="para">
      a string, used to assemble url, see
       <span class="methodname">Yaf_Route_Regex::assemble</span>.
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
       this parameter is introduced in 2.3.0
       </p>
      </p></blockquote>
     </p>


function_name: Yaf_Route_Rewrite.__construct
name: match
type: string
description:
<p class="para">
       A pattern, will be used to match a request uri, if
       it doesn&#039;t match, <span class="classname">Yaf_Route_Rewrite</span> will return
       <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>.
     </p>
     <p class="para">
      You can use :name style to name segments matched, and use * to match
      the rest of the URL segments.
     </p>


function_name: Yaf_Route_Rewrite.__construct
name: route
type: array
description:
<p class="para">
      When the match pattern matches the request uri,
      <span class="classname">Yaf_Route_Rewrite</span> will use this to decide which
      module/controller/action is the destination.
     </p>
     <p class="para">
      Either of module/controller/action in this array is optional, if you don&#039;t assign a
      specific value, it will be routed to default.
     </p>


function_name: Yaconf.get
name: name
type: string
description:
<p class="para">
      Configuration key, the key looks like &quot;filename.key&quot;, or &quot;filename.sectionName,key&quot;.
     </p>


function_name: Yaconf.get
name: default_value
type: mixed
initializer: NULL
description:
<p class="para">
      if the key doesn&#039;t exists, Yaconf::get will return this as result.
     </p>


function_name: Ds\Hashable.equals
name: obj
type: object
description:
<p class="para">
        The object to compare the current instance to, which is always an instance of
        the same class.
     </p>


function_name: Ds\Sequence.allocate
name: capacity
type: int
description:
<p class="para">
        The number of values for which capacity should be allocated.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
            Capacity will stay the same if this value is less than or equal to the
            current capacity.
        </p>
    </p></blockquote>


function_name: Ds\Sequence.apply
name: callback
type: callable
description:
<p class="para">
            <div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

        </p>
        <p class="para">
            A <span class="type">callable</span> to apply to each value in the sequence.
        </p>

        <p class="para">
            The callback should return what the value should be replaced by.
        </p>


function_name: Ds\Sequence.filter
name: callback
type: callable
description:
<p class="para">
            <div class="methodsynopsis dc-description"><span class="type">bool</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

        </p>
        <p class="para">
            Optional <span class="type">callable</span> which returns <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> if the value should be included, <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> otherwise.
        </p>
        <p class="para">
            If a callback is not provided, only values which are <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>
            (see <a href="language.types.boolean.html#language.types.boolean.casting" class="link">converting to boolean</a>)
            will be included.
        </p>


function_name: Ds\Sequence.insert
name: index
type: int
description:
<p class="para">
        The index at which to insert. <code class="code">0 &lt;= index &lt;= count</code>
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
            You can insert at the index equal to the number of values.
        </p>
     </p></blockquote>


function_name: Ds\Sequence.map
name: callback
type: callable
description:
<p class="para">
            <div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

         </p>
         <p class="para">
            A <span class="type">callable</span> to apply to each value in the sequence.
         </p>

         <p class="para">
            The callable should return what the new value will be in the new sequence.
        </p>


function_name: Ds\Sequence.merge
name: values
type: mixed
description:
<p class="para">
        A <span class="classname">traversable</span> object or an <span class="type">array</span>.
     </p>


function_name: Ds\Sequence.reduce
name: callback
type: callable
description:
<div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$carry</code></span>, <span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

      <dl>
       
        <dt><code class="parameter">carry</code></dt>
        <dd>
         <p class="para">
          The return value of the previous callback, or <code class="parameter">initial</code> if
          it&#039;s the first iteration.
         </p>
        </dd>
       
       
        <dt><code class="parameter">value</code></dt>
        <dd>
         <p class="para">
          The value of the current iteration.
         </p>
        </dd>
       
      </dl>


function_name: Ds\Sequence.reduce
name: initial
type: mixed
description:
<p class="para">
        The initial value of the carry value. Can be <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
     </p>


function_name: Ds\Sequence.slice
name: index
type: int
description:
<p class="para">
            The index at which the sub-sequence starts.
        </p>
        <p class="para">
            If positive, the sequence will start at that index in the sequence.
            If negative, the sequence will start that far from the end.
        </p>


function_name: Ds\Sequence.slice
name: length
type: int
description:
<p class="para">
        If a length is given and is positive, the resulting
        sequence will have up to that many values in it.

        If the length results in an overflow, only
        values up to the end of the sequence will be included.

        If a length is given and is negative, the sequence
        will stop that many values from the end.

        If a length is not provided, the resulting sequence
        will contain all values between the index and the
        end of the sequence.
     </p>


function_name: Ds\Sequence.unshift
name: values
type: mixed
description:
<p class="para">
        The values to add to the front of the sequence.
        <blockquote class="note"><p><strong class="note">Note</strong>: 
            <p class="para">
                Multiple values will be added in the same order that they are
                passed.
            </p>
        </p></blockquote>
     </p>


function_name: Ds\Vector.apply
name: callback
type: callable
description:
<p class="para">
            <div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

        </p>
        <p class="para">
            A <span class="type">callable</span> to apply to each value in the vector.
        </p>

        <p class="para">
            The callback should return what the value should be replaced by.
        </p>


function_name: Ds\Vector.__construct
name: values
type: mixed
description:
<p class="para">
      A traversable object or an <span class="type">array</span> to use for the initial values.
     </p>


function_name: Ds\Vector.map
name: callback
type: callable
description:
<p class="para">
            <div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

         </p>
         <p class="para">
            A <span class="type">callable</span> to apply to each value in the vector.
         </p>

         <p class="para">
            The callable should return what the new value will be in the new vector.
        </p>


function_name: Ds\Vector.slice
name: index
type: int
description:
<p class="para">
            The index at which the sub-vector starts.
        </p>
        <p class="para">
            If positive, the vector will start at that index in the vector.
            If negative, the vector will start that far from the end.
        </p>


function_name: Ds\Vector.slice
name: length
type: int
description:
<p class="para">
        If a length is given and is positive, the resulting
        vector will have up to that many values in it.

        If the length results in an overflow, only
        values up to the end of the vector will be included.

        If a length is given and is negative, the vector
        will stop that many values from the end.

        If a length is not provided, the resulting vector
        will contain all values between the index and the
        end of the vector.
     </p>


function_name: Ds\Vector.unshift
name: values
type: mixed
description:
<p class="para">
        The values to add to the front of the vector.
        <blockquote class="note"><p><strong class="note">Note</strong>: 
            <p class="para">
                Multiple values will be added in the same order that they are
                passed.
            </p>
        </p></blockquote>
     </p>


function_name: Ds\Deque.allocate
name: capacity
type: int
description:
<p class="para">
        The number of values for which capacity should be allocated.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
            Capacity will stay the same if this value is less than or equal to the
            current capacity.
        </p>
    </p></blockquote>
    <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
            Capacity will always be rounded up to the nearest power of 2.
        </p>
     </p></blockquote>


function_name: Ds\Deque.apply
name: callback
type: callable
description:
<p class="para">
            <div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

        </p>
        <p class="para">
            A <span class="type">callable</span> to apply to each value in the deque.
        </p>

        <p class="para">
            The callback should return what the value should be replaced by.
        </p>


function_name: Ds\Deque.map
name: callback
type: callable
description:
<p class="para">
            <div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

         </p>
         <p class="para">
            A <span class="type">callable</span> to apply to each value in the deque.
         </p>

         <p class="para">
            The callable should return what the new value will be in the new deque.
        </p>


function_name: Ds\Deque.slice
name: index
type: int
description:
<p class="para">
            The index at which the sub-deque starts.
        </p>
        <p class="para">
            If positive, the deque will start at that index in the deque.
            If negative, the deque will start that far from the end.
        </p>


function_name: Ds\Deque.slice
name: length
type: int
description:
<p class="para">
        If a length is given and is positive, the resulting
        deque will have up to that many values in it.

        If the length results in an overflow, only
        values up to the end of the deque will be included.

        If a length is given and is negative, the deque
        will stop that many values from the end.

        If a length is not provided, the resulting deque
        will contain all values between the index and the
        end of the deque.
     </p>


function_name: Ds\Deque.unshift
name: values
type: mixed
description:
<p class="para">
        The values to add to the front of the deque.
        <blockquote class="note"><p><strong class="note">Note</strong>: 
            <p class="para">
                Multiple values will be added in the same order that they are
                passed.
            </p>
        </p></blockquote>
     </p>


function_name: Ds\Map.allocate
name: capacity
type: int
description:
<p class="para">
        The number of values for which capacity should be allocated.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
            Capacity will stay the same if this value is less than or equal to the
            current capacity.
        </p>
     </p></blockquote>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
            Capacity will always be rounded up to the nearest power of 2.
        </p>
     </p></blockquote>


function_name: Ds\Map.apply
name: callback
type: callable
description:
<p class="para">
            <div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$key</code></span>, <span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

        </p>
        <p class="para">
            A <span class="type">callable</span> to apply to each value in the map.
        </p>

        <p class="para">
            The callback should return what the value should be replaced by.
        </p>


function_name: Ds\Map.__construct
name: values
type: mixed
description:
<p class="para">
        A traversable object or an <span class="type">array</span> to use for the initial values.
     </p>


function_name: Ds\Map.filter
name: callback
type: callable
description:
<p class="para">
            <div class="methodsynopsis dc-description"><span class="type">bool</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$key</code></span>, <span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

        </p>
        <p class="para">
            Optional <span class="type">callable</span> which returns <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> if the pair should be included, <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> otherwise.
        </p>
        <p class="para">
            If a callback is not provided, only values which are <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>
            (see <a href="language.types.boolean.html#language.types.boolean.casting" class="link">converting to boolean</a>)
            will be included.
        </p>


function_name: Ds\Map.get
name: default
type: mixed
description:
<p class="para">
        The optional default value, returned if the key could not be found.
     </p>


function_name: Ds\Map.map
name: callback
type: callable
description:
<p class="para">
            <div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$key</code></span>, <span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

         </p>
         <p class="para">
            A <span class="type">callable</span> to apply to each value in the map.
         </p>

         <p class="para">
            The callable should return what the key will be mapped to in the
            resulting map.
        </p>


function_name: Ds\Map.putAll
name: pairs
type: mixed
description:
<p class="para">
        <span class="classname">traversable</span> object or <span class="type">array</span>.
     </p>


function_name: Ds\Map.reduce
name: callback
type: callable
description:
<div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$carry</code></span>, <span class="methodparam"><span class="type">mixed</span> <code class="parameter">$key</code></span>, <span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value</code></span>)</div>

      <dl>
       
        <dt><code class="parameter">carry</code></dt>
        <dd>
         <p class="para">
          The return value of the previous callback, or <code class="parameter">initial</code> if
          it&#039;s the first iteration.
         </p>
        </dd>
       
       
        <dt><code class="parameter">key</code></dt>
        <dd>
         <p class="para">
          The key of the current iteration.
         </p>
        </dd>
       
       
        <dt><code class="parameter">value</code></dt>
        <dd>
         <p class="para">
          The value of the current iteration.
         </p>
        </dd>
       
      </dl>


function_name: Ds\Map.slice
name: index
type: int
description:
<p class="para">
            The index at which the range starts.
        </p>
        <p class="para">
            If positive, the range will start at that index in the map.
            If negative, the range will start that far from the end.
        </p>


function_name: Ds\Map.slice
name: length
type: int
description:
<p class="para">
        If a length is given and is positive, the resulting
        map will have up to that many pairs in it.

        If a length is given and is negative, the range
        will stop that many pairs from the end.

        If the length results in an overflow, only
        pairs up to the end of the map will be included.

        If a length is not provided, the resulting map
        will contain all pairs between the index and the
        end of the map.
     </p>


function_name: Ds\Set.slice
name: index
type: int
description:
<p class="para">
            The index at which the sub-set starts.
        </p>
        <p class="para">
            If positive, the set will start at that index in the set.
            If negative, the set will start that far from the end.
        </p>


function_name: Ds\Set.slice
name: length
type: int
description:
<p class="para">
        If a length is given and is positive, the resulting
        set will have up to that many values in it.

        If the length results in an overflow, only
        values up to the end of the set will be included.

        If a length is given and is negative, the set
        will stop that many values from the end.

        If a length is not provided, the resulting set
        will contain all values between the index and the
        end of the set.
     </p>


function_name: var_representation
name: flags
type: int
description:
<p class="para">
       Bitmask consisting of
       <strong><code><a href="var-representation.constants.html#constant.var-representation-single-line">VAR_REPRESENTATION_SINGLE_LINE</a></code></strong>, 
       <strong><code><a href="var-representation.constants.html#constant.var-representation-unescaped">VAR_REPRESENTATION_UNESCAPED</a></code></strong>.
       The behaviour of these constants is described on the
       <a href="var-representation.constants.html" class="link">var_representation constants</a> page.
     </p>


function_name: curl_getinfo
name: option
type: null
description:
<p class="para">
       This may be one of the following constants:
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-cainfo">CURLINFO_CAINFO</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Default built-in CA certificate path
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-capath">CURLINFO_CAPATH</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Default built-in CA path string
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-effective-url">CURLINFO_EFFECTIVE_URL</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Last effective URL
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-http-code">CURLINFO_HTTP_CODE</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The last response code. As of cURL 7.10.8, this is a legacy alias of CURLINFO_RESPONSE_CODE
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-filetime">CURLINFO_FILETIME</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Remote time of the retrieved document, with the CURLOPT_FILETIME enabled; if -1 is returned the time of the document is unknown
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-total-time">CURLINFO_TOTAL_TIME</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Total transaction time in seconds for last transfer
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-namelookup-time">CURLINFO_NAMELOOKUP_TIME</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Time in seconds until name resolving was complete
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-connect-time">CURLINFO_CONNECT_TIME</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Time in seconds it took to establish the connection
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-pretransfer-time">CURLINFO_PRETRANSFER_TIME</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Time in seconds from start until just before file transfer begins
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-starttransfer-time">CURLINFO_STARTTRANSFER_TIME</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Time in seconds until the first byte is about to be transferred
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-redirect-count">CURLINFO_REDIRECT_COUNT</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Number of redirects, with the CURLOPT_FOLLOWLOCATION option enabled
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-redirect-time">CURLINFO_REDIRECT_TIME</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Time in seconds of all redirection steps before final transaction was started, with the CURLOPT_FOLLOWLOCATION option enabled
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-redirect-url">CURLINFO_REDIRECT_URL</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            With the CURLOPT_FOLLOWLOCATION option disabled: redirect URL found in the last transaction, that should be requested manually next. With the CURLOPT_FOLLOWLOCATION option enabled: this is empty. The redirect URL in this case is available in CURLINFO_EFFECTIVE_URL
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-primary-ip">CURLINFO_PRIMARY_IP</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            IP address of the most recent connection
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-primary-port">CURLINFO_PRIMARY_PORT</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Destination port of the most recent connection
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-local-ip">CURLINFO_LOCAL_IP</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Local (source) IP address of the most recent connection
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-local-port">CURLINFO_LOCAL_PORT</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Local (source) port of the most recent connection
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-size-upload">CURLINFO_SIZE_UPLOAD</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Total number of bytes uploaded
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-size-download">CURLINFO_SIZE_DOWNLOAD</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Total number of bytes downloaded
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-speed-download">CURLINFO_SPEED_DOWNLOAD</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Average download speed
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-speed-upload">CURLINFO_SPEED_UPLOAD</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Average upload speed
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-header-size">CURLINFO_HEADER_SIZE</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Total size of all headers received
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-header-out">CURLINFO_HEADER_OUT</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The request string sent. For this to work, add the CURLINFO_HEADER_OUT option to the handle by calling curl_setopt()
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-referer">CURLINFO_REFERER</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The referrer header
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-request-size">CURLINFO_REQUEST_SIZE</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Total size of issued requests, currently only for HTTP requests
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-retry-after">CURLINFO_RETRY_AFTER</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The information from the Retry-After: header, or zero if there was no valid header.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-ssl-verifyresult">CURLINFO_SSL_VERIFYRESULT</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Result of SSL certification verification requested by setting CURLOPT_SSL_VERIFYPEER
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-content-length-download">CURLINFO_CONTENT_LENGTH_DOWNLOAD</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Content length of download, read from Content-Length: field
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-content-length-upload">CURLINFO_CONTENT_LENGTH_UPLOAD</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Specified size of upload
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-content-type">CURLINFO_CONTENT_TYPE</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Content-Type: of the requested document. NULL indicates server did not send valid Content-Type: header
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-private">CURLINFO_PRIVATE</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Private data associated with this cURL handle, previously set with the CURLOPT_PRIVATE option of curl_setopt()
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-proxy-error">CURLINFO_PROXY_ERROR</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The detailed (SOCKS) proxy error code when the most recent transfer returned a CURLE_PROXY error. The returned value will be exactly one of the CURLPX_* values. The error code will be CURLPX_OK if no response code was available.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-response-code">CURLINFO_RESPONSE_CODE</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The last response code
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_HTTP_CONNECTCODE</code></strong>
           </td>
           <td style="vertical-align: top;">
            The CONNECT response code
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_HTTPAUTH_AVAIL</code></strong>
           </td>
           <td style="vertical-align: top;">
            Bitmask indicating the authentication method(s) available according to the previous response
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_PROXYAUTH_AVAIL</code></strong>
           </td>
           <td style="vertical-align: top;">
            Bitmask indicating the proxy authentication method(s) available according to the previous response
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_OS_ERRNO</code></strong>
           </td>
           <td style="vertical-align: top;">
            Errno from a connect failure. The number is OS and system specific.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_NUM_CONNECTS</code></strong>
           </td>
           <td style="vertical-align: top;">
            Number of connections curl had to create to achieve the previous transfer
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_SSL_ENGINES</code></strong>
           </td>
           <td style="vertical-align: top;">
            OpenSSL crypto-engines supported
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_COOKIELIST</code></strong>
           </td>
           <td style="vertical-align: top;">
            All known cookies
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_FTP_ENTRY_PATH</code></strong>
           </td>
           <td style="vertical-align: top;">
            Entry path in FTP server
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_APPCONNECT_TIME</code></strong>
           </td>
           <td style="vertical-align: top;">
            Time in seconds it took from the start until the SSL/SSH connect/handshake to the remote host was completed
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_CERTINFO</code></strong>
           </td>
           <td style="vertical-align: top;">
            TLS certificate chain
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_CONDITION_UNMET</code></strong>
           </td>
           <td style="vertical-align: top;">
            Info on unmet time conditional
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_RTSP_CLIENT_CSEQ</code></strong>
           </td>
           <td style="vertical-align: top;">
            Next RTSP client CSeq
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_RTSP_CSEQ_RECV</code></strong>
           </td>
           <td style="vertical-align: top;">
            Recently received CSeq
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_RTSP_SERVER_CSEQ</code></strong>
           </td>
           <td style="vertical-align: top;">
            Next RTSP server CSeq
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code>CURLINFO_RTSP_SESSION_ID</code></strong>
           </td>
           <td style="vertical-align: top;">
            RTSP session ID
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-content-length-download-t">CURLINFO_CONTENT_LENGTH_DOWNLOAD_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The content-length of the download. This is the value read from the Content-Length: field. -1 if the size isn&#039;t known
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-content-length-upload-t">CURLINFO_CONTENT_LENGTH_UPLOAD_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The specified size of the upload. -1 if the size isn&#039;t known
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-http-version">CURLINFO_HTTP_VERSION</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The version used in the last HTTP connection. The return value will be one of the defined CURL_HTTP_VERSION_* constants or 0 if the version can&#039;t be determined
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-protocol">CURLINFO_PROTOCOL</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The protocol used in the last HTTP connection. The returned value will be exactly one of the CURLPROTO_* values
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-proxy-ssl-verifyresult">CURLINFO_PROXY_SSL_VERIFYRESULT</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The result of the certificate verification that was requested (using the CURLOPT_PROXY_SSL_VERIFYPEER option). Only used for HTTPS proxies
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-scheme">CURLINFO_SCHEME</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The URL scheme used for the most recent connection
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-size-download-t">CURLINFO_SIZE_DOWNLOAD_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Total number of bytes that were downloaded. The number is only for the latest transfer and will be reset again for each new transfer
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-size-upload-t">CURLINFO_SIZE_UPLOAD_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Total number of bytes that were uploaded
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-speed-download-t">CURLINFO_SPEED_DOWNLOAD_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The average download speed in bytes/second that curl measured for the complete download
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-speed-upload-t">CURLINFO_SPEED_UPLOAD_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            The average upload speed in bytes/second that curl measured for the complete upload
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-appconnect-time-t">CURLINFO_APPCONNECT_TIME_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Time, in microseconds, it took from the start until the SSL/SSH connect/handshake to the remote host was completed
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-connect-time-t">CURLINFO_CONNECT_TIME_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Total time taken, in microseconds, from the start until the connection to the remote host (or proxy) was completed
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-filetime-t">CURLINFO_FILETIME_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Remote time of the retrieved document (as Unix timestamp), an alternative to CURLINFO_FILETIME to allow systems with 32 bit long variables to extract dates outside of the 32bit timestamp range
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-namelookup-time-t">CURLINFO_NAMELOOKUP_TIME_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Time in microseconds from the start until the name resolving was completed
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-pretransfer-time-t">CURLINFO_PRETRANSFER_TIME_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Time taken from the start until the file transfer is just about to begin, in microseconds
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-redirect-time-t">CURLINFO_REDIRECT_TIME_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Total time, in microseconds, it took for all redirection steps include name lookup, connect, pretransfer and transfer before final transaction was started
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-starttransfer-time-t">CURLINFO_STARTTRANSFER_TIME_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Time, in microseconds, it took from the start until the first byte is received
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curlinfo-total-time-t">CURLINFO_TOTAL_TIME_T</a></code></strong>
           </td>
           <td style="vertical-align: top;">
            Total time in microseconds for the previous transfer, including name resolving, TCP connect etc.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: curl_init
name: url
type: null
description:
<p class="para">
       If provided, the <strong><code><a href="curl.constants.html#constant.curlopt-url">CURLOPT_URL</a></code></strong> option will be set
       to its value. You can manually set this using the 
       <span class="function">curl_setopt</span> function.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        The <code class="literal">file</code> protocol is disabled by cURL if
        <a href="ini.core.html#ini.open-basedir" class="link">open_basedir</a> is set.
       </p>
      </p></blockquote>


function_name: curl_multi_exec
name: still_running
type: int
description:
<p class="para">
       A reference to a flag to tell whether the operations are still running.
      </p>


function_name: curl_multi_setopt
name: value
type: mixed
description:
<p class="para">
       The value to be set on <code class="parameter">option</code>.
      </p>
      <p class="para">
       <code class="parameter">value</code> should be an <span class="type">int</span> for the
       following values of the <code class="parameter">option</code> parameter:
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Set <code class="parameter">value</code> to</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlmopt-pipelining">CURLMOPT_PIPELINING</a></code></strong></td>
           <td style="vertical-align: top;">
            Pass 1 to enable or 0 to disable. Enabling pipelining on a multi
            handle will make it attempt to perform HTTP Pipelining as far as
            possible for transfers using this handle. This means that if you add
            a second request that can use an already existing connection, the
            second request will be &quot;piped&quot; on the same connection.
            As of cURL 7.43.0, the value is a bitmask, and you can also pass 2 to try to multiplex the new
            transfer over an existing HTTP/2 connection if possible.
            Passing 3 instructs cURL to ask for pipelining and multiplexing
            independently of each other.
            As of cURL 7.62.0, setting the pipelining bit has no effect.
            Instead of integer literals, you can also use the CURLPIPE_*
            constants if available.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlmopt-maxconnects">CURLMOPT_MAXCONNECTS</a></code></strong></td>
           <td style="vertical-align: top;">
            Pass a number that will be used as the maximum amount of
            simultaneously open connections that libcurl may cache.
            By default the size will be enlarged to fit four times the number
            of handles added via <span class="function">curl_multi_add_handle</span>.
            When the cache is full, curl closes the oldest one in the cache
            to prevent the number of open connections from increasing.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlmopt-chunk-length-penalty-size">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</a></code></strong></td>
           <td style="vertical-align: top;">
            Pass a number that specifies the chunk length threshold for pipelining
            in bytes.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlmopt-content-length-penalty-size">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</a></code></strong></td>
           <td style="vertical-align: top;">
            Pass a number that specifies the size threshold for pipelining
            penalty in bytes.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlmopt-max-concurrent-streams">CURLMOPT_MAX_CONCURRENT_STREAMS</a></code></strong></td>
           <td style="vertical-align: top;">
            The set number will be used as the maximum number of concurrent streams for a connections that cURL
            should support on connections done using HTTP/2. Valid values range from
            <code class="literal">1</code> to <code class="literal">2147483647</code> (<code class="literal">2^31 - 1</code>).
            The value passed here would be honored based on other system resources properties.
            Default is <code class="literal">100</code>.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlmopt-max-host-connections">CURLMOPT_MAX_HOST_CONNECTIONS</a></code></strong></td>
           <td style="vertical-align: top;">
            Pass a number that specifies the maximum number of connections to a
            single host.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlmopt-max-pipeline-length">CURLMOPT_MAX_PIPELINE_LENGTH</a></code></strong></td>
           <td style="vertical-align: top;">
            Pass a number that specifies the maximum number of requests in a
            pipeline.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlmopt-max-total-connections">CURLMOPT_MAX_TOTAL_CONNECTIONS</a></code></strong></td>
           <td style="vertical-align: top;">
            Pass a number that specifies the maximum number of simultaneously
            open connections.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlmopt-pushfunction">CURLMOPT_PUSHFUNCTION</a></code></strong></td>
           <td style="vertical-align: top;">
            Pass a <span class="type">callable</span> that will be registered to handle server
            pushes and should have the following signature:
            <div class="methodsynopsis dc-description"><span class="type">int</span> <span class="methodname"><span class="replaceable">pushfunction</span></span>(<span class="methodparam"><span class="type">resource</span> <code class="parameter">$parent_ch</code></span>, <span class="methodparam"><span class="type">resource</span> <code class="parameter">$pushed_ch</code></span>, <span class="methodparam"><span class="type">array</span> <code class="parameter">$headers</code></span>)</div>

            <dl>
             
              <dt><code class="parameter">parent_ch</code></dt>
              <dd>
               <p class="para">
                The parent cURL handle (the request the client made).
               </p>
              </dd>
             
             
              <dt><code class="parameter">pushed_ch</code></dt>
              <dd>
               <p class="para">
                A new cURL handle for the pushed request.
               </p>
              </dd>
             
             
              <dt><code class="parameter">headers</code></dt>
              <dd>
               <p class="para">
                The push promise headers.
               </p>
              </dd>
             
            </dl>
            The push function is supposed to return either
            <strong><code><a href="curl.constants.html#constant.curl-push-ok">CURL_PUSH_OK</a></code></strong> if it can handle the push, or
            <strong><code><a href="curl.constants.html#constant.curl-push-deny">CURL_PUSH_DENY</a></code></strong> to reject it.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: curl_multi_strerror
name: error_code
type: int
description:
<p class="para">
      One of the <a href="http://curl.haxx.se/libcurl/c/libcurl-errors.html" class="link external">&raquo;&nbsp;CURLM error codes</a> constants.
     </p>


function_name: curl_setopt_array
name: options
type: array
description:
<p class="para">
       An <span class="type">array</span> specifying which options to set and their values.
       The keys should be valid <span class="function">curl_setopt</span> constants or
       their integer equivalents.
      </p>


function_name: curl_setopt
name: value
type: mixed
description:
<p class="para">
       The value to be set on <code class="parameter">option</code>.
      </p>
      <p class="para">
       <code class="parameter">value</code> should be a <span class="type">bool</span> for the
       following values of the <code class="parameter">option</code> parameter:
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Set <code class="parameter">value</code> to</th>
           <th>Notes</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-autoreferer">CURLOPT_AUTOREFERER</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to automatically set the <code class="literal">Referer:</code> field in
            requests where it follows a <code class="literal">Location:</code> redirect.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-cookiesession">CURLOPT_COOKIESESSION</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to mark this as a new cookie &quot;session&quot;. It will force libcurl
            to ignore all cookies it is about to load that are &quot;session cookies&quot;
            from the previous session. By default, libcurl always stores and
            loads all cookies, independent if they are session cookies or not.
            Session cookies are cookies without expiry date and they are meant
            to be alive and existing for this &quot;session&quot; only.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_CERTINFO</code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to output SSL certification information to <strong><code><a href="reserved.constants.html#constant.stderr">STDERR</a></code></strong>
            on secure transfers.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.19.1.
            Requires <strong><code><a href="curl.constants.html#constant.curlopt-verbose">CURLOPT_VERBOSE</a></code></strong> to be on to have an effect.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_CONNECT_ONLY</code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> tells the library to perform all the required proxy authentication 
            and connection setup, but no data transfer. This option is implemented for 
            HTTP, SMTP and POP3.
           </td>
           <td style="vertical-align: top;">
            Added in 7.15.2.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-crlf">CURLOPT_CRLF</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to convert Unix newlines to CRLF newlines
            on transfers.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-disallow-username-in-url">CURLOPT_DISALLOW_USERNAME_IN_URL</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to not allow URLs that include a username. Usernames are allowed by default (0).
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.61.0. Available since PHP 7.3.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-dns-shuffle-addresses">CURLOPT_DNS_SHUFFLE_ADDRESSES</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to shuffle the order of all returned addresses so that they will be used 
            in a random order, when a name is resolved and more than one IP address is returned.
            This may cause IPv4 to be used before IPv6 or vice versa.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.60.0. Available since PHP 7.3.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-haproxyprotocol">CURLOPT_HAPROXYPROTOCOL</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to send an HAProxy PROXY protocol v1 header at the start of the connection.
            The default action is not to send this header.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.60.0. Available since PHP 7.3.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssh-compression">CURLOPT_SSH_COMPRESSION</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to enable built-in SSH compression. This is a request, not an order; 
            the server may or may not do it.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.56.0. Available since PHP 7.3.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-dns-use-global-cache">CURLOPT_DNS_USE_GLOBAL_CACHE</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to use a global DNS cache. This option is not thread-safe.
            It is conditionally enabled by default if PHP is built for non-threaded use
            (CLI, FCGI, Apache2-Prefork, etc.).
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-failonerror">CURLOPT_FAILONERROR</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to fail verbosely if the HTTP code returned
            is greater than or equal to 400. The default behavior is to return
            the page normally, ignoring the code.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssl-falsestart">CURLOPT_SSL_FALSESTART</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to enable TLS false start.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.42.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-filetime">CURLOPT_FILETIME</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to attempt to retrieve the modification
            date of the remote document. This value can be retrieved using
            the <strong><code><a href="curl.constants.html#constant.curlinfo-filetime">CURLINFO_FILETIME</a></code></strong> option with
            <span class="function">curl_getinfo</span>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-followlocation">CURLOPT_FOLLOWLOCATION</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to follow any
            <code class="literal">&quot;Location: &quot;</code> header that the server sends as
            part of the HTTP header.
            See also <strong><code><a href="curl.constants.html#constant.curlopt-maxredirs">CURLOPT_MAXREDIRS</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-forbid-reuse">CURLOPT_FORBID_REUSE</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to force the connection to explicitly
            close when it has finished processing, and not be pooled for reuse.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-fresh-connect">CURLOPT_FRESH_CONNECT</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to force the use of a new connection
            instead of a cached one.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ftp-use-eprt">CURLOPT_FTP_USE_EPRT</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to use EPRT (and LPRT) when doing active
            FTP downloads. Use <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> to disable EPRT and LPRT and use PORT
            only.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ftp-use-epsv">CURLOPT_FTP_USE_EPSV</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to first try an EPSV command for FTP
            transfers before reverting back to PASV. Set to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>
            to disable EPSV.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ftp-create-missing-dirs">CURLOPT_FTP_CREATE_MISSING_DIRS</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to create missing directories when an FTP operation
            encounters a path that currently doesn&#039;t exist.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ftpappend">CURLOPT_FTPAPPEND</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to append to the remote file instead of
            overwriting it.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-tcp-nodelay">CURLOPT_TCP_NODELAY</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to disable TCP&#039;s Nagle algorithm, which tries to minimize
            the number of small packets on the network.
           </td>
           <td style="vertical-align: top;">
            Available for versions compiled with libcurl 7.11.2 or
            greater.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ftpascii">CURLOPT_FTPASCII</a></code></strong></td>
           <td style="vertical-align: top;">
            An alias of
            <strong><code><a href="curl.constants.html#constant.curlopt-transfertext">CURLOPT_TRANSFERTEXT</a></code></strong>. Use that instead.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ftplistonly">CURLOPT_FTPLISTONLY</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to only list the names of an FTP
            directory.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-header">CURLOPT_HEADER</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to include the header in the output.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="curl.constants.html#constant.curlinfo-header-out">CURLINFO_HEADER_OUT</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to track the handle&#039;s request string.
           </td>
           <td style="vertical-align: top;">
            The <strong><code>CURLINFO_</code></strong>
            prefix is intentional.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-http09-allowed">CURLOPT_HTTP09_ALLOWED</a></code></strong></td>
           <td style="vertical-align: top;">
            Whether to allow HTTP/0.9 responses. Defaults to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> as of libcurl 7.66.0;
            formerly it defaulted to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.15 and 7.4.3, respectively, if built against libcurl &gt;= 7.64.0 
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-httpget">CURLOPT_HTTPGET</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to reset the HTTP request method to GET.
            Since GET is the default, this is only necessary if the request
            method has been changed.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-httpproxytunnel">CURLOPT_HTTPPROXYTUNNEL</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to tunnel through a given HTTP proxy.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_HTTP_CONTENT_DECODING</code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> to get the raw HTTP response body.
           </td>
           <td style="vertical-align: top;">
            Available if built against libcurl &gt;= 7.16.2.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-keep-sending-on-error">CURLOPT_KEEP_SENDING_ON_ERROR</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to keep sending the request body if the HTTP code returned is 
            equal to or larger than 300. The default action would be to stop sending
            and close the stream or connection. Suitable for manual NTLM authentication.
            Most applications do not need this option.
           </td>
           <td style="vertical-align: top;">
            Available as of PHP 7.3.0 if built against libcurl &gt;= 7.51.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-mute">CURLOPT_MUTE</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to be completely silent with regards to
            the cURL functions.
           </td>
           <td style="vertical-align: top;">
            Removed in cURL 7.15.5 (You can use CURLOPT_RETURNTRANSFER instead)
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-netrc">CURLOPT_NETRC</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to scan the <var class="filename">~/.netrc</var>
            file to find a username and password for the remote site that
            a connection is being established with.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-nobody">CURLOPT_NOBODY</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to exclude the body from the output.
            Request method is then set to HEAD. Changing this to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> does
            not change it to GET.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-noprogress">CURLOPT_NOPROGRESS</a></code></strong></td>
           <td style="vertical-align: top;"><p class="para">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to disable the progress meter for cURL transfers.
            <blockquote class="note"><p><strong class="note">Note</strong>: 
             <p class="para">
              PHP automatically sets this option to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, this should only be
              changed for debugging purposes.
             </p>
            </p></blockquote>
            </p></td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-nosignal">CURLOPT_NOSIGNAL</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to ignore any cURL function that causes a
            signal to be sent to the PHP process. This is turned on by default
            in multi-threaded SAPIs so timeout options can still be used.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.10.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-path-as-is">CURLOPT_PATH_AS_IS</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to not handle dot dot sequences.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.42.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-pipewait">CURLOPT_PIPEWAIT</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to wait for pipelining/multiplexing.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.43.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-post">CURLOPT_POST</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to do a regular HTTP POST. This POST is the
            normal <code class="literal">application/x-www-form-urlencoded</code> kind,
            most commonly used by HTML forms.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-put">CURLOPT_PUT</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to HTTP PUT a file. The file to PUT must
            be set with <strong><code><a href="curl.constants.html#constant.curlopt-infile">CURLOPT_INFILE</a></code></strong> and
            <strong><code><a href="curl.constants.html#constant.curlopt-infilesize">CURLOPT_INFILESIZE</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-returntransfer">CURLOPT_RETURNTRANSFER</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to return the transfer as a string of the
            return value of <span class="function">curl_exec</span> instead of outputting
            it directly.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-sasl-ir">CURLOPT_SASL_IR</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to enable sending the initial response in the first packet.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.31.10. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssl-enable-alpn">CURLOPT_SSL_ENABLE_ALPN</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> to disable ALPN in the SSL handshake (if the SSL backend
            libcurl is built to use supports it), which can be used to
            negotiate http2.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.36.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssl-enable-npn">CURLOPT_SSL_ENABLE_NPN</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> to disable NPN in the SSL handshake (if the SSL backend
            libcurl is built to use supports it), which can be used to
            negotiate http2.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.36.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssl-verifypeer">CURLOPT_SSL_VERIFYPEER</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> to stop cURL from verifying the peer&#039;s
            certificate. Alternate certificates to verify against can be
            specified with the <strong><code><a href="curl.constants.html#constant.curlopt-cainfo">CURLOPT_CAINFO</a></code></strong> option
            or a certificate directory can be specified with the
            <strong><code><a href="curl.constants.html#constant.curlopt-capath">CURLOPT_CAPATH</a></code></strong> option.
           </td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> by default as of cURL 7.10. Default bundle installed as of
            cURL 7.10.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssl-verifystatus">CURLOPT_SSL_VERIFYSTATUS</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to verify the certificate&#039;s status.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.41.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-ssl-verifypeer">CURLOPT_PROXY_SSL_VERIFYPEER</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> to stop cURL from verifying the peer&#039;s certificate.
            Alternate certificates to verify against can be
            specified with the <strong><code><a href="curl.constants.html#constant.curlopt-cainfo">CURLOPT_CAINFO</a></code></strong> option
            or a certificate directory can be specified with the
            <strong><code><a href="curl.constants.html#constant.curlopt-capath">CURLOPT_CAPATH</a></code></strong> option.
            When set to false, the peer certificate verification succeeds regardless.
           </td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> by default. Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_SAFE_UPLOAD</code></strong></td>
           <td style="vertical-align: top;">
            Always <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, what disables support for the <code class="literal">@</code> prefix for
            uploading files in <strong><code><a href="curl.constants.html#constant.curlopt-postfields">CURLOPT_POSTFIELDS</a></code></strong>, which
            means that values starting with <code class="literal">@</code> can be safely
            passed as fields. <span class="classname">CURLFile</span> may be used for
            uploads instead.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-suppress-connect-headers">CURLOPT_SUPPRESS_CONNECT_HEADERS</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to suppress proxy CONNECT response headers from the user callback functions 
            <strong><code><a href="curl.constants.html#constant.curlopt-headerfunction">CURLOPT_HEADERFUNCTION</a></code></strong> and <strong><code><a href="curl.constants.html#constant.curlopt-writefunction">CURLOPT_WRITEFUNCTION</a></code></strong>,
            when <strong><code><a href="curl.constants.html#constant.curlopt-httpproxytunnel">CURLOPT_HTTPPROXYTUNNEL</a></code></strong> is used and a CONNECT request is made.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.54.0. Available since PHP 7.3.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-tcp-fastopen">CURLOPT_TCP_FASTOPEN</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to enable TCP Fast Open.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.49.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-tftp-no-options">CURLOPT_TFTP_NO_OPTIONS</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to not send TFTP options requests.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.48.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-transfertext">CURLOPT_TRANSFERTEXT</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to use ASCII mode for FTP transfers.
            For LDAP, it retrieves data in plain text instead of HTML. On
            Windows systems, it will not set <strong><code><a href="reserved.constants.html#constant.stdout">STDOUT</a></code></strong> to binary
            mode.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-unrestricted-auth">CURLOPT_UNRESTRICTED_AUTH</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to keep sending the username and password
            when following locations (using
            <strong><code><a href="curl.constants.html#constant.curlopt-followlocation">CURLOPT_FOLLOWLOCATION</a></code></strong>), even when the
            hostname has changed.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-upload">CURLOPT_UPLOAD</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to prepare for an upload.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-verbose">CURLOPT_VERBOSE</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to output verbose information. Writes
            output to <strong><code><a href="reserved.constants.html#constant.stderr">STDERR</a></code></strong>, or the file specified using
            <strong><code><a href="curl.constants.html#constant.curlopt-stderr">CURLOPT_STDERR</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       <code class="parameter">value</code> should be an <span class="type">int</span> for the
       following values of the <code class="parameter">option</code> parameter:
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Set <code class="parameter">value</code> to</th>
           <th>Notes</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-buffersize">CURLOPT_BUFFERSIZE</a></code></strong></td>
           <td style="vertical-align: top;">
            The size of the buffer to use for each read. There is no guarantee
            this request will be fulfilled, however.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.10.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="curl.constants.html#constant.curlopt-connecttimeout">CURLOPT_CONNECTTIMEOUT</a></code></strong></td>
           <td style="vertical-align: top;">
            The number of seconds to wait while trying to connect. Use 0 to
            wait indefinitely.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-connecttimeout-ms">CURLOPT_CONNECTTIMEOUT_MS</a></code></strong></td>
           <td style="vertical-align: top;">
            The number of milliseconds to wait while trying to connect. Use 0 to
            wait indefinitely.
            
            If libcurl is built to use the standard system name resolver, that
            portion of the connect will still use full-second resolution for
            timeouts with a minimum timeout allowed of one second.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.16.2.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-dns-cache-timeout">CURLOPT_DNS_CACHE_TIMEOUT</a></code></strong></td>
           <td style="vertical-align: top;">
            The number of seconds to keep DNS entries in memory. This
            option is set to 120 (2 minutes) by default.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-expect-100-timeout-ms">CURLOPT_EXPECT_100_TIMEOUT_MS</a></code></strong></td>
           <td style="vertical-align: top;">
            The timeout for <code class="literal">Expect: 100-continue</code> responses in milliseconds.
            Defaults to 1000 milliseconds.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.36.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-happy-eyeballs-timeout-ms">CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS</a></code></strong></td>
           <td style="vertical-align: top;">
            Head start for ipv6 for the happy eyeballs algorithm. Happy eyeballs attempts
            to connect to both IPv4 and IPv6 addresses for dual-stack hosts, 
            preferring IPv6 first for timeout milliseconds.
            Defaults to CURL_HET_DEFAULT, which is currently 200 milliseconds.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.59.0. Available since PHP 7.3.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ftpsslauth">CURLOPT_FTPSSLAUTH</a></code></strong></td>
           <td style="vertical-align: top;">
            The FTP authentication method (when is activated):
            <strong><code><a href="curl.constants.html#constant.curlftpauth-ssl">CURLFTPAUTH_SSL</a></code></strong> (try SSL first),
            <strong><code><a href="curl.constants.html#constant.curlftpauth-tls">CURLFTPAUTH_TLS</a></code></strong> (try TLS first), or
            <strong><code><a href="curl.constants.html#constant.curlftpauth-default">CURLFTPAUTH_DEFAULT</a></code></strong> (let cURL decide).
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.12.2.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-headeropt">CURLOPT_HEADEROPT</a></code></strong></td>
           <td style="vertical-align: top;">
            How to deal with headers. One of the following constants:
            <span class="simpara">
             <strong><code><a href="curl.constants.html#constant.curlheader-unified">CURLHEADER_UNIFIED</a></code></strong>: the headers specified in
             <strong><code><a href="curl.constants.html#constant.curlopt-httpheader">CURLOPT_HTTPHEADER</a></code></strong> will be used in requests
             both to servers and proxies. With this option enabled, 
             <strong><code><a href="curl.constants.html#constant.curlopt-proxyheader">CURLOPT_PROXYHEADER</a></code></strong> will not have any effect.
            </span>
            <span class="simpara">
             <strong><code><a href="curl.constants.html#constant.curlheader-separate">CURLHEADER_SEPARATE</a></code></strong>: makes
             <strong><code><a href="curl.constants.html#constant.curlopt-httpheader">CURLOPT_HTTPHEADER</a></code></strong> headers only get sent to
             a server and not to a proxy. Proxy headers must be set with
             <strong><code><a href="curl.constants.html#constant.curlopt-proxyheader">CURLOPT_PROXYHEADER</a></code></strong> to get used. Note that if
             a non-CONNECT request is sent to a proxy, libcurl will send both
             server headers and proxy headers. When doing CONNECT, libcurl will
             send <strong><code><a href="curl.constants.html#constant.curlopt-proxyheader">CURLOPT_PROXYHEADER</a></code></strong> headers only to the
             proxy and then <strong><code><a href="curl.constants.html#constant.curlopt-httpheader">CURLOPT_HTTPHEADER</a></code></strong> headers
             only to the server.
            </span>
            <span class="simpara">
             Defaults to <strong><code><a href="curl.constants.html#constant.curlheader-separate">CURLHEADER_SEPARATE</a></code></strong> as of cURL
             7.42.1, and <strong><code><a href="curl.constants.html#constant.curlheader-unified">CURLHEADER_UNIFIED</a></code></strong> before.
            </span>
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.37.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-http-version">CURLOPT_HTTP_VERSION</a></code></strong></td>
           <td style="vertical-align: top;">
            <strong><code><a href="curl.constants.html#constant.curl-http-version-none">CURL_HTTP_VERSION_NONE</a></code></strong> (default, lets CURL
            decide which version to use),
            <strong><code><a href="curl.constants.html#constant.curl-http-version-1-0">CURL_HTTP_VERSION_1_0</a></code></strong> (forces HTTP/1.0),
            <strong><code><a href="curl.constants.html#constant.curl-http-version-1-1">CURL_HTTP_VERSION_1_1</a></code></strong> (forces HTTP/1.1),
            <strong><code><a href="curl.constants.html#constant.curl-http-version-2-0">CURL_HTTP_VERSION_2_0</a></code></strong> (attempts HTTP 2),
            <strong><code><a href="curl.constants.html#constant.curl-http-version-2">CURL_HTTP_VERSION_2</a></code></strong> (alias of <strong><code><a href="curl.constants.html#constant.curl-http-version-2-0">CURL_HTTP_VERSION_2_0</a></code></strong>),
            <strong><code><a href="curl.constants.html#constant.curl-http-version-2tls">CURL_HTTP_VERSION_2TLS</a></code></strong> (attempts HTTP 2 over TLS (HTTPS) only) or
            <strong><code><a href="curl.constants.html#constant.curl-http-version-2-prior-knowledge">CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE</a></code></strong> (issues non-TLS HTTP requests using HTTP/2 without HTTP/1.1 Upgrade).
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-httpauth">CURLOPT_HTTPAUTH</a></code></strong></td>
           <td style="vertical-align: top;">
            <p class="para">
             The HTTP authentication method(s) to use. The options are:
             <strong><code><a href="curl.constants.html#constant.curlauth-basic">CURLAUTH_BASIC</a></code></strong>,
             <strong><code><a href="curl.constants.html#constant.curlauth-digest">CURLAUTH_DIGEST</a></code></strong>,
             <strong><code><a href="curl.constants.html#constant.curlauth-gssnegotiate">CURLAUTH_GSSNEGOTIATE</a></code></strong>,
             <strong><code><a href="curl.constants.html#constant.curlauth-ntlm">CURLAUTH_NTLM</a></code></strong>,
             <strong><code><a href="curl.constants.html#constant.curlauth-aws-sigv4">CURLAUTH_AWS_SIGV4</a></code></strong>,
             <strong><code><a href="curl.constants.html#constant.curlauth-any">CURLAUTH_ANY</a></code></strong>, and
             <strong><code><a href="curl.constants.html#constant.curlauth-anysafe">CURLAUTH_ANYSAFE</a></code></strong>.
            </p>
            <p class="para">
             The bitwise <code class="literal">|</code> (or) operator can be used to combine
             more than one method. If this is done, cURL will poll the server to see
             what methods it supports and pick the best one.
            </p>
            <p class="para">
             <strong><code><a href="curl.constants.html#constant.curlauth-any">CURLAUTH_ANY</a></code></strong> sets all bits. cURL will automatically select
             the one it finds most secure.
            </p>
            <p class="para">
             <strong><code><a href="curl.constants.html#constant.curlauth-anysafe">CURLAUTH_ANYSAFE</a></code></strong> sets all bits except <strong><code><a href="curl.constants.html#constant.curlauth-basic">CURLAUTH_BASIC</a></code></strong>.
             cURL will automatically select the one it finds most secure.
            </p>
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-infilesize">CURLOPT_INFILESIZE</a></code></strong></td>
           <td style="vertical-align: top;">
            The expected size, in bytes, of the file when uploading a file to
            a remote site. Note that using this option will not stop libcurl
            from sending more data, as exactly what is sent depends on
            <strong><code><a href="curl.constants.html#constant.curlopt-readfunction">CURLOPT_READFUNCTION</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-low-speed-limit">CURLOPT_LOW_SPEED_LIMIT</a></code></strong></td>
           <td style="vertical-align: top;">
            The transfer speed, in bytes per second, that the transfer should be
            below during the count of <strong><code><a href="curl.constants.html#constant.curlopt-low-speed-time">CURLOPT_LOW_SPEED_TIME</a></code></strong>
            seconds before PHP considers the transfer too slow and aborts.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-low-speed-time">CURLOPT_LOW_SPEED_TIME</a></code></strong></td>
           <td style="vertical-align: top;">
            The number of seconds the transfer speed should be below
            <strong><code><a href="curl.constants.html#constant.curlopt-low-speed-limit">CURLOPT_LOW_SPEED_LIMIT</a></code></strong> before PHP considers
            the transfer too slow and aborts.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-mail-rcpt-alllowfails">CURLOPT_MAIL_RCPT_ALLLOWFAILS</a></code></strong></td>
           <td style="vertical-align: top;">
            Allow RCPT TO command to fail for some recipients.
           </td>
           <td style="vertical-align: top;">
            When sending data to multiple recipients, by default cURL will abort SMTP conversation if at least one of
            the recipients causes RCPT TO command to return an error. This option tells cURL to ignore errors and
            proceed with the remaining valid recipients. If all recipients trigger RCPT TO failures and this flag is
            set, cURL will abort the SMTP conversation and return the error received from the last RCPT TO command.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-maxage-conn">CURLOPT_MAXAGE_CONN</a></code></strong></td>
           <td style="vertical-align: top;">
            The maximum idle time allowed for an existing connection to be considered for reuse.
            Default maximum age is set to <code class="literal">118</code> seconds.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-maxfilesize-large">CURLOPT_MAXFILESIZE_LARGE</a></code></strong></td>
           <td style="vertical-align: top;">
            The maximum file size in bytes allowed to download. If the file requested is found larger than this value,
            the transfer will not start and <strong><code><a href="curl.constants.html#constant.curle-filesize-exceeded">CURLE_FILESIZE_EXCEEDED</a></code></strong> will be returned.
            The file size is not always known prior to download, and for such files this option has no effect even if
            the file transfer ends up being larger than this given limit.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-maxlifetime-conn">CURLOPT_MAXLIFETIME_CONN</a></code></strong></td>
           <td style="vertical-align: top;">
            The maximum time in seconds, since the creation of the connection, that is allowed for an existing
            connection to have for it to be considered for reuse. If a connection is found in the cache that is older
            than this value, it will instead be closed once any in-progress transfers are complete.
            Default is 0 seconds, meaning the option is disabled and all connections are eligible for reuse.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-maxconnects">CURLOPT_MAXCONNECTS</a></code></strong></td>
           <td style="vertical-align: top;">
            The maximum amount of persistent connections that are allowed.
            When the limit is reached, the oldest one in the cache is closed
            to prevent increasing the number of open connections.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-maxredirs">CURLOPT_MAXREDIRS</a></code></strong></td>
           <td style="vertical-align: top;">
            The maximum amount of HTTP redirections to follow. Use this option
            alongside <strong><code><a href="curl.constants.html#constant.curlopt-followlocation">CURLOPT_FOLLOWLOCATION</a></code></strong>.
            Default value of <code class="literal">20</code> is set to prevent infinite redirects.
            Setting to <code class="literal">-1</code> allows inifinite redirects, and <code class="literal">0</code>
            refuses all redirects.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-port">CURLOPT_PORT</a></code></strong></td>
           <td style="vertical-align: top;">
            An alternative port number to connect to.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_POSTREDIR</code></strong></td>
           <td style="vertical-align: top;">
            A bitmask of 1 (301 Moved Permanently), 2 (302 Found)
            and 4 (303 See Other) if the HTTP POST method should be maintained
            when <strong><code><a href="curl.constants.html#constant.curlopt-followlocation">CURLOPT_FOLLOWLOCATION</a></code></strong> is set and a
            specific type of redirect occurs.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.19.1.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_PROTOCOLS</code></strong></td>
           <td style="vertical-align: top;">
            <p class="para">
             Bitmask of <strong><code>CURLPROTO_*</code></strong> values. If used, this bitmask 
             limits what protocols libcurl may use in the transfer. This allows you to have
             a libcurl built to support a wide range of protocols but still limit specific
             transfers to only be allowed to use a subset of them. By default libcurl will
             accept all protocols it supports. 
             See also <strong><code>CURLOPT_REDIR_PROTOCOLS</code></strong>.
            </p>
            <p class="para">
             Valid protocol options are: 
             <strong><code>CURLPROTO_HTTP</code></strong>,
             <strong><code>CURLPROTO_HTTPS</code></strong>,
             <strong><code>CURLPROTO_FTP</code></strong>,
             <strong><code>CURLPROTO_FTPS</code></strong>,
             <strong><code>CURLPROTO_SCP</code></strong>,
             <strong><code>CURLPROTO_SFTP</code></strong>,
             <strong><code>CURLPROTO_TELNET</code></strong>,
             <strong><code>CURLPROTO_LDAP</code></strong>,
             <strong><code>CURLPROTO_LDAPS</code></strong>,
             <strong><code>CURLPROTO_DICT</code></strong>,
             <strong><code>CURLPROTO_FILE</code></strong>,
             <strong><code>CURLPROTO_TFTP</code></strong>,
             <strong><code><a href="curl.constants.html#constant.curlproto-mqtt">CURLPROTO_MQTT</a></code></strong>,
             <strong><code>CURLPROTO_ALL</code></strong>
            </p>
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.19.4.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxyauth">CURLOPT_PROXYAUTH</a></code></strong></td>
           <td style="vertical-align: top;">
            The HTTP authentication method(s) to use for the proxy connection.
            Use the same bitmasks as described in
            <strong><code><a href="curl.constants.html#constant.curlopt-httpauth">CURLOPT_HTTPAUTH</a></code></strong>. For proxy authentication,
            only <strong><code><a href="curl.constants.html#constant.curlauth-basic">CURLAUTH_BASIC</a></code></strong> and
            <strong><code><a href="curl.constants.html#constant.curlauth-ntlm">CURLAUTH_NTLM</a></code></strong> are currently supported.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.10.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxyport">CURLOPT_PROXYPORT</a></code></strong></td>
           <td style="vertical-align: top;">
            The port number of the proxy to connect to. This port number can
            also be set in <strong><code><a href="curl.constants.html#constant.curlopt-proxy">CURLOPT_PROXY</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxytype">CURLOPT_PROXYTYPE</a></code></strong></td>
           <td style="vertical-align: top;">
            Either <strong><code><a href="curl.constants.html#constant.curlproxy-http">CURLPROXY_HTTP</a></code></strong> (default),
            <strong><code><a href="curl.constants.html#constant.curlproxy-socks4">CURLPROXY_SOCKS4</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curlproxy-socks5">CURLPROXY_SOCKS5</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curlproxy-socks4a">CURLPROXY_SOCKS4A</a></code></strong> or
            <strong><code><a href="curl.constants.html#constant.curlproxy-socks5-hostname">CURLPROXY_SOCKS5_HOSTNAME</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.10.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_REDIR_PROTOCOLS</code></strong></td>
           <td style="vertical-align: top;">
            Bitmask of <strong><code>CURLPROTO_*</code></strong> values. If used, this bitmask
            limits what protocols libcurl may use in a transfer that it follows to in
            a redirect when <strong><code><a href="curl.constants.html#constant.curlopt-followlocation">CURLOPT_FOLLOWLOCATION</a></code></strong> is enabled.
            This allows you to limit specific transfers to only be allowed to use a subset
            of protocols in redirections. By default libcurl will allow all protocols
            except for FILE and SCP. This is a difference compared to pre-7.19.4 versions
            which unconditionally would follow to all protocols supported. 
            See also <strong><code>CURLOPT_PROTOCOLS</code></strong> for protocol constant values.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.19.4.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-resume-from">CURLOPT_RESUME_FROM</a></code></strong></td>
           <td style="vertical-align: top;">
            The offset, in bytes, to resume a transfer from.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-socks5-auth">CURLOPT_SOCKS5_AUTH</a></code></strong></td>
           <td style="vertical-align: top;">
            <p class="para">
             The SOCKS5 authentication method(s) to use. The options are:
             <strong><code><a href="curl.constants.html#constant.curlauth-basic">CURLAUTH_BASIC</a></code></strong>,
             <strong><code><a href="curl.constants.html#constant.curlauth-gssapi">CURLAUTH_GSSAPI</a></code></strong>,
             <strong><code>CURLAUTH_NONE</code></strong>.
            </p>
            <p class="para">
             The bitwise <code class="literal">|</code> (or) operator can be used to combine
             more than one method. If this is done, cURL will poll the server to see
             what methods it supports and pick the best one.
            </p>
            <p class="para">
             <strong><code><a href="curl.constants.html#constant.curlauth-basic">CURLAUTH_BASIC</a></code></strong> allows username/password authentication.
            </p>
            <p class="para">
             <strong><code><a href="curl.constants.html#constant.curlauth-gssapi">CURLAUTH_GSSAPI</a></code></strong> allows GSS-API authentication.
            </p>
            <p class="para">
             <strong><code>CURLAUTH_NONE</code></strong> allows no authentication.
            </p>
            <p class="para">
             Defaults to <code class="literal">CURLAUTH_BASIC|CURLAUTH_GSSAPI</code>.
             Set the actual username and password with the <strong><code><a href="curl.constants.html#constant.curlopt-proxyuserpwd">CURLOPT_PROXYUSERPWD</a></code></strong> option.
            </p>
           </td>
           <td style="vertical-align: top;">
            Available as of 7.3.0 and curl &gt;= 7.55.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssl-options">CURLOPT_SSL_OPTIONS</a></code></strong></td>
           <td style="vertical-align: top;">
            Set SSL behavior options, which is a bitmask of any of the following constants:
            <span class="simpara">
             <strong><code><a href="curl.constants.html#constant.curlsslopt-allow-beast">CURLSSLOPT_ALLOW_BEAST</a></code></strong>: do not attempt to use
             any workarounds for a security flaw in the SSL3 and TLS1.0 protocols.
            </span>
            <span class="simpara">
             <strong><code><a href="curl.constants.html#constant.curlsslopt-no-revoke">CURLSSLOPT_NO_REVOKE</a></code></strong>: disable certificate
             revocation checks for those SSL backends where such behavior is
             present.
            </span>
            <span class="simpara">
             <strong><code><a href="curl.constants.html#constant.curlsslopt-auto-client-cert">CURLSSLOPT_AUTO_CLIENT_CERT</a></code></strong>: automatically
             locate and use a client certificate for authentication, when
             requested by the server. This option is only supported for
             Schannel (the native Windows SSL library).
            </span>
            <span class="simpara">
             <strong><code><a href="curl.constants.html#constant.curlsslopt-native-ca">CURLSSLOPT_NATIVE_CA</a></code></strong>: use the operating system&#039;s
             native CA store for certificate verification. Works only on Windows
             when built to use OpenSSL. This option is experimental and behavior is subject to change.
            </span>
            <span class="simpara">
             <strong><code><a href="curl.constants.html#constant.curlsslopt-no-partialchain">CURLSSLOPT_NO_PARTIALCHAIN</a></code></strong>: do not accept &quot;partial&quot; certificate
             chains, which cURL otherwise does by default. This option is only supported for OpenSSL
             and will fail the certificate verification if the chain ends with
             an intermediate certificate and not with a root certificate.
            </span>
            <span class="simpara">
             <strong><code><a href="curl.constants.html#constant.curlsslopt-revoke-best-effort">CURLSSLOPT_REVOKE_BEST_EFFORT</a></code></strong>: ignore certificate revocation checks
             in case of missing or offline distribution points for those SSL backends where
             such behavior is present. This option is only supported for Schannel (the native Windows SSL library).
             If combined with <strong><code><a href="curl.constants.html#constant.curlsslopt-no-revoke">CURLSSLOPT_NO_REVOKE</a></code></strong>, the latter takes precedence.
            </span>
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.25.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssl-verifyhost">CURLOPT_SSL_VERIFYHOST</a></code></strong></td>
           <td style="vertical-align: top;">
            <code class="literal">2</code> to verify that a Common Name field or a Subject Alternate Name
            field in the SSL peer certificate matches the provided hostname.
            <code class="literal">0</code> to not check the names.
            <code class="literal">1</code> should not be used.
            In production environments the value of this option
            should be kept at <code class="literal">2</code> (default value).
           </td>
           <td style="vertical-align: top;">
            Support for value <code class="literal">1</code> removed in cURL 7.28.1.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-sslversion">CURLOPT_SSLVERSION</a></code></strong></td>
           <td style="vertical-align: top;">
            One of <strong><code><a href="curl.constants.html#constant.curl-sslversion-default">CURL_SSLVERSION_DEFAULT</a></code></strong> (0),
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-tlsv1">CURL_SSLVERSION_TLSv1</a></code></strong> (1),
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-sslv2">CURL_SSLVERSION_SSLv2</a></code></strong> (2),
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-sslv3">CURL_SSLVERSION_SSLv3</a></code></strong> (3),
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-tlsv1-0">CURL_SSLVERSION_TLSv1_0</a></code></strong> (4),
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-tlsv1-1">CURL_SSLVERSION_TLSv1_1</a></code></strong> (5),
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-tlsv1-2">CURL_SSLVERSION_TLSv1_2</a></code></strong> (6) or
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-tlsv1-3">CURL_SSLVERSION_TLSv1_3</a></code></strong> (7).
            The maximum TLS version can be set by using one of the <strong><code>CURL_SSLVERSION_MAX_*</code></strong>
            constants. It is also possible to OR one of the <strong><code>CURL_SSLVERSION_*</code></strong>
            constants with one of the <strong><code>CURL_SSLVERSION_MAX_*</code></strong> constants.
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-max-default">CURL_SSLVERSION_MAX_DEFAULT</a></code></strong> (the maximum version supported by the library),
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-max-tlsv1-0">CURL_SSLVERSION_MAX_TLSv1_0</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-max-tlsv1-1">CURL_SSLVERSION_MAX_TLSv1_1</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-max-tlsv1-2">CURL_SSLVERSION_MAX_TLSv1_2</a></code></strong>, or
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-max-tlsv1-3">CURL_SSLVERSION_MAX_TLSv1_3</a></code></strong>.
            <blockquote class="note"><p><strong class="note">Note</strong>: 
             <p class="para">
              Your best bet is to not set this and let it use the default.
              Setting it to 2 or 3 is very dangerous given the known
              vulnerabilities in SSLv2 and SSLv3.
             </p>
            </p></blockquote>
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-ssl-options">CURLOPT_PROXY_SSL_OPTIONS</a></code></strong></td>
           <td style="vertical-align: top;">
            Set proxy SSL behavior options, which is a bitmask of any of the following constants:
            <span class="simpara">
             <strong><code><a href="curl.constants.html#constant.curlsslopt-allow-beast">CURLSSLOPT_ALLOW_BEAST</a></code></strong>: do not attempt to use
             any workarounds for a security flaw in the SSL3 and TLS1.0 protocols.
            </span>
            <span class="simpara">
             <strong><code><a href="curl.constants.html#constant.curlsslopt-no-revoke">CURLSSLOPT_NO_REVOKE</a></code></strong>: disable certificate
             revocation checks for those SSL backends where such behavior is
             present. (curl &gt;= 7.44.0)
            </span>
            <span class="simpara">
             <strong><code><a href="curl.constants.html#constant.curlsslopt-no-partialchain">CURLSSLOPT_NO_PARTIALCHAIN</a></code></strong>: do not accept &quot;partial&quot; 
             certificate chains, which it otherwise does by default. (curl &gt;= 7.68.0)
            </span>
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-ssl-verifyhost">CURLOPT_PROXY_SSL_VERIFYHOST</a></code></strong></td>
           <td style="vertical-align: top;">
            Set to <code class="literal">2</code> to verify in the HTTPS proxy&#039;s certificate name fields against the proxy name. 
            When set to <code class="literal">0</code> the connection succeeds regardless of the names used in the certificate. 
            Use that ability with caution! 
            <code class="literal">1</code> treated as a debug option in curl 7.28.0 and earlier. 
            From curl 7.28.1 to 7.65.3 <strong><code><a href="curl.constants.html#constant.curle-bad-function-argument">CURLE_BAD_FUNCTION_ARGUMENT</a></code></strong> is returned.
            From curl 7.66.0 onwards <code class="literal">1</code> and <code class="literal">2</code> is treated as the same value.
            In production environments the value of this option should be kept at <code class="literal">2</code> (default value).
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-sslversion">CURLOPT_PROXY_SSLVERSION</a></code></strong></td>
           <td style="vertical-align: top;">
            One of <strong><code><a href="curl.constants.html#constant.curl-sslversion-default">CURL_SSLVERSION_DEFAULT</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-tlsv1">CURL_SSLVERSION_TLSv1</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-tlsv1-0">CURL_SSLVERSION_TLSv1_0</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-tlsv1-1">CURL_SSLVERSION_TLSv1_1</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-tlsv1-2">CURL_SSLVERSION_TLSv1_2</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-tlsv1-3">CURL_SSLVERSION_TLSv1_3</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-max-default">CURL_SSLVERSION_MAX_DEFAULT</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-max-tlsv1-0">CURL_SSLVERSION_MAX_TLSv1_0</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-max-tlsv1-1">CURL_SSLVERSION_MAX_TLSv1_1</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-max-tlsv1-2">CURL_SSLVERSION_MAX_TLSv1_2</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-max-tlsv1-3">CURL_SSLVERSION_MAX_TLSv1_3</a></code></strong> or
            <strong><code><a href="curl.constants.html#constant.curl-sslversion-sslv3">CURL_SSLVERSION_SSLv3</a></code></strong>.
            <blockquote class="note"><p><strong class="note">Note</strong>: 
             <p class="para">
              Your best bet is to not set this and let it use the default <strong><code><a href="curl.constants.html#constant.curl-sslversion-default">CURL_SSLVERSION_DEFAULT</a></code></strong>
              which will attempt to figure out the remote SSL protocol version.
             </p>
            </p></blockquote>
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-stream-weight">CURLOPT_STREAM_WEIGHT</a></code></strong></td>
           <td style="vertical-align: top;">
            Set the numerical stream weight (a number between 1 and 256).
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.46.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-tcp-keepalive">CURLOPT_TCP_KEEPALIVE</a></code></strong></td>
           <td style="vertical-align: top;">
            If set to <code class="literal">1</code>, TCP keepalive probes will be sent. The delay and
            frequency of these probes can be controlled by the <strong><code><a href="curl.constants.html#constant.curlopt-tcp-keepidle">CURLOPT_TCP_KEEPIDLE</a></code></strong>
            and <strong><code><a href="curl.constants.html#constant.curlopt-tcp-keepintvl">CURLOPT_TCP_KEEPINTVL</a></code></strong> options, provided the operating system
            supports them. If set to <code class="literal">0</code> (default) keepalive probes are disabled.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.25.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-tcp-keepidle">CURLOPT_TCP_KEEPIDLE</a></code></strong></td>
           <td style="vertical-align: top;">
            Sets the delay, in seconds, that the operating system will wait while the connection is
            idle before sending keepalive probes, if <strong><code><a href="curl.constants.html#constant.curlopt-tcp-keepalive">CURLOPT_TCP_KEEPALIVE</a></code></strong> is
            enabled. Not all operating systems support this option.
            The default is <code class="literal">60</code>.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.25.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-tcp-keepintvl">CURLOPT_TCP_KEEPINTVL</a></code></strong></td>
           <td style="vertical-align: top;">
            Sets the interval, in seconds, that the operating system will wait between sending
            keepalive probes, if <strong><code><a href="curl.constants.html#constant.curlopt-tcp-keepalive">CURLOPT_TCP_KEEPALIVE</a></code></strong> is enabled.
            Not all operating systems support this option.
            The default is <code class="literal">60</code>.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.25.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-timecondition">CURLOPT_TIMECONDITION</a></code></strong></td>
           <td style="vertical-align: top;">
            How <strong><code><a href="curl.constants.html#constant.curlopt-timevalue">CURLOPT_TIMEVALUE</a></code></strong> is treated.
            Use <strong><code><a href="curl.constants.html#constant.curl-timecond-ifmodsince">CURL_TIMECOND_IFMODSINCE</a></code></strong> to return the
            page only if it has been modified since the time specified in
            <strong><code><a href="curl.constants.html#constant.curlopt-timevalue">CURLOPT_TIMEVALUE</a></code></strong>. If it hasn&#039;t been modified,
            a <code class="literal">&quot;304 Not Modified&quot;</code> header will be returned
            assuming <strong><code><a href="curl.constants.html#constant.curlopt-header">CURLOPT_HEADER</a></code></strong> is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>.
            Use <strong><code><a href="curl.constants.html#constant.curl-timecond-ifunmodsince">CURL_TIMECOND_IFUNMODSINCE</a></code></strong> for the reverse
            effect. Use <strong><code><a href="curl.constants.html#constant.curl-timecond-none">CURL_TIMECOND_NONE</a></code></strong> to ignore
            <strong><code><a href="curl.constants.html#constant.curlopt-timevalue">CURLOPT_TIMEVALUE</a></code></strong> and always return the page.
            <strong><code><a href="curl.constants.html#constant.curl-timecond-none">CURL_TIMECOND_NONE</a></code></strong> is the default.
           </td>
           <td style="vertical-align: top;">
            Before cURL 7.46.0 the default was
            <strong><code><a href="curl.constants.html#constant.curl-timecond-ifmodsince">CURL_TIMECOND_IFMODSINCE</a></code></strong>.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-timeout">CURLOPT_TIMEOUT</a></code></strong></td>
           <td style="vertical-align: top;">
            The maximum number of seconds to allow cURL functions to execute.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-timeout-ms">CURLOPT_TIMEOUT_MS</a></code></strong></td>
           <td style="vertical-align: top;">
            The maximum number of milliseconds to allow cURL functions to
            execute.
            
            If libcurl is built to use the standard system name resolver, that
            portion of the connect will still use full-second resolution for
            timeouts with a minimum timeout allowed of one second.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.16.2.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-timevalue">CURLOPT_TIMEVALUE</a></code></strong></td>
           <td style="vertical-align: top;">
            The time in seconds since January 1st, 1970. The time will be used
            by <strong><code><a href="curl.constants.html#constant.curlopt-timecondition">CURLOPT_TIMECONDITION</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-timevalue-large">CURLOPT_TIMEVALUE_LARGE</a></code></strong></td>
           <td style="vertical-align: top;">
            The time in seconds since January 1st, 1970. The time will be used
            by <strong><code><a href="curl.constants.html#constant.curlopt-timecondition">CURLOPT_TIMECONDITION</a></code></strong>. Defaults to zero.
            The difference between this option and <strong><code><a href="curl.constants.html#constant.curlopt-timevalue">CURLOPT_TIMEVALUE</a></code></strong>
            is the type of the argument. On systems where &#039;long&#039; is only 32 bit wide, 
            this option has to be used to set dates beyond the year 2038.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.59.0. Available since PHP 7.3.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-upkeep-interval-ms">CURLOPT_UPKEEP_INTERVAL_MS</a></code></strong></td>
           <td style="vertical-align: top;">
            Some protocols have &quot;connection upkeep&quot; mechanisms. These mechanisms usually send some traffic
            on existing connections in order to keep them alive. This option defines the connection upkeep interval.
            Currently, the only protocol with a connection upkeep mechanism is HTTP/2. When the connection upkeep
            interval is exceeded, an HTTP/2 PING frame is sent on the connection.
            Default is <code class="literal">60</code> seconds.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-upload-buffersize">CURLOPT_UPLOAD_BUFFERSIZE</a></code></strong></td>
           <td style="vertical-align: top;">
            Preferred buffer size in bytes for the cURL upload buffer.
            The upload buffer size by default is 64 kilobytes. The maximum buffer size allowed to be set is 2 megabytes.
            The minimum buffer size allowed to be set is 16 kilobytes.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-max-recv-speed-large">CURLOPT_MAX_RECV_SPEED_LARGE</a></code></strong></td>
           <td style="vertical-align: top;">
            If a download exceeds this speed (counted in bytes per second) on
            cumulative average during the transfer, the transfer will pause to
            keep the average rate less than or equal to the parameter value.
            Defaults to unlimited speed.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.15.5.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-max-send-speed-large">CURLOPT_MAX_SEND_SPEED_LARGE</a></code></strong></td>
           <td style="vertical-align: top;">
            If an upload exceeds this speed (counted in bytes per second) on
            cumulative average during the transfer, the transfer will pause to
            keep the average rate less than or equal to the parameter value.
            Defaults to unlimited speed.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.15.5.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssh-auth-types">CURLOPT_SSH_AUTH_TYPES</a></code></strong></td>
           <td style="vertical-align: top;">
            A bitmask consisting of one or more of 
            <strong><code><a href="curl.constants.html#constant.curlssh-auth-publickey">CURLSSH_AUTH_PUBLICKEY</a></code></strong>, 
            <strong><code><a href="curl.constants.html#constant.curlssh-auth-password">CURLSSH_AUTH_PASSWORD</a></code></strong>, 
            <strong><code><a href="curl.constants.html#constant.curlssh-auth-host">CURLSSH_AUTH_HOST</a></code></strong>, 
            <strong><code><a href="curl.constants.html#constant.curlssh-auth-keyboard">CURLSSH_AUTH_KEYBOARD</a></code></strong>. Set to 
            <strong><code><a href="curl.constants.html#constant.curlssh-auth-any">CURLSSH_AUTH_ANY</a></code></strong> to let libcurl pick one.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.16.1. 
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_IPRESOLVE</code></strong></td>
           <td style="vertical-align: top;">
            Allows an application to select what kind of IP addresses to use when
            resolving host names. This is only interesting when using host names that
            resolve addresses using more than one version of IP, possible values are
            <strong><code>CURL_IPRESOLVE_WHATEVER</code></strong>, 
            <strong><code>CURL_IPRESOLVE_V4</code></strong>, 
            <strong><code>CURL_IPRESOLVE_V6</code></strong>, by default
            <strong><code>CURL_IPRESOLVE_WHATEVER</code></strong>.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.10.8.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_FTP_FILEMETHOD</code></strong></td>
           <td style="vertical-align: top;">
            Tell curl which method to use to reach a file on a FTP(S) server. Possible values are
            <strong><code><a href="curl.constants.html#constant.curlftpmethod-default">CURLFTPMETHOD_DEFAULT</a></code></strong>,
            <strong><code>CURLFTPMETHOD_MULTICWD</code></strong>,
            <strong><code>CURLFTPMETHOD_NOCWD</code></strong>, and
            <strong><code>CURLFTPMETHOD_SINGLECWD</code></strong>.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.15.1.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       <code class="parameter">value</code> should be a <span class="type">string</span> for the
       following values of the <code class="parameter">option</code> parameter:
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Set <code class="parameter">value</code> to</th>
           <th>Notes</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-abstract-unix-socket">CURLOPT_ABSTRACT_UNIX_SOCKET</a></code></strong></td>
           <td style="vertical-align: top;">
            Enables the use of an abstract Unix domain socket instead of 
            establishing a TCP connection to a host and sets the path to
            the given <span class="type">string</span>. This option shares the same semantics
            as <strong><code><a href="curl.constants.html#constant.curlopt-unix-socket-path">CURLOPT_UNIX_SOCKET_PATH</a></code></strong>. These two options
            share the same storage and therefore only one of them can be set
            per handle. 
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and cURL 7.53.0
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-altsvc">CURLOPT_ALTSVC</a></code></strong></td>
           <td style="vertical-align: top;">
            Pass the filename for cURL to use as the Alt-Svc cache file to read existing cache contents from and
            possibly also write it back to a after a transfer, unless <strong><code><a href="curl.constants.html#constant.curlaltsvc-readonlyfile">CURLALTSVC_READONLYFILE</a></code></strong>
            is set via <strong><code><a href="curl.constants.html#constant.curlopt-altsvc-ctrl">CURLOPT_ALTSVC_CTRL</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-altsvc-ctrl">CURLOPT_ALTSVC_CTRL</a></code></strong></td>
           <td style="vertical-align: top;">
            Populate the bitmask with the correct set of features to instruct cURL how to handle Alt-Svc for the
            transfers using this handle. cURL only accepts Alt-Svc headers over HTTPS. It will also only complete
            a request to an alternative origin if that origin is properly hosted over HTTPS.
            Setting any bit will enable the alt-svc engine. The options are:
            <strong><code><a href="curl.constants.html#constant.curlaltsvc-h1">CURLALTSVC_H1</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curlaltsvc-h2">CURLALTSVC_H2</a></code></strong>,
            <strong><code><a href="curl.constants.html#constant.curlaltsvc-h3">CURLALTSVC_H3</a></code></strong>, and
            <strong><code><a href="curl.constants.html#constant.curlaltsvc-readonlyfile">CURLALTSVC_READONLYFILE</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-aws-sigv4">CURLOPT_AWS_SIGV4</a></code></strong></td>
           <td style="vertical-align: top;">
            <p class="para">
             Provides AWS V4 signature authentication on HTTP(S) header.
            </p>
            <p class="para">
             This option overrides any other authentication types that have been set in
             <strong><code><a href="curl.constants.html#constant.curlopt-httpauth">CURLOPT_HTTPAUTH</a></code></strong>. This method cannot be combined with other authentication types.
            </p>
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-cainfo">CURLOPT_CAINFO</a></code></strong></td>
           <td style="vertical-align: top;">
            The name of a file holding one or more certificates to verify the
            peer with. This only makes sense when used in combination with
            <strong><code><a href="curl.constants.html#constant.curlopt-ssl-verifypeer">CURLOPT_SSL_VERIFYPEER</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
            Might require an absolute path.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-cainfo-blob">CURLOPT_CAINFO_BLOB</a></code></strong></td>
           <td style="vertical-align: top;">
            The name of a PEM file holding one or more certificates to verify the
            peer with. This option overrides <strong><code><a href="curl.constants.html#constant.curlopt-cainfo">CURLOPT_CAINFO</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
            Available as of PHP 8.2.0 and cURL 7.77.0
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-capath">CURLOPT_CAPATH</a></code></strong></td>
           <td style="vertical-align: top;">
            A directory that holds multiple CA certificates. Use this option
            alongside <strong><code><a href="curl.constants.html#constant.curlopt-ssl-verifypeer">CURLOPT_SSL_VERIFYPEER</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-cookie">CURLOPT_COOKIE</a></code></strong></td>
           <td style="vertical-align: top;">
            The contents of the <code class="literal">&quot;Cookie: &quot;</code> header to be
            used in the HTTP request.
            Note that multiple cookies are separated with a semicolon followed
            by a space (e.g., &quot;<code class="literal">fruit=apple; colour=red</code>&quot;)
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-cookiefile">CURLOPT_COOKIEFILE</a></code></strong></td>
           <td style="vertical-align: top;">
            The name of the file containing the cookie data. The cookie file can
            be in Netscape format, or just plain HTTP-style headers dumped into
            a file.
            If the name is an empty string, no cookies are loaded, but cookie
            handling is still enabled.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-cookiejar">CURLOPT_COOKIEJAR</a></code></strong></td>
           <td style="vertical-align: top;">
            The name of a file to save all internal cookies to when the handle is closed, 
            e.g. after a call to curl_close.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-cookielist">CURLOPT_COOKIELIST</a></code></strong></td>
           <td style="vertical-align: top;">
            A cookie string (i.e. a single line in Netscape/Mozilla format, or a regular
            HTTP-style Set-Cookie header) adds that single cookie to the internal cookie store.
            <code class="literal">&quot;ALL&quot;</code> erases all cookies held in memory.
            <code class="literal">&quot;SESS&quot;</code> erases all session cookies held in memory.
            <code class="literal">&quot;FLUSH&quot;</code> writes all known cookies to the file specified by <strong><code><a href="curl.constants.html#constant.curlopt-cookiejar">CURLOPT_COOKIEJAR</a></code></strong>.
            <code class="literal">&quot;RELOAD&quot;</code> loads all cookies from the files specified by <strong><code><a href="curl.constants.html#constant.curlopt-cookiefile">CURLOPT_COOKIEFILE</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
            Available since cURL 7.14.1.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-customrequest">CURLOPT_CUSTOMREQUEST</a></code></strong></td>
           <td style="vertical-align: top;"><p class="para">
            A custom request method to use instead of
            <code class="literal">&quot;GET&quot;</code> or <code class="literal">&quot;HEAD&quot;</code> when doing
            a HTTP request. This is useful for doing
            <code class="literal">&quot;DELETE&quot;</code> or other, more obscure HTTP requests.
            Valid values are things like <code class="literal">&quot;GET&quot;</code>,
            <code class="literal">&quot;POST&quot;</code>, <code class="literal">&quot;CONNECT&quot;</code> and so on;
            i.e. Do not enter a whole HTTP request line here. For instance,
            entering <code class="literal">&quot;GET /index.html HTTP/1.0\r\n\r\n&quot;</code>
            would be incorrect.
            <blockquote class="note"><p><strong class="note">Note</strong>: 
             <p class="para">
              Don&#039;t do this without making sure the server supports the custom
              request method first.
             </p>
            </p></blockquote>
            </p></td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-default-protocol">CURLOPT_DEFAULT_PROTOCOL</a></code></strong></td>
           <td style="vertical-align: top;"><p class="para">
            The default protocol to use if the URL is missing a scheme name.
           </p></td>
           <td style="vertical-align: top;">
            Added in cURL 7.45.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-dns-interface">CURLOPT_DNS_INTERFACE</a></code></strong></td>
           <td style="vertical-align: top;"><p class="para">
            Set the name of the network interface that the DNS resolver should bind to.
            This must be an interface name (not an address).
            </p></td>
           <td style="vertical-align: top;">
            Added in cURL 7.33.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-dns-local-ip4">CURLOPT_DNS_LOCAL_IP4</a></code></strong></td>
           <td style="vertical-align: top;"><p class="para">
            Set the local IPv4 address that the resolver should bind to. The argument
            should contain a single numerical IPv4 address as a string.
            </p></td>
           <td style="vertical-align: top;">
            Added in cURL 7.33.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-dns-local-ip6">CURLOPT_DNS_LOCAL_IP6</a></code></strong></td>
           <td style="vertical-align: top;"><p class="para">
            Set the local IPv6 address that the resolver should bind to. The argument
            should contain a single numerical IPv6 address as a string.
            </p></td>
           <td style="vertical-align: top;">
            Added in cURL 7.33.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-egdsocket">CURLOPT_EGDSOCKET</a></code></strong></td>
           <td style="vertical-align: top;">
            Like <strong><code><a href="curl.constants.html#constant.curlopt-random-file">CURLOPT_RANDOM_FILE</a></code></strong>, except a filename
            to an Entropy Gathering Daemon socket.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-encoding">CURLOPT_ENCODING</a></code></strong></td>
           <td style="vertical-align: top;">
            The contents of the <code class="literal">&quot;Accept-Encoding: &quot;</code> header.
            This enables decoding of the response. Supported encodings are
            <code class="literal">&quot;identity&quot;</code>, <code class="literal">&quot;deflate&quot;</code>, and
            <code class="literal">&quot;gzip&quot;</code>. If an empty string, <code class="literal">&quot;&quot;</code>,
            is set, a header containing all supported encoding types is sent.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.10.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ftpport">CURLOPT_FTPPORT</a></code></strong></td>
           <td style="vertical-align: top;">
            The value which will be used to get the IP address to use
            for the FTP &quot;PORT&quot; instruction. The &quot;PORT&quot; instruction tells
            the remote server to connect to our specified IP address.  The
            string may be a plain IP address, a hostname, a network
            interface name (under Unix), or just a plain &#039;-&#039; to use the
            systems default IP address.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-hsts">CURLOPT_HSTS</a></code></strong></td>
           <td style="vertical-align: top;">
            <p class="para">
             HSTS (HTTP Strict Transport Security) cache file name.
            </p>
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-hsts-ctrl">CURLOPT_HSTS_CTRL</a></code></strong></td>
           <td style="vertical-align: top;">
            <p class="para">
             Controls HSTS (HTTP Strict Transport Security) behavior. Populate the bitmask with the correct set of
             features to instruct cURL how to handle HSTS for the transfers using this handle.
             <strong><code><a href="curl.constants.html#constant.curlhsts-enable">CURLHSTS_ENABLE</a></code></strong> enables the in-memory HSTS cache. If the HSTS cache file is defined,
             set <strong><code><a href="curl.constants.html#constant.curlhsts-readonlyfile">CURLHSTS_READONLYFILE</a></code></strong> to make the file read-only.
            </p>
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-interface">CURLOPT_INTERFACE</a></code></strong></td>
           <td style="vertical-align: top;">
            The name of the outgoing network interface to use. This can be an
            interface name, an IP address or a host name.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-keypasswd">CURLOPT_KEYPASSWD</a></code></strong></td>
           <td style="vertical-align: top;">
            The password required to use the <strong><code><a href="curl.constants.html#constant.curlopt-sslkey">CURLOPT_SSLKEY</a></code></strong> 
            or <strong><code><a href="curl.constants.html#constant.curlopt-ssh-private-keyfile">CURLOPT_SSH_PRIVATE_KEYFILE</a></code></strong> private key. 
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.16.1. 
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-krb4level">CURLOPT_KRB4LEVEL</a></code></strong></td>
           <td style="vertical-align: top;">
            The KRB4 (Kerberos 4) security level. Any of the following values
            (in order from least to most powerful) are valid:
            <code class="literal">&quot;clear&quot;</code>,
            <code class="literal">&quot;safe&quot;</code>,
            <code class="literal">&quot;confidential&quot;</code>,
            <code class="literal">&quot;private&quot;.</code>.
            If the string does not match one of these,
            <code class="literal">&quot;private&quot;</code> is used. Setting this option to <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>
            will disable KRB4 security. Currently KRB4 security only works
            with FTP transactions.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-login-options">CURLOPT_LOGIN_OPTIONS</a></code></strong></td>
           <td style="vertical-align: top;">
            Can be used to set protocol specific login options, such as the
            preferred authentication mechanism via &quot;AUTH=NTLM&quot; or &quot;AUTH=*&quot;,
            and should be used in conjunction with the
            <strong><code><a href="curl.constants.html#constant.curlopt-username">CURLOPT_USERNAME</a></code></strong> option.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.34.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-pinnedpublickey">CURLOPT_PINNEDPUBLICKEY</a></code></strong></td>
           <td style="vertical-align: top;">
             Set the pinned public key.
             The string can be the file name of your pinned public key. The file
             format expected is &quot;PEM&quot; or &quot;DER&quot;. The string can also be any
             number of base64 encoded sha256 hashes preceded by &quot;sha256//&quot; and
             separated by &quot;;&quot;.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.39.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-postfields">CURLOPT_POSTFIELDS</a></code></strong></td>
           <td style="vertical-align: top;">
            <span class="simpara">
             The full data to post in a HTTP &quot;POST&quot; operation.
             This parameter can either be
             passed as a urlencoded string like &#039;<code class="literal">para1=val1&amp;para2=val2&amp;...</code>&#039; 
             or as an array with the field name as key and field data as value.
             If <code class="parameter">value</code> is an array, the
             <code class="literal">Content-Type</code> header will be set to
             <code class="literal">multipart/form-data</code>.
            </span>
            <span class="simpara">
             Files can be sent using <span class="classname">CURLFile</span> or <span class="classname">CURLStringFile</span>,
             in which case <code class="parameter">value</code> must be an array.
            </span>
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-private">CURLOPT_PRIVATE</a></code></strong></td>
           <td style="vertical-align: top;">
            Any data that should be associated with this cURL handle. This data
            can subsequently be retrieved with the
            <strong><code><a href="curl.constants.html#constant.curlinfo-private">CURLINFO_PRIVATE</a></code></strong> option of
            <span class="function">curl_getinfo</span>. cURL does nothing with this data.
            When using a cURL multi handle, this private data is typically a
            unique key to identify a standard cURL handle.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.10.3. 
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-pre-proxy">CURLOPT_PRE_PROXY</a></code></strong></td>
           <td style="vertical-align: top;">
            Set a <span class="type">string</span> holding the host name or dotted numerical 
            IP address to be used as the preproxy that curl connects to before 
            it connects to the HTTP(S) proxy specified in the 
            <strong><code><a href="curl.constants.html#constant.curlopt-proxy">CURLOPT_PROXY</a></code></strong> option for the upcoming request.
            The preproxy can only be a SOCKS proxy and it should be prefixed with
            <code class="literal">[scheme]://</code> to specify which kind of socks is used.
            A numerical IPv6 address must be written within [brackets].
            Setting the preproxy to an empty string explicitly disables the use of a preproxy. 
            To specify port number in this string, append <code class="literal">:[port]</code>
            to the end of the host name. The proxy&#039;s port number may optionally be 
            specified with the separate option <strong><code><a href="curl.constants.html#constant.curlopt-proxyport">CURLOPT_PROXYPORT</a></code></strong>. 
            Defaults to using port 1080 for proxies if a port is not specified.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy">CURLOPT_PROXY</a></code></strong></td>
           <td style="vertical-align: top;">
            The HTTP proxy to tunnel requests through.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-service-name">CURLOPT_PROXY_SERVICE_NAME</a></code></strong></td>
           <td style="vertical-align: top;">
            The proxy authentication service name.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.43.0 for HTTP proxies, and in cURL 7.49.0 for SOCKS5 proxies.
            Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-cainfo">CURLOPT_PROXY_CAINFO</a></code></strong></td>
           <td style="vertical-align: top;">
            The path to proxy Certificate Authority (CA) bundle. Set the path as a
            <span class="type">string</span> naming a file holding one or more certificates to
            verify the HTTPS proxy with.
            This option is for connecting to an HTTPS proxy, not an HTTPS server.
            Defaults set to the system path where libcurl&#039;s cacert bundle is assumed
            to be stored.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-cainfo-blob">CURLOPT_PROXY_CAINFO_BLOB</a></code></strong></td>
           <td style="vertical-align: top;">
            The name of a PEM file holding one or more certificates to verify the HTTPS proxy with.
            This option is for connecting to an HTTPS proxy, not an HTTPS server.
            Defaults set to the system path where libcurl&#039;s cacert bundle is assumed
            to be stored.
           </td>
           <td style="vertical-align: top;">
            Available as of PHP 8.2.0 and libcurl &gt;= cURL 7.77.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-capath">CURLOPT_PROXY_CAPATH</a></code></strong></td>
           <td style="vertical-align: top;">
            The directory holding multiple CA certificates to verify the HTTPS proxy with.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-crlfile">CURLOPT_PROXY_CRLFILE</a></code></strong></td>
           <td style="vertical-align: top;">
            Set the file name with the concatenation of CRL (Certificate Revocation List) 
            in PEM format to use in the certificate validation that occurs during 
            the SSL exchange.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-keypasswd">CURLOPT_PROXY_KEYPASSWD</a></code></strong></td>
           <td style="vertical-align: top;">
            Set the string be used as the password required to use the 
            <strong><code><a href="curl.constants.html#constant.curlopt-proxy-sslkey">CURLOPT_PROXY_SSLKEY</a></code></strong> private key. You never needed a 
            passphrase to load a certificate but you need one to load your private key.
            This option is for connecting to an HTTPS proxy, not an HTTPS server.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-pinnedpublickey">CURLOPT_PROXY_PINNEDPUBLICKEY</a></code></strong></td>
           <td style="vertical-align: top;">
            Set the pinned public key for HTTPS proxy. The string can be the file name 
            of your pinned public key. The file format expected is &quot;PEM&quot; or &quot;DER&quot;. 
            The string can also be any number of base64 encoded sha256 hashes preceded by 
            &quot;sha256//&quot; and separated by &quot;;&quot;
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-sslcert">CURLOPT_PROXY_SSLCERT</a></code></strong></td>
           <td style="vertical-align: top;">
            The file name of your client certificate used to connect to the HTTPS proxy. 
            The default format is &quot;P12&quot; on Secure Transport and &quot;PEM&quot; on other engines, 
            and can be changed with <strong><code><a href="curl.constants.html#constant.curlopt-proxy-sslcerttype">CURLOPT_PROXY_SSLCERTTYPE</a></code></strong>.
            With NSS or Secure Transport, this can also be the nickname of the certificate 
            you wish to authenticate with as it is named in the security database. 
            If you want to use a file from the current directory, please precede it with 
            &quot;./&quot; prefix, in order to avoid confusion with a nickname.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-sslcerttype">CURLOPT_PROXY_SSLCERTTYPE</a></code></strong></td>
           <td style="vertical-align: top;">
            The format of your client certificate used when connecting to an HTTPS proxy.
            Supported formats are &quot;PEM&quot; and &quot;DER&quot;, except with Secure Transport. 
            OpenSSL (versions 0.9.3 and later) and Secure Transport 
            (on iOS 5 or later, or OS X 10.7 or later) also support &quot;P12&quot; for 
            PKCS#12-encoded files. Defaults to &quot;PEM&quot;.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-ssl-cipher-list">CURLOPT_PROXY_SSL_CIPHER_LIST</a></code></strong></td>
           <td style="vertical-align: top;">
            The list of ciphers to use for the connection to the HTTPS proxy. 
            The list must be syntactically correct, it consists of one or more cipher 
            strings separated by colons. Commas or spaces are also acceptable separators 
            but colons are normally used, !, - and + can be used as operators.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-tls13-ciphers">CURLOPT_PROXY_TLS13_CIPHERS</a></code></strong></td>
           <td style="vertical-align: top;">
            The list of cipher suites to use for the TLS 1.3 connection to a proxy.
            The list must be syntactically correct, it consists of one or more 
            cipher suite strings separated by colons. This option is currently used 
            only when curl is built to use OpenSSL 1.1.1 or later. 
            If you are using a different SSL backend you can try setting 
            TLS 1.3 cipher suites by using the <strong><code><a href="curl.constants.html#constant.curlopt-proxy-ssl-cipher-list">CURLOPT_PROXY_SSL_CIPHER_LIST</a></code></strong> option.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.61.0. Available when built with OpenSSL &gt;= 1.1.1.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-sslkey">CURLOPT_PROXY_SSLKEY</a></code></strong></td>
           <td style="vertical-align: top;">
            The file name of your private key used for connecting to the HTTPS proxy. 
            The default format is &quot;PEM&quot; and can be changed with 
            <strong><code><a href="curl.constants.html#constant.curlopt-proxy-sslkeytype">CURLOPT_PROXY_SSLKEYTYPE</a></code></strong>. 
            (iOS and Mac OS X only) This option is ignored if curl was built against Secure Transport.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0. Available if built TLS enabled.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-sslkeytype">CURLOPT_PROXY_SSLKEYTYPE</a></code></strong></td>
           <td style="vertical-align: top;">
            The format of your private key. Supported formats are &quot;PEM&quot;, &quot;DER&quot; and &quot;ENG&quot;.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-tlsauth-password">CURLOPT_PROXY_TLSAUTH_PASSWORD</a></code></strong></td>
           <td style="vertical-align: top;">
            The password to use for the TLS authentication method specified with the 
            <strong><code><a href="curl.constants.html#constant.curlopt-proxy-tlsauth-type">CURLOPT_PROXY_TLSAUTH_TYPE</a></code></strong> option. Requires that the 
            <strong><code><a href="curl.constants.html#constant.curlopt-proxy-tlsauth-username">CURLOPT_PROXY_TLSAUTH_USERNAME</a></code></strong> option to also be set.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-tlsauth-type">CURLOPT_PROXY_TLSAUTH_TYPE</a></code></strong></td>
           <td style="vertical-align: top;">
            The method of the TLS authentication used for the HTTPS connection. Supported method is &quot;SRP&quot;.
            <blockquote class="note"><p><strong class="note">Note</strong>: 
             <p class="para">
              Secure Remote Password (SRP) authentication for TLS provides mutual authentication 
              if both sides have a shared secret. To use TLS-SRP, you must also set the 
              <strong><code><a href="curl.constants.html#constant.curlopt-proxy-tlsauth-username">CURLOPT_PROXY_TLSAUTH_USERNAME</a></code></strong> and 
              <strong><code><a href="curl.constants.html#constant.curlopt-proxy-tlsauth-password">CURLOPT_PROXY_TLSAUTH_PASSWORD</a></code></strong> options.
             </p>
            </p></blockquote>
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxy-tlsauth-username">CURLOPT_PROXY_TLSAUTH_USERNAME</a></code></strong></td>
           <td style="vertical-align: top;">
            The username to use for the HTTPS proxy TLS authentication method specified with the
            <strong><code><a href="curl.constants.html#constant.curlopt-proxy-tlsauth-type">CURLOPT_PROXY_TLSAUTH_TYPE</a></code></strong> option. Requires that the
            <strong><code><a href="curl.constants.html#constant.curlopt-proxy-tlsauth-password">CURLOPT_PROXY_TLSAUTH_PASSWORD</a></code></strong> option to also be set.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.52.0.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxyuserpwd">CURLOPT_PROXYUSERPWD</a></code></strong></td>
           <td style="vertical-align: top;">
            A username and password formatted as
            <code class="literal">&quot;[username]:[password]&quot;</code> to use for the
            connection to the proxy.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-random-file">CURLOPT_RANDOM_FILE</a></code></strong></td>
           <td style="vertical-align: top;">
            A filename to be used to seed the random number generator for SSL.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-range">CURLOPT_RANGE</a></code></strong></td>
           <td style="vertical-align: top;">
            Range(s) of data to retrieve in the format
            <code class="literal">&quot;X-Y&quot;</code> where X or Y are optional. HTTP transfers
            also support several intervals, separated with commas in the format
            <code class="literal">&quot;X-Y,N-M&quot;</code>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-referer">CURLOPT_REFERER</a></code></strong></td>
           <td style="vertical-align: top;">
            The contents of the <code class="literal">&quot;Referer: &quot;</code> header to be used
            in a HTTP request.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-sasl-authzid">CURLOPT_SASL_AUTHZID</a></code></strong></td>
           <td style="vertical-align: top;">
            The authorization identity (authzid) for the transfer. Only applicable to the PLAIN SASL
            authentication mechanism where it is optional. When not specified, only the authentication identity
            (authcid) as specified by the username will be sent to the server, along with the password.
            The server will derive the authzid from the authcid when not provided, which it will then use internally.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-service-name">CURLOPT_SERVICE_NAME</a></code></strong></td>
           <td style="vertical-align: top;">
            The authentication service name.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.43.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssh-host-public-key-md5">CURLOPT_SSH_HOST_PUBLIC_KEY_MD5</a></code></strong></td>
           <td style="vertical-align: top;">
            A string containing 32 hexadecimal digits. The string should be the 
            MD5 checksum of the remote host&#039;s public key, and libcurl will reject 
            the connection to the host unless the md5sums match. 
            This option is only for SCP and SFTP transfers.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.17.1. 
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssh-host-public-key-sha256">CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256</a></code></strong></td>
           <td style="vertical-align: top;">
            Base64-encoded SHA256 hash of the remote host&#039;s public key.
            The transfer will fail if the given hash does not match the hash the remote host provides.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssh-public-keyfile">CURLOPT_SSH_PUBLIC_KEYFILE</a></code></strong></td>
           <td style="vertical-align: top;">
            The file name for your public key. If not used, libcurl defaults to 
            $HOME/.ssh/id_dsa.pub if the HOME environment variable is set, 
            and just &quot;id_dsa.pub&quot; in the current directory if HOME is not set.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.16.1. 
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssh-private-keyfile">CURLOPT_SSH_PRIVATE_KEYFILE</a></code></strong></td>
           <td style="vertical-align: top;">
            The file name for your private key. If not used, libcurl defaults to 
            $HOME/.ssh/id_dsa if the HOME environment variable is set, 
            and just &quot;id_dsa&quot; in the current directory if HOME is not set. 
            If the file is password-protected, set the password with 
            <strong><code><a href="curl.constants.html#constant.curlopt-keypasswd">CURLOPT_KEYPASSWD</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.16.1. 
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssl-cipher-list">CURLOPT_SSL_CIPHER_LIST</a></code></strong></td>
           <td style="vertical-align: top;">
            A list of ciphers to use for SSL. For example,
            <code class="literal">RC4-SHA</code> and <code class="literal">TLSv1</code> are valid
            cipher lists.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-ssl-ec-curves">CURLOPT_SSL_EC_CURVES</a></code></strong></td>
           <td style="vertical-align: top;">
            A colon delimited list of elliptic curve algorithms. For example,
            <code class="literal">X25519:P-521</code> is a valid list of two elliptic curves.
            This option defines the client&#039;s key exchange algorithms in the SSL handshake,
            if the SSL backend cURL is built to use supports it.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-sslcert">CURLOPT_SSLCERT</a></code></strong></td>
           <td style="vertical-align: top;">
            The name of a file containing a PEM formatted certificate.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-sslcertpasswd">CURLOPT_SSLCERTPASSWD</a></code></strong></td>
           <td style="vertical-align: top;">
            The password required to use the
            <strong><code><a href="curl.constants.html#constant.curlopt-sslcert">CURLOPT_SSLCERT</a></code></strong> certificate.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-sslcerttype">CURLOPT_SSLCERTTYPE</a></code></strong></td>
           <td style="vertical-align: top;">
            The format of the certificate. Supported formats are
            <code class="literal">&quot;PEM&quot;</code> (default), <code class="literal">&quot;DER&quot;</code>,
            and <code class="literal">&quot;ENG&quot;</code>.
            As of OpenSSL 0.9.3, <code class="literal">&quot;P12&quot;</code> (for PKCS#12-encoded files)
            is also supported.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.9.3.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-sslengine">CURLOPT_SSLENGINE</a></code></strong></td>
           <td style="vertical-align: top;">
            The identifier for the crypto engine of the private SSL key
            specified in <strong><code><a href="curl.constants.html#constant.curlopt-sslkey">CURLOPT_SSLKEY</a></code></strong>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-sslengine-default">CURLOPT_SSLENGINE_DEFAULT</a></code></strong></td>
           <td style="vertical-align: top;">
            The identifier for the crypto engine used for asymmetric crypto
            operations.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-sslkey">CURLOPT_SSLKEY</a></code></strong></td>
           <td style="vertical-align: top;">
            The name of a file containing a private SSL key.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-sslkeypasswd">CURLOPT_SSLKEYPASSWD</a></code></strong></td>
           <td style="vertical-align: top;"><p class="para">
            The secret password needed to use the private SSL key specified in
            <strong><code><a href="curl.constants.html#constant.curlopt-sslkey">CURLOPT_SSLKEY</a></code></strong>.
            <blockquote class="note"><p><strong class="note">Note</strong>: 
             <p class="para">
              Since this option contains a sensitive password, remember to keep
              the PHP script it is contained within safe.
             </p>
            </p></blockquote>
            </p></td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-sslkeytype">CURLOPT_SSLKEYTYPE</a></code></strong></td>
           <td style="vertical-align: top;">
            The key type of the private SSL key specified in
            <strong><code><a href="curl.constants.html#constant.curlopt-sslkey">CURLOPT_SSLKEY</a></code></strong>. Supported key types are
            <code class="literal">&quot;PEM&quot;</code> (default), <code class="literal">&quot;DER&quot;</code>,
            and <code class="literal">&quot;ENG&quot;</code>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-tls13-ciphers">CURLOPT_TLS13_CIPHERS</a></code></strong></td>
           <td style="vertical-align: top;">
            The list of cipher suites to use for the TLS 1.3 connection. The list must be 
            syntactically correct, it consists of one or more cipher suite strings separated by colons. 
            This option is currently used only when curl is built to use OpenSSL 1.1.1 or later. 
            If you are using a different SSL backend you can try setting 
            TLS 1.3 cipher suites by using the <strong><code><a href="curl.constants.html#constant.curlopt-ssl-cipher-list">CURLOPT_SSL_CIPHER_LIST</a></code></strong> option.
           </td>
           <td style="vertical-align: top;">
            Available since PHP 7.3.0 and libcurl &gt;= cURL 7.61.0. Available when built with OpenSSL &gt;= 1.1.1.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-unix-socket-path">CURLOPT_UNIX_SOCKET_PATH</a></code></strong></td>
           <td style="vertical-align: top;">
            Enables the use of Unix domain sockets as connection endpoint and
            sets the path to the given <span class="type">string</span>.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.40.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-url">CURLOPT_URL</a></code></strong></td>
           <td style="vertical-align: top;">
            The URL to fetch. This can also be set when initializing a
            session with <span class="function">curl_init</span>.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-useragent">CURLOPT_USERAGENT</a></code></strong></td>
           <td style="vertical-align: top;">
            The contents of the <code class="literal">&quot;User-Agent: &quot;</code> header to be
            used in a HTTP request.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-username">CURLOPT_USERNAME</a></code></strong></td>
           <td style="vertical-align: top;">
            The user name to use in authentication.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.19.1.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_PASSWORD</code></strong></td>
           <td style="vertical-align: top;">
            The password to use in authentication.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.19.1.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-userpwd">CURLOPT_USERPWD</a></code></strong></td>
           <td style="vertical-align: top;">
            A username and password formatted as
            <code class="literal">&quot;[username]:[password]&quot;</code> to use for the
            connection.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-xoauth2-bearer">CURLOPT_XOAUTH2_BEARER</a></code></strong></td>
           <td style="vertical-align: top;">
            Specifies the OAuth 2.0 access token.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.33.0. Available since PHP 7.0.7.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       <code class="parameter">value</code> should be an array for the
       following values of the <code class="parameter">option</code> parameter:
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Set <code class="parameter">value</code> to</th>
           <th>Notes</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-connect-to">CURLOPT_CONNECT_TO</a></code></strong></td>
           <td style="vertical-align: top;">
            Connect to a specific host and port instead of the URL&#039;s host and port.
            Accepts an array of strings with the format
            <code class="literal">HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT</code>.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.49.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-http200aliases">CURLOPT_HTTP200ALIASES</a></code></strong></td>
           <td style="vertical-align: top;">
            An array of HTTP 200 responses that will be treated as valid
            responses and not as errors.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.10.3.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-httpheader">CURLOPT_HTTPHEADER</a></code></strong></td>
           <td style="vertical-align: top;">
            An array of HTTP header fields to set, in the format
            <code class="code">
             array(&#039;Content-type: text/plain&#039;, &#039;Content-length: 100&#039;)
            </code>
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-postquote">CURLOPT_POSTQUOTE</a></code></strong></td>
           <td style="vertical-align: top;">
            An array of FTP commands to execute on the server after the FTP
            request has been performed.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-proxyheader">CURLOPT_PROXYHEADER</a></code></strong></td>
           <td style="vertical-align: top;">
            An array of custom HTTP headers to pass to proxies.
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.37.0. Available since PHP 7.0.7.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-quote">CURLOPT_QUOTE</a></code></strong></td>
           <td style="vertical-align: top;">
            An array of FTP commands to execute on the server prior to the FTP
            request.
           </td>
           <td style="vertical-align: top;">
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_RESOLVE</code></strong></td>
           <td style="vertical-align: top;">
            Provide a custom address for a specific host and port pair. An array
            of hostname, port, and IP address strings, each element separated by
            a colon. In the format:
            <code class="code">
             array(&quot;example.com:80:127.0.0.1&quot;)
            </code>
           </td>
           <td style="vertical-align: top;">
            Added in cURL 7.21.3.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       <code class="parameter">value</code> should be a stream resource (using
       <span class="function">fopen</span>, for example) for the following values of the
       <code class="parameter">option</code> parameter:
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Set <code class="parameter">value</code> to</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-file">CURLOPT_FILE</a></code></strong></td>
           <td style="vertical-align: top;">
            The file that the transfer should be written to. The default
            is <strong><code><a href="reserved.constants.html#constant.stdout">STDOUT</a></code></strong> (the browser window).
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-infile">CURLOPT_INFILE</a></code></strong></td>
           <td style="vertical-align: top;">
            The file that the transfer should be read from when uploading.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-stderr">CURLOPT_STDERR</a></code></strong></td>
           <td style="vertical-align: top;">
            An alternative location to output errors to instead of
            <strong><code><a href="reserved.constants.html#constant.stderr">STDERR</a></code></strong>.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-writeheader">CURLOPT_WRITEHEADER</a></code></strong></td>
           <td style="vertical-align: top;">
            The file that the header part of the transfer is written to.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       <code class="parameter">value</code> should be the name of a valid function or a Closure 
       for the following values of the <code class="parameter">option</code> parameter:
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Set <code class="parameter">value</code> to</th>
           <th>Notes</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-headerfunction">CURLOPT_HEADERFUNCTION</a></code></strong></td>
           <td style="vertical-align: top;">
            A callback accepting two parameters.
            The first is the cURL resource, the second is a
            string with the header data to be written. The header data must
            be written by this callback. Return the number of 
            bytes written.
           </td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-passwdfunction">CURLOPT_PASSWDFUNCTION</a></code></strong></td>
           <td style="vertical-align: top;">
            A callback accepting three parameters. 
            The first is the cURL resource, the second is a
            string containing a password prompt, and the third is the maximum
            password length. Return the string containing the password.
           </td>
           <td>Removed as of PHP 7.3.0.</td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-progressfunction">CURLOPT_PROGRESSFUNCTION</a></code></strong></td>
           <td style="vertical-align: top;">
            <p class="para">
             A callback accepting five parameters.
             The first is the cURL resource, the second is the total number of
             bytes expected to be downloaded in this transfer, the third is
             the number of bytes downloaded so far, the fourth is the total
             number of bytes expected to be uploaded in this transfer, and the
             fifth is the number of bytes uploaded so far.
            </p>
            <blockquote class="note"><p><strong class="note">Note</strong>: 
             <p class="para">
              The callback is only called when the <strong><code><a href="curl.constants.html#constant.curlopt-noprogress">CURLOPT_NOPROGRESS</a></code></strong>
              option is set to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>.
             </p>
            </p></blockquote>
            <p class="para">
             Return a non-zero value to abort the transfer. In which case, the
             transfer will set a <strong><code><a href="curl.constants.html#constant.curle-aborted-by-callback">CURLE_ABORTED_BY_CALLBACK</a></code></strong>
             error.
            </p>
           </td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-readfunction">CURLOPT_READFUNCTION</a></code></strong></td>
           <td style="vertical-align: top;">
            A callback accepting three parameters. 
            The first is the cURL resource, the second is a
            stream resource provided to cURL through the option
            <strong><code><a href="curl.constants.html#constant.curlopt-infile">CURLOPT_INFILE</a></code></strong>, and the third is the maximum
            amount of data to be read. The callback must return a string
            with a length equal or smaller than the amount of data requested,
            typically by reading it from the passed stream resource. It should
            return an empty string to signal <code class="literal">EOF</code>.
           </td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code><a href="curl.constants.html#constant.curlopt-writefunction">CURLOPT_WRITEFUNCTION</a></code></strong></td>
           <td style="vertical-align: top;">
            A callback accepting two parameters. 
            The first is the cURL resource, and the second is a
            string with the data to be written. The data must be saved by
            this callback. It must return the exact number of bytes written 
            or the transfer will be aborted with an error.
           </td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_XFERINFOFUNCTION</code></strong></td>
           <td style="vertical-align: top;">
            A callback accepting two parameters.
            Has a similar purpose as <strong><code><a href="curl.constants.html#constant.curlopt-progressfunction">CURLOPT_PROGRESSFUNCTION</a></code></strong> but is more modern
            and the preferred option from cURL.
           </td>
           <td style="vertical-align: top;">
            Added in 7.32.0. Available as of PHP 8.2.0.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       Other values:
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Set <code class="parameter">value</code> to</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="vertical-align: top;"><strong><code>CURLOPT_SHARE</code></strong></td>
           <td style="vertical-align: top;">
            A result of <span class="function">curl_share_init</span>. Makes the cURL
            handle to use the data from the shared handle.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: curl_share_setopt
name: option
type: int
description:
<p class="para">
      <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="vertical-align: top;"><strong><code>CURLSHOPT_SHARE</code></strong></td>
           <td style="vertical-align: top;">
               Specifies a type of data that should be shared.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURLSHOPT_UNSHARE</code></strong></td>
           <td style="vertical-align: top;">
               Specifies a type of data that will be no longer shared.
           </td>
          </tr>

         </tbody>
        
       </table>

     </p>


function_name: curl_share_setopt
name: value
type: mixed
description:
<p class="para">
      <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Value</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="vertical-align: top;"><strong><code>CURL_LOCK_DATA_COOKIE</code></strong></td>
           <td style="vertical-align: top;">
               Shares cookie data.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURL_LOCK_DATA_DNS</code></strong></td>
           <td style="vertical-align: top;">
               Shares DNS cache. Note that when you use cURL multi handles,
               all handles added to the same multi handle will share DNS cache
               by default.
           </td>
          </tr>

          <tr>
           <td style="vertical-align: top;"><strong><code>CURL_LOCK_DATA_SSL_SESSION</code></strong></td>
           <td style="vertical-align: top;">
               Shares SSL session IDs, reducing the time spent on the SSL
               handshake when reconnecting to the same server. Note that SSL
               session IDs are reused within the same handle by default.
           </td>
          </tr>

         </tbody>
        
       </table>

     </p>


function_name: curl_share_strerror
name: error_code
type: int
description:
<p class="para">
      One of the <a href="http://curl.haxx.se/libcurl/c/libcurl-errors.html" class="link external">&raquo;&nbsp;cURL error codes</a> constants.
     </p>


function_name: CURLStringFile.__construct
name: mime
type: string
initializer: "application/octet-stream"
description:
<p class="para">
      MIME type of the file (default is <code class="literal">application/octet-stream</code>).
     </p>


function_name: Event.__construct
name: fd
type: mixed
description:
<p class="para">
      stream resource, socket resource, or numeric file descriptor. For timer
      events pass
      <strong><code>-1</code></strong>
      . For signal events pass the signal number, e.g.
      <strong><code><a href="pcntl.constants.html#constant.sighup">SIGHUP</a></code></strong>
      .
     </p>


function_name: Event.__construct
name: what
type: int
description:
<p class="para">
      Event flags. See
      <a href="event.flags.html" class="link">Event flags</a>
      .
     </p>


function_name: Event.__construct
name: cb
type: callable
description:
<p class="para">
      The event callback. See
      <a href="event.callbacks.html" class="link">Event callbacks</a>
      .
     </p>


function_name: Event.__construct
name: arg
type: mixed
initializer: NULL
description:
<p class="para">
      Custom data. If specified, it will be passed to the callback when event
      triggers.
     </p>


function_name: Event.pending
name: flags
type: int
description:
<p class="para">
      One of, or a composition of the following constants:
      <strong><code><a href="class.event.html#event.constants.read">Event::READ</a></code></strong>
      ,
      <strong><code><a href="class.event.html#event.constants.write">Event::WRITE</a></code></strong>
      ,
      <strong><code><a href="class.event.html#event.constants.timeout">Event::TIMEOUT</a></code></strong>
      ,
      <strong><code><a href="class.event.html#event.constants.signal">Event::SIGNAL</a></code></strong>
      .
     </p>


function_name: Event.set
name: fd
type: mixed
description:
<p class="para">
      Stream resource, socket resource, or numeric file descriptor. For timer
      events pass
      <strong><code>-1</code></strong>
      . For signal events pass the signal number, e.g.
      <strong><code><a href="pcntl.constants.html#constant.sighup">SIGHUP</a></code></strong>
      .
     </p>


function_name: Event.set
name: what
type: int
description:
<p class="para">
      See
      <a href="event.flags.html" class="link">Event flags</a>
      .
     </p>


function_name: Event.set
name: arg
type: mixed
description:
<p class="para">
      Custom data associated with the event. It will be passed to the callback
      when the event becomes active.
     </p>


function_name: Event.setTimer
name: cb
type: callable
description:
<p class="para">
      The timer event callback. See
      <a href="event.callbacks.html" class="link">Event callbacks</a>
      .
     </p>


function_name: Event.signal
name: cb
type: callable
description:
<p class="para">
      The signal event callback. See
      <a href="event.callbacks.html" class="link">Event callbacks</a>
      .
     </p>


function_name: EventBase.__construct
name: cfg
type: EventConfig
description:
<p class="para">
      Optional
      <span class="classname">EventConfig</span>
      object.
     </p>


function_name: EventBase.exit
name: timeout
type: float
description:
<p class="para">
      Optional number of seconds after which the event base should stop
      dispatching events.
     </p>


function_name: EventBase.loop
name: flags
type: int
description:
<p class="para">
      Optional flags. One of
      <code class="literal">EventBase::LOOP_*</code>
      constants. See
      <a href="class.eventbase.html#eventbase.constants" class="link">EventBase constants</a>
      .
     </p>


function_name: EventBuffer.readLine
name: eol_style
type: int
description:
<p class="para">
      One of
      <a href="class.eventbuffer.html#eventbuffer.constants" class="link">EventBuffer:EOL_* constants</a>
      .
     </p>


function_name: EventBuffer.write
name: fd
type: mixed
description:
<p class="para">
      Socket resource, stream or numeric file descriptor associated normally
      associated with a socket.
     </p>


function_name: EventBufferEvent.connect
name: addr
type: string
description:
<p class="para">
      Should contain an IP address with optional port number, or a path to
      UNIX domain socket. Recognized formats are:
<div class="example-contents screen">
<div class="cdata"><pre>
[IPv6Address]:port
[IPv6Address]
IPv6Address
IPv4Address:port
IPv4Address
unix:path
</pre></div>
      </div>
      Note,
      <code class="literal">&#039;unix:&#039;</code>
      prefix is currently not case sensitive.
     </p>


function_name: EventBufferEvent.connectHost
name: dns_base
type: EventDnsBase
description:
<p class="para">
      Object of
      <span class="classname">EventDnsBase</span>
      in case if DNS is to be resolved asyncronously. Otherwise <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
     </p>


function_name: EventBufferEvent.connectHost
name: hostname
type: string
description:
<p class="para">
      Hostname to connect to. Recognized formats are:
<div class="example-contents screen">
<div class="cdata"><pre>
 www.example.com (hostname)
 1.2.3.4 (ipv4address)
 ::1 (ipv6address)
[::1] ([ipv6address])
</pre></div>
      </div>
     </p>


function_name: EventBufferEvent.connectHost
name: family
type: int
initializer: EventUtil::AF_UNSPEC
description:
<p class="para">
      Address family.
      <strong><code><a href="class.eventutil.html#eventutil.constants.af-unspec">EventUtil::AF_UNSPEC</a></code></strong>
      ,
      <strong><code><a href="class.eventutil.html#eventutil.constants.af-inet">EventUtil::AF_INET</a></code></strong>
      , or
      <strong><code><a href="class.eventutil.html#eventutil.constants.af-inet6">EventUtil::AF_INET6</a></code></strong>
      . See
      <a href="class.eventutil.html#eventutil.constants" class="link">EventUtil constants</a>
      .
     </p>


function_name: EventBufferEvent.__construct
name: socket
type: mixed
description:
<p class="para">
      May be created as a stream(not necessarily by means of
      <code class="literal">sockets</code>
      extension)
     </p>


function_name: EventBufferEvent.__construct
name: options
type: int
description:
<p class="para">
      One of
      <a href="class.eventbufferevent.html#eventbufferevent.constants" class="link">EventBufferEvent::OPT_*
     constants</a>
      , or
      <code class="literal">0</code>
      .
     </p>


function_name: EventBufferEvent.__construct
name: readcb
type: callable
description:
<p class="para">
      Read event callback. See
      <a href="eventbufferevent.about.callbacks.html" class="link">About buffer event
     callbacks</a>
      .
     </p>


function_name: EventBufferEvent.__construct
name: writecb
type: callable
description:
<p class="para">
      Write event callback. See
      <a href="eventbufferevent.about.callbacks.html" class="link">About buffer event
     callbacks</a>
      .
     </p>


function_name: EventBufferEvent.__construct
name: eventcb
type: callable
description:
<p class="para">
      Status-change event callback. See
      <a href="eventbufferevent.about.callbacks.html" class="link">About buffer event
     callbacks</a>
      .
     </p>


function_name: EventBufferEvent.createPair
name: options
type: int
description:
<p class="para">
      <a href="" class="link">EventBufferEvent::OPT_* constants</a>
      combined with bitwise
      <code class="literal">OR</code>
      operator.
     </p>


function_name: EventBufferEvent.enable
name: events
type: int
description:
<p class="para">
      <strong><code><a href="class.event.html#event.constants.read">Event::READ</a></code></strong>
      ,
      <strong><code><a href="class.event.html#event.constants.write">Event::WRITE</a></code></strong>
      , or
      <strong><code><a href="class.event.html#event.constants.read">Event::READ</a></code></strong>
      <code class="literal">|</code>
      <strong><code><a href="class.event.html#event.constants.write">Event::WRITE</a></code></strong>
      on a buffer event.
     </p>


function_name: EventBufferEvent.setWatermark
name: events
type: int
description:
<p class="para">
      Bitmask of
      <strong><code><a href="class.event.html#event.constants.read">Event::READ</a></code></strong>
      ,
      <strong><code><a href="class.event.html#event.constants.write">Event::WRITE</a></code></strong>
      , or both.
     </p>


function_name: EventBufferEvent.setWatermark
name: highmark
type: int
description:
<p class="para">
      Maximum watermark value.
      <code class="literal">0</code>
      means &quot;unlimited&quot;.
     </p>


function_name: EventBufferEvent.sslFilter
name: ctx
type: EventSslContext
description:
<p class="para">
      Object of
      <span class="classname">EventSslContext</span>
      class.
     </p>


function_name: EventBufferEvent.sslFilter
name: state
type: int
description:
<p class="para">
      The current state of SSL connection:
      <strong><code><a href="class.eventbufferevent.html#eventbufferevent.constants.ssl-open">EventBufferEvent::SSL_OPEN</a></code></strong>
      ,
      <strong><code><a href="class.eventbufferevent.html#eventbufferevent.constants.ssl-accepting">EventBufferEvent::SSL_ACCEPTING</a></code></strong>
      or
      <strong><code><a href="class.eventbufferevent.html#eventbufferevent.constants.ssl-connecting">EventBufferEvent::SSL_CONNECTING</a></code></strong>
      .
     </p>


function_name: EventBufferEvent.sslSocket
name: socket
type: mixed
description:
<p class="para">
      Socket to use for this SSL. Can be stream or socket resource, numeric
      file descriptor, or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>. If
      <code class="parameter">socket</code>
      is <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, it is assumed that the file descriptor for the socket will be
      assigned later, for instance, by means of
       <span class="methodname">EventBufferEvent::connectHost</span>
      method.
     </p>


function_name: EventBufferEvent.writeBuffer
name: buf
type: EventBuffer
description:
<p class="para">
      Source
      <span class="classname">EventBuffer</span>
      object.
     </p>


function_name: EventConfig.avoidMethod
name: method
type: string
description:
<p class="para">
      The backend method to avoid. See
      <a href="class.eventconfig.html#eventconfig.constants" class="link">EventConfig constants</a>
      .
     </p>


function_name: EventConfig.requireFeatures
name: feature
type: int
description:
<p class="para">
      Bitmask of required features. See
      <a href="class.eventconfig.html#eventconfig.constants" class="link">
       <code class="literal">EventConfig::FEATURE_*</code> constants</a>
     </p>


function_name: EventConfig.setFlags
name: flags
type: int
description:
<p class="para">
      One of <code class="literal">EventBase::LOOP_*</code> constants. 
      See <a href="class.eventbase.html#eventbase.constants" class="link">EventBase constants</a>.
     </p>


function_name: EventConfig.setMaxDispatchInterval
name: max_interval
type: int
description:
<p class="para">
      An interval after which Libevent should stop running callbacks and check
      for more events, or
      <code class="literal">0</code>
      , if there should be no such interval.
     </p>


function_name: EventConfig.setMaxDispatchInterval
name: max_callbacks
type: int
description:
<p class="para">
      A number of callbacks after which Libevent should stop running callbacks
      and check for more events, or
      <strong><code>-1</code></strong>
      , if there should be no such limit.
     </p>


function_name: EventConfig.setMaxDispatchInterval
name: min_priority
type: int
description:
<p class="para">
      A priority below which
      <code class="parameter">max_interval</code>
      and
      <code class="parameter">max_callbacks</code>
      should not be enforced. If this is set to
      <code class="literal">0</code>
      , they are enforced for events of every priority; if it&#039;s set to
      <code class="literal">1</code>
      , they&#039;re enforced for events of priority
      <code class="literal">1</code>
      and above, and so on.
     </p>


function_name: EventDnsBase.addNameserverIp
name: ip
type: string
description:
<p class="para">
      The nameserver string, either as an IPv4 address, an IPv6 address, an
      IPv4 address with a port (
      <code class="literal">IPv4:Port</code>
      ), or an IPv6 address with a port (
      <code class="literal">[IPv6]:Port</code>
      ).
     </p>


function_name: EventDnsBase.__construct
name: initialize
type: bool
description:
<p class="para">
      If <code class="parameter">initialize</code> is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>,
      it attempts to use the underlying operating system defaults to configure
      the DNS base senibly.
      If it is <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>, the DNS base is left unconfigured, with no nameservers or options set.
      In the latter case the DNS base should be configured manually, e.g. with
       <span class="methodname">EventDnsBase::parseResolvConf</span>.
     </p>
     <p class="para">
      If <code class="parameter">initialize</code> is an integer, it must be one of the following flags:
      <table class="doctable informaltable">
       
        <thead>
         <tr>
          <th>Flag</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td style="vertical-align: top;"><strong><code><a href="class.eventdnsbase.html#eventdnsbase.constants.disable-when-inactive">EventDnsBase::DISABLE_WHEN_INACTIVE</a></code></strong></td>
          <td style="vertical-align: top;">
           Do not prevent the libevent event loop from exiting when we have no active DNS requests.
          </td>
         </tr>

         <tr>
          <td style="vertical-align: top;"><strong><code><a href="class.eventdnsbase.html#eventdnsbase.constants.initialize-nameservers">EventDnsBase::INITIALIZE_NAMESERVERS</a></code></strong></td>
          <td style="vertical-align: top;">
           Process the <code class="literal">resolv.conf</code>.
          </td>
         </tr>

         <tr>
          <td style="vertical-align: top;"><strong><code><a href="class.eventdnsbase.html#eventdnsbase.constants.nameservers-no-default">EventDnsBase::NAMESERVERS_NO_DEFAULT</a></code></strong></td>
          <td style="vertical-align: top;">
           Do not add default nameserver if there are no nameservers in the <code class="literal">resolv.conf</code>.
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: EventDnsBase.parseResolvConf
name: flags
type: int
description:
<p class="para">
      Determines what information is parsed from the
      <code class="literal">resolv.conf</code>
      file. See the man page for
      <code class="literal">resolv.conf</code>
      for the format of this file.
     </p>
     <p class="para">
      The following directives are not parsed from the file:
      <code class="literal">sortlist, rotate, no-check-names, inet6, debug</code>
      .
     </p>
     <p class="para">
      If this function encounters an error, the possible return values are:
      <ul class="simplelist">
       <li>
        <code class="literal">1</code> = failed to open file</li>
       <li>
        <code class="literal">2</code> = failed to stat file</li>
       <li>
        <code class="literal">3</code> = file too large</li>
       <li>
        <code class="literal">4</code> = out of memory</li>
       <li>
        <code class="literal">5</code> = short read from file</li>
       <li>
        <code class="literal">6</code> = no nameservers listed in the file</li>
      </ul>
     </p>


function_name: EventDnsBase.setOption
name: option
type: string
description:
<p class="para">
      The currently available configuration options are:
      <code class="literal">&quot;ndots&quot;</code>
      ,
      <code class="literal">&quot;timeout&quot;</code>
      ,
      <code class="literal">&quot;max-timeouts&quot;</code>
      ,
      <code class="literal">&quot;max-inflight&quot;</code>
      , and
      <code class="literal">&quot;attempts&quot;</code>
      .
     </p>


function_name: EventHttp.accept
name: socket
type: mixed
description:
<p class="para">
      Socket resource, stream or numeric file descriptor representing a socket
      ready to accept connections.
     </p>


function_name: EventHttp.bind
name: address
type: string
description:
<p class="para">
      A string containing the IP address to
      <code class="literal">listen(2)</code>
      on.
     </p>


function_name: EventHttp.__construct
name: ctx
type: EventSslContext
description:
<p class="para">
      <span class="classname">EventSslContext</span>
      class object. Turns plain HTTP server into HTTPS server. It means that
      if
      <code class="parameter">ctx</code>
      is configured correctly, then the underlying buffer events will be based
      on OpenSSL sockets. Thus, all traffic will pass through the SSL or TLS.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <p class="para">
       This parameter is available only if
       <code class="literal">Event</code>
       is compiled with OpenSSL support and only with
       <code class="literal">Libevent
        2.1.0-alpha</code>
       and higher.
      </p>
     </p></blockquote>


function_name: EventHttp.setAllowedMethods
name: methods
type: int
description:
<p class="para">
      A bit mask of
      <a href="class.eventhttprequest.html#eventhttprequest.constants" class="link">
       <code class="literal">EventHttpRequest::CMD_*</code>
     constants</a>
      .
     </p>


function_name: EventHttp.setCallback
name: cb
type: string
description:
<p class="para">
      The callback
      <span class="type">callable</span>
      that gets invoked on requested
      <code class="parameter">path</code>
      . It should match the following prototype:
     </p>
     <div class="methodsynopsis dc-description">
      <span class="type">void</span> <span class="methodname">callback</span>(<span class="methodparam">
       <span class="type">EventHttpRequest</span>
        <code class="parameter">$req</code>
       <span class="initializer"> = NULL</span>
      </span>, <span class="methodparam">
       <span class="type">mixed</span>
        <code class="parameter">$arg</code>
       <span class="initializer"> = NULL</span>
      </span>)</div>

     <p class="para">
      <dl>
       
        <dt>
         <code class="parameter">req</code>
        </dt>
        <dd>
         <p class="para">
          <span class="classname">EventHttpRequest</span>
          object.
         </p>
        </dd>
       
       
        <dt>
         <code class="parameter">arg</code>
        </dt>
        <dd>
         <p class="para">
          Custom data.
         </p>
        </dd>
       
      </dl>
     </p>


function_name: EventHttp.setDefaultCallback
name: cb
type: string
description:
<p class="para">
      The callback
      <span class="type">callable</span>
      . It should match the following prototype:
     </p>
     <div class="methodsynopsis dc-description"><span class="type">void</span> <span class="methodname">callback</span>(<span class="methodparam">
       <span class="type">EventHttpRequest</span>
        <code class="parameter">$req</code>
       <span class="initializer"> = NULL</span>
      </span>, <span class="methodparam">
       <span class="type">mixed</span>
        <code class="parameter">$arg</code>
       <span class="initializer"> = NULL</span>
      </span>)</div>

     <p class="para">
      <dl>
       
        <dt>
         <code class="parameter">req</code>
        </dt>
        <dd>
         <p class="para">
          <span class="classname">EventHttpRequest</span>
          object.
         </p>
        </dd>
       
       
        <dt>
         <code class="parameter">arg</code>
        </dt>
        <dd>
         <p class="para">
          Custom data.
         </p>
        </dd>
       
      </dl>
     </p>


function_name: EventHttpConnection.__construct
name: dns_base
type: EventDnsBase
description:
<p class="para">
      If
      <code class="parameter">dns_base</code>
      is <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, hostname resolution will block.
     </p>


function_name: EventHttpConnection.__construct
name: ctx
type: EventSslContext
description:
<p class="para">
      <span class="classname">EventSslContext</span>
      class object. Enables OpenSSL.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <p class="para">
       This parameter is available only if
       <code class="literal">Event</code>
       is compiled with OpenSSL support and only with
       <code class="literal">Libevent
        2.1.0-alpha</code>
       and higher.
      </p>
     </p></blockquote>


function_name: EventHttpConnection.makeRequest
name: type
type: int
description:
<p class="para">
      One of
      <a href="class.eventhttprequest.html#eventhttprequest.constants" class="link">
       <code class="literal">EventHttpRequest::CMD_*</code> constants</a>
      .
     </p>


function_name: EventHttpConnection.setCloseCallback
name: callback
type: callable
description:
<p class="para">
      Callback which is called when connection is closed. Should match the
      following prototype:
     </p>
     <div class="methodsynopsis dc-description"><span class="type">void</span> <span class="methodname">callback</span>(<span class="methodparam">
       <span class="type">EventHttpConnection</span>
        <code class="parameter">$conn</code>
       <span class="initializer"> = <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong></span>
      </span>, <span class="methodparam">
       <span class="type">mixed</span>
        <code class="parameter">$arg</code>
       <span class="initializer"> = <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong></span>
      </span>)</div>


function_name: EventHttpConnection.setRetries
name: retries
type: int
description:
<p class="para">
      The retry limit.
      <strong><code>-1</code></strong>
      means infinity.
     </p>


function_name: EventHttpRequest.addHeader
name: type
type: int
description:
<p class="para">
      One of
      <a href="class.eventhttprequest.html#eventhttprequest.constants" class="link">
       <code class="literal">EventHttpRequest::*_HEADER</code> constants</a>
      .
     </p>


function_name: EventHttpRequest.__construct
name: callback
type: callable
description:
<p class="para">
      Gets invoked on requesting path. Should match the following prototype:
     </p>
     <div class="methodsynopsis dc-description"><span class="type">void</span> <span class="methodname">callback</span>(<span class="methodparam">
       <span class="type">EventHttpRequest</span>
        <code class="parameter">$req</code>
       <span class="initializer"> = <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong></span>
      </span>, <span class="methodparam">
       <span class="type">mixed</span>
        <code class="parameter">$arg</code>
       <span class="initializer"> = <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong></span>
      </span>)</div>


function_name: EventHttpRequest.removeHeader
name: type
type: string
description:
<p class="para">
      <code class="parameter">type</code>
      is one of
      <code class="literal">EventHttpRequest::*_HEADER</code>
      constants.
     </p>


function_name: EventHttpRequest.sendError
name: reason
type: string
description:
<p class="para">
      A brief explanation ofthe error. If <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the standard meaning of the
      error code will be used.
     </p>


function_name: EventListener.__construct
name: cb
type: callable
description:
<p class="para">
      A
      <span class="type">callable</span>
      that will be invoked when new connection received.
     </p>


function_name: EventListener.__construct
name: data
type: mixed
description:
<p class="para">
      Custom user data attached to
      <code class="parameter">cb</code>
      .
     </p>


function_name: EventListener.__construct
name: flags
type: int
description:
<p class="para">
      Bit mask of
      <code class="literal">EventListener::OPT_*</code>
      constants. See
      <a href="class.eventlistener.html#eventlistener.constants" class="link">EventListener constants</a>
      .
     </p>


function_name: EventListener.__construct
name: backlog
type: int
description:
<p class="para">
      Controls the maximum number of pending connections that the network
      stack should allow to wait in a not-yet-accepted state at any time; see
      documentation for your system’s
      <code class="literal">listen</code>
      function for more details. If
      <code class="parameter">backlog</code>
      is negative, Libevent tries to pick a good value for the
      <code class="parameter">backlog</code>
      ; if it is zero, Event assumes that
      <code class="literal">listen</code>
      is already called on the socket (<code class="parameter">target</code>).
     </p>


function_name: EventListener.__construct
name: target
type: mixed
description:
<p class="para">
      May be string, socket resource, or a stream associated with a socket. In
      case if
      <code class="parameter">target</code>
      is a string, the string will be parsed as network address. It will be
      interpreted as a UNIX domain socket path, if prefixed with
      <code class="literal">&#039;unix:&#039;</code>
      , e.g.
      <code class="literal">&#039;unix:/tmp/my.sock&#039;</code>
      .
     </p>


function_name: EventListener.getSocketName
name: address
type: string
description:
<p class="para">
      Output parameter. IP-address depending on the socket address family.
     </p>


function_name: EventListener.setCallback
name: cb
type: callable
description:
<p class="para">
      The new callback for new connections. Ignored if <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
     </p>
     <p class="para">
      Should match the following prototype:
     </p>
     <div class="methodsynopsis dc-description">
      <span class="type">void</span> <span class="methodname">callback</span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam">
       <span class="type">EventListener</span>
        <code class="parameter">$listener</code>
       <span class="initializer"> = <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong></span>
      </span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam">
       <span class="type">mixed</span>
        <code class="parameter">$fd</code>
       <span class="initializer"> = <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong></span>
      </span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam">
       <span class="type">array</span>
        <code class="parameter">$address</code>
       <span class="initializer"> = <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong></span>
      </span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam">
       <span class="type">mixed</span>
        <code class="parameter">$arg</code>
       <span class="initializer"> = <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong></span>
      </span><br>)</div>

     <p class="para">
      <dl>
       
        <dt>
         <code class="parameter">listener</code>
        </dt>
        <dd>
         <p class="para">
          The
          <span class="classname">EventListener</span>
          object.
         </p>
        </dd>
       
       
        <dt>
         <code class="parameter">fd</code>
        </dt>
        <dd>
         <p class="para">
          The file descriptor or a resource associated with the listener.
         </p>
        </dd>
       
       
        <dt>
         <code class="parameter">address</code>
        </dt>
        <dd>
         <p class="para">
          Array of two elements: IP address and the
          <em>server</em>
          port.
         </p>
        </dd>
       
       
        <dt>
         <code class="parameter">arg</code>
        </dt>
        <dd>
         <p class="para">
          User custom data attached to the callback.
         </p>
        </dd>
       
      </dl>
     </p>


function_name: EventListener.setCallback
name: arg
type: mixed
description:
<p class="para">
      Custom user data attached to the callback. Ignored if <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
     </p>


function_name: EventListener.setErrorCallback
name: cb
type: string
description:
<p class="para">
      The error callback. Should match the following prototype:
     </p>
     <div class="methodsynopsis dc-description"><span class="type">void</span> <span class="methodname">callback</span>(<span class="methodparam">
       <span class="type">EventListener</span>
        <code class="parameter">$listener</code>
       <span class="initializer"> = <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong></span>
      </span>, <span class="methodparam">
       <span class="type">mixed</span>
        <code class="parameter">$data</code>
       <span class="initializer"> = <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong></span>
      </span>)</div>

     <p class="para">
      <dl>
       
        <dt>
         <code class="parameter">listener</code>
        </dt>
        <dd>
         <p class="para">
          The
          <span class="classname">EventListener</span>
          object.
         </p>
        </dd>
       
       
        <dt>
         <code class="parameter">data</code>
        </dt>
        <dd>
         <p class="para">
          User custom data attached to the callback.
         </p>
        </dd>
       
      </dl>
     </p>


function_name: EventSslContext.__construct
name: method
type: string
description:
<p class="para">
      One of
      <a href="class.eventsslcontext.html#eventsslcontext.constants" class="link">
       <code class="literal">EventSslContext::*_METHOD</code> constants</a>
      .
     </p>


function_name: EventSslContext.__construct
name: options
type: string
description:
<p class="para">
      Associative array of SSL context options One of
      <a href="class.eventsslcontext.html#eventsslcontext.constants" class="link">
       <code class="literal">EventSslContext::OPT_*</code> constants</a>
      .
     </p>


function_name: EventUtil.getSocketName
name: address
type: string
description:
<p class="para">
      Output parameter. IP-address, or the UNIX domain socket path depending
      on the socket address family.
     </p>


function_name: EventUtil.getSocketName
name: port
type: mixed
description:
<p class="para">
      Output parameter. The port the socket is bound to. Has no meaning for
      UNIX domain sockets.
     </p>


function_name: EventUtil.setSocketOption
name: socket
type: mixed
description:
<p class="para">
      Socket resource, stream, or numeric file descriptor associated with the
      socket.
     </p>


function_name: EventUtil.setSocketOption
name: level
type: int
description:
<p class="para">
      One of
      <code class="literal">EventUtil::SOL_*</code>
      constants. Specifies the protocol level at which the option resides. For
      example, to retrieve options at the socket level, a
      <code class="parameter">level</code>
      parameter of
      <strong><code><a href="class.eventutil.html#eventutil.constants.sol-socket">EventUtil::SOL_SOCKET</a></code></strong>
      would be used. Other levels, such as TCP, can be used by specifying the
      protocol number of that level. Protocol numbers can be found by using
      the
      <span class="function">getprotobyname</span>
      function. See
      <a href="class.eventutil.html#eventutil.constants" class="link">EventUtil constants</a>
      .
     </p>


function_name: EventUtil.setSocketOption
name: optname
type: int
description:
<p class="para">
      Option name(type). Has the same meaning as corresponding parameter of
      <span class="function">socket_get_option</span>
      function. See
      <a href="class.eventutil.html#eventutil.constants" class="link">EventUtil constants</a>
      .
     </p>


function_name: EventUtil.setSocketOption
name: optval
type: mixed
description:
<p class="para">
      Accepts the same values as
      <code class="parameter">optval</code>
      parameter of the
      <span class="function">socket_get_option</span>
      function.
     </p>


function_name: ftp_alloc
name: response
type: string
description:
<p class="para">
       A textual representation of the servers response will be returned by 
       reference in <code class="parameter">response</code> if a variable is provided.
      </p>


function_name: ftp_connect
name: hostname
type: string
description:
<p class="para">
       The FTP server address. This parameter shouldn&#039;t have any trailing 
       slashes and shouldn&#039;t be prefixed with <code class="literal">ftp://</code>.
      </p>


function_name: ftp_connect
name: port
type: int
initializer: 21
description:
<p class="para">
       This parameter specifies an alternate port to connect to. If it is
       omitted or set to zero, then the default FTP port, 21, will be used.
      </p>


function_name: ftp_connect
name: timeout
type: int
initializer: 90
description:
<p class="para">
       This parameter specifies the timeout in seconds for all subsequent network operations.
       If omitted, the default value is 90 seconds. The timeout can be changed and
       queried at any time with <span class="function">ftp_set_option</span> and
       <span class="function">ftp_get_option</span>.
      </p>


function_name: ftp_fget
name: mode
type: int
description:
<p class="para">
       The transfer mode. Must be either <strong><code><a href="ftp.constants.html#constant.ftp-ascii">FTP_ASCII</a></code></strong> or
       <strong><code><a href="ftp.constants.html#constant.ftp-binary">FTP_BINARY</a></code></strong>.
      </p>


function_name: ftp_fput
name: stream
type: resource
description:
<p class="para">
       An open file pointer on the local file. Reading stops at end of file.
      </p>


function_name: ftp_get_option
name: option
type: int
description:
<p class="para">
       Currently, the following options are supported:
       <table class="doctable table">
        <caption><strong>Supported runtime FTP options</strong></caption>
        
         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="ftp.constants.html#constant.ftp-timeout-sec">FTP_TIMEOUT_SEC</a></code></strong></td>
           <td>
            Returns the current timeout used for network related operations.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="ftp.constants.html#constant.ftp-autoseek">FTP_AUTOSEEK</a></code></strong></td>
           <td>
            Returns <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> if this option is on, <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> otherwise. 
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: ftp_get
name: local_filename
type: string
description:
<p class="para">
       The local file path (will be overwritten if the file already exists).
      </p>


function_name: ftp_nlist
name: directory
type: string
description:
<p class="para">
       The directory to be listed. This parameter can also include arguments, eg.
       <code class="literal">ftp_nlist($ftp, &quot;-la /your/dir&quot;);</code>.
       Note that this parameter isn&#039;t escaped so there may be some issues with
       filenames containing spaces and other characters. 
      </p>


function_name: ftp_pasv
name: enable
type: bool
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the passive mode is turned on, else it&#039;s turned off.
      </p>


function_name: ftp_rawlist
name: directory
type: string
description:
<p class="para">
       The directory path. May include arguments for the <strong class="command">LIST</strong>
       command.
      </p>


function_name: ftp_rawlist
name: recursive
type: bool
description:
<p class="para">
       If set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the issued command will be <strong class="command">LIST -R</strong>.
      </p>


function_name: ftp_rmdir
name: directory
type: string
description:
<p class="para">
       The directory to delete. This must be either an absolute or relative
       path to an empty directory.
      </p>


function_name: ftp_set_option
name: option
type: int
description:
<p class="para">
       Currently, the following options are supported:
       <table class="doctable table">
        <caption><strong>Supported runtime FTP options</strong></caption>
        
         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="ftp.constants.html#constant.ftp-timeout-sec">FTP_TIMEOUT_SEC</a></code></strong></td>
           <td>
            Changes the timeout in seconds used for all network related 
            functions. <code class="parameter">value</code> must be an integer that
            is greater than 0. The default timeout is 90 seconds.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="ftp.constants.html#constant.ftp-autoseek">FTP_AUTOSEEK</a></code></strong></td>
           <td>
            When enabled, GET or PUT requests with a 
            <code class="parameter">resumepos</code> or <code class="parameter">startpos</code>
            parameter will first seek to the requested position within the file.
            This is enabled by default.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="ftp.constants.html#constant.ftp-usepasvaddress">FTP_USEPASVADDRESS</a></code></strong></td>
           <td>
            When disabled, PHP will ignore the IP address returned by the FTP server in response to the PASV command and instead use the IP address that was supplied in the ftp_connect().
            <code class="parameter">value</code> must be a boolean.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


