# params

function_name: MongoDB\Driver\Manager.createClientEncryption
name: options
type: array
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         
         <tr>
          <td>keyVaultClient</td>
          <td><span class="classname">MongoDB\Driver\Manager</span></td>
          <td>The Manager used to route data key queries to a separate MongoDB cluster. By default, the current Manager and cluster is used.</td>
         </tr>


         
         <tr>
          <td>keyVaultNamespace</td>
          <td><span class="type">string</span></td>
          <td>A fully qualified namespace (e.g. <code class="literal">&quot;databaseName.collectionName&quot;</code>) denoting the collection that contains all data keys used for encryption and decryption. This option is required.</td>
         </tr>


         
         <tr>
          <td>kmsProviders</td>
          <td><span class="type">array</span></td>
          <td>
           <p class="para">
            A document containing the configuration for one or more KMS providers, which are used to encrypt data keys. Supported providers include <code class="literal">&quot;aws&quot;</code>, <code class="literal">&quot;azure&quot;</code>, <code class="literal">&quot;gcp&quot;</code>, <code class="literal">&quot;kmip&quot;</code>, and <code class="literal">&quot;local&quot;</code> and at least one must be specified.
           </p>
           <p class="para">
            If an empty document is specified for <code class="literal">&quot;aws&quot;</code>,
            <code class="literal">&quot;azure&quot;</code>, or <code class="literal">&quot;gcp&quot;</code>, the driver
            will attempt to configure the provider using
            <a href="https://github.com/mongodb/specifications/blob/master/source/client-side-encryption/client-side-encryption.rst#automatic-credentials" class="link external">&raquo;&nbsp;Automatic Credentials</a>.
           </p>
           <p class="para">
            The format for <code class="literal">&quot;aws&quot;</code> is as follows:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">aws: {
    accessKeyId: &lt;string&gt;,
    secretAccessKey: &lt;string&gt;,
    sessionToken: &lt;optional string&gt;
}</pre>
</div>
           </div>

           <p class="para">
            The format for <code class="literal">&quot;azure&quot;</code> is as follows:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">azure: {
    tenantId: &lt;string&gt;,
    clientId: &lt;string&gt;,
    clientSecret: &lt;string&gt;,
    identityPlatformEndpoint: &lt;optional string&gt; // Defaults to &quot;login.microsoftonline.com&quot;
}</pre>
</div>
           </div>

           <p class="para">
            The format for <code class="literal">&quot;gcp&quot;</code> is as follows:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">gcp: {
    email: &lt;string&gt;,
    privateKey: &lt;base64 string&gt;|&lt;MongoDB\BSON\Binary&gt;,
    endpoint: &lt;optional string&gt; // Defaults to &quot;oauth2.googleapis.com&quot;
}</pre>
</div>
           </div>

           <p class="para">
            The format for <code class="literal">&quot;kmip&quot;</code> is as follows:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">kmip: {
    endpoint: &lt;string&gt;
}</pre>
</div>
           </div>

           <p class="para">
            The format for <code class="literal">&quot;local&quot;</code> is as follows:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">local: {
    // 96-byte master key used to encrypt/decrypt data keys
    key: &lt;base64 string&gt;|&lt;MongoDB\BSON\Binary&gt;
}</pre>
</div>
           </div>

          </td>
         </tr>


         
         <tr>
          <td>tlsOptions</td>
          <td><span class="type">array</span></td>
          <td>
           <p class="para">
            A document containing the TLS configuration for one or more KMS providers. Supported providers include <code class="literal">&quot;aws&quot;</code>, <code class="literal">&quot;azure&quot;</code>, <code class="literal">&quot;gcp&quot;</code>, and <code class="literal">&quot;kmip&quot;</code>. All providers support the following options:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">&lt;provider&gt;: {
    tlsCaFile: &lt;optional string&gt;,
    tlsCertificateKeyFile: &lt;optional string&gt;,
    tlsCertificateKeyFilePassword: &lt;optional string&gt;,
    tlsDisableOCSPEndpointCheck: &lt;optional bool&gt;
}</pre>
</div>
           </div>

          </td>
         </tr>


        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\Manager.executeBulkWrite
name: namespace
type: string
description:
<p class="para">
      A fully qualified namespace (e.g. <code class="literal">&quot;databaseName.collectionName&quot;</code>).
     </p>


function_name: MongoDB\Driver\Manager.executeBulkWrite
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         
         <tr>
          <td>session</td>
          <td><span class="classname">MongoDB\Driver\Session</span></td>
          <td>
           <p class="para">
            A session to associate with the operation.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>writeConcern</td>
          <td><span class="classname">MongoDB\Driver\WriteConcern</span></td>
          <td>
           <p class="para">
            A write concern to apply to the operation.
           </p>
          </td>
         </tr>


        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\Manager.executeCommand
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         
         <tr>
          <td>readConcern</td>
          <td><span class="classname">MongoDB\Driver\ReadConcern</span></td>
          <td>
           <p class="para">
            A read concern to apply to the operation.
           </p>
           <p class="para">
            This option is available in MongoDB 3.2+ and will result in an
            exception at execution time if specified for an older server
            version.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>readPreference</td>
          <td><span class="classname">MongoDB\Driver\ReadPreference</span></td>
          <td>
           <p class="para">
            A read preference to use for selecting a server for the operation.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>session</td>
          <td><span class="classname">MongoDB\Driver\Session</span></td>
          <td>
           <p class="para">
            A session to associate with the operation.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>writeConcern</td>
          <td><span class="classname">MongoDB\Driver\WriteConcern</span></td>
          <td>
           <p class="para">
            A write concern to apply to the operation.
           </p>
          </td>
         </tr>


        </tbody>
       
      </table>

     </p>
     
     <div class="warning"><strong class="warning">Warning</strong>
      <p class="para">
       If you are using a <code class="literal">&quot;session&quot;</code> which has a transaction
       in progress, you cannot specify a <code class="literal">&quot;readConcern&quot;</code> or
       <code class="literal">&quot;writeConcern&quot;</code> option. This will result in an
       <span class="classname">MongoDB\Driver\Exception\InvalidArgumentException</span>
       being thrown. Instead, you should set these two options when you create
       the transaction with
        <span class="methodname">MongoDB\Driver\Session::startTransaction</span>.
      </p>
     </div>


function_name: MongoDB\Driver\Manager.executeQuery
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         
         <tr>
          <td>readPreference</td>
          <td><span class="classname">MongoDB\Driver\ReadPreference</span></td>
          <td>
           <p class="para">
            A read preference to use for selecting a server for the operation.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>session</td>
          <td><span class="classname">MongoDB\Driver\Session</span></td>
          <td>
           <p class="para">
            A session to associate with the operation.
           </p>
          </td>
         </tr>


        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\Manager.executeReadCommand
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         
         <tr>
          <td>readConcern</td>
          <td><span class="classname">MongoDB\Driver\ReadConcern</span></td>
          <td>
           <p class="para">
            A read concern to apply to the operation.
           </p>
           <p class="para">
            This option is available in MongoDB 3.2+ and will result in an
            exception at execution time if specified for an older server
            version.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>readPreference</td>
          <td><span class="classname">MongoDB\Driver\ReadPreference</span></td>
          <td>
           <p class="para">
            A read preference to use for selecting a server for the operation.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>session</td>
          <td><span class="classname">MongoDB\Driver\Session</span></td>
          <td>
           <p class="para">
            A session to associate with the operation.
           </p>
          </td>
         </tr>


        </tbody>
       
      </table>

     </p>
     
     <div class="warning"><strong class="warning">Warning</strong>
      <p class="para">
       If you are using a <code class="literal">&quot;session&quot;</code> which has a transaction
       in progress, you cannot specify a <code class="literal">&quot;readConcern&quot;</code> or
       <code class="literal">&quot;writeConcern&quot;</code> option. This will result in an
       <span class="classname">MongoDB\Driver\Exception\InvalidArgumentException</span>
       being thrown. Instead, you should set these two options when you create
       the transaction with
        <span class="methodname">MongoDB\Driver\Session::startTransaction</span>.
      </p>
     </div>


function_name: MongoDB\Driver\Manager.executeReadWriteCommand
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         
         <tr>
          <td>readConcern</td>
          <td><span class="classname">MongoDB\Driver\ReadConcern</span></td>
          <td>
           <p class="para">
            A read concern to apply to the operation.
           </p>
           <p class="para">
            This option is available in MongoDB 3.2+ and will result in an
            exception at execution time if specified for an older server
            version.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>session</td>
          <td><span class="classname">MongoDB\Driver\Session</span></td>
          <td>
           <p class="para">
            A session to associate with the operation.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>writeConcern</td>
          <td><span class="classname">MongoDB\Driver\WriteConcern</span></td>
          <td>
           <p class="para">
            A write concern to apply to the operation.
           </p>
          </td>
         </tr>


        </tbody>
       
      </table>

     </p>
     
     <div class="warning"><strong class="warning">Warning</strong>
      <p class="para">
       If you are using a <code class="literal">&quot;session&quot;</code> which has a transaction
       in progress, you cannot specify a <code class="literal">&quot;readConcern&quot;</code> or
       <code class="literal">&quot;writeConcern&quot;</code> option. This will result in an
       <span class="classname">MongoDB\Driver\Exception\InvalidArgumentException</span>
       being thrown. Instead, you should set these two options when you create
       the transaction with
        <span class="methodname">MongoDB\Driver\Session::startTransaction</span>.
      </p>
     </div>


function_name: MongoDB\Driver\Manager.executeWriteCommand
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         
         <tr>
          <td>session</td>
          <td><span class="classname">MongoDB\Driver\Session</span></td>
          <td>
           <p class="para">
            A session to associate with the operation.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>writeConcern</td>
          <td><span class="classname">MongoDB\Driver\WriteConcern</span></td>
          <td>
           <p class="para">
            A write concern to apply to the operation.
           </p>
          </td>
         </tr>


        </tbody>
       
      </table>

     </p>
     
     <div class="warning"><strong class="warning">Warning</strong>
      <p class="para">
       If you are using a <code class="literal">&quot;session&quot;</code> which has a transaction
       in progress, you cannot specify a <code class="literal">&quot;readConcern&quot;</code> or
       <code class="literal">&quot;writeConcern&quot;</code> option. This will result in an
       <span class="classname">MongoDB\Driver\Exception\InvalidArgumentException</span>
       being thrown. Instead, you should set these two options when you create
       the transaction with
        <span class="methodname">MongoDB\Driver\Session::startTransaction</span>.
      </p>
     </div>


function_name: MongoDB\Driver\Manager.selectServer
name: readPreference
type: null
description:
<p class="para">
      The read preference to use for selecting a server. If <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> or omitted,
      the primary server will be selected by default.
     </p>


function_name: MongoDB\Driver\Manager.startSession
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
          <th>Default</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>causalConsistency</td>
          <td><span class="type">bool</span></td>
          <td>
           <p class="para">
            Configure causal consistency in a session. If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, each operation
            in the session will be causally ordered after the previous read or
            write operation. Set to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> to disable causal consistency.
           </p>
           <p class="para">
            See
            <a href="https://www.mongodb.com/docs/manual/core/read-isolation-consistency-recency/#causal-consistency" class="link external">&raquo;&nbsp;Casual Consistency</a>
            in the MongoDB manual for more information.
           </p>
          </td>
          <td><strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong></td>
         </tr>

         <tr>
          <td>defaultTransactionOptions</td>
          <td><span class="type">array</span></td>
          <td>
           <p class="para">
            Default options to apply to newly created transactions. These
            options are used unless they are overridden when a transaction is
            started with different value for each option.
           </p>
           <p class="para">
            <table class="doctable table">
             <caption><strong>options</strong></caption>
             
              <thead>
               <tr>
                <th>Option</th>
                <th>Type</th>
                <th>Description</th>
               </tr>

              </thead>

              <tbody class="tbody">
               
         <tr>
          <td>maxCommitTimeMS</td>
          <td>integer</td>
          <td>
           <p class="para">
            The maximum amount of time in milliseconds to allow a single
            <code class="literal">commitTransaction</code> command to run.
           </p>
           <p class="para">
            If specified, <code class="literal">maxCommitTimeMS</code> must be a signed
            32-bit integer greater than or equal to zero.
           </p>
          </td>
         </tr>


               
         <tr>
          <td>readConcern</td>
          <td><span class="classname">MongoDB\Driver\ReadConcern</span></td>
          <td>
           <p class="para">
            A read concern to apply to the operation.
           </p>
           <p class="para">
            This option is available in MongoDB 3.2+ and will result in an
            exception at execution time if specified for an older server
            version.
           </p>
          </td>
         </tr>


               
         <tr>
          <td>readPreference</td>
          <td><span class="classname">MongoDB\Driver\ReadPreference</span></td>
          <td>
           <p class="para">
            A read preference to use for selecting a server for the operation.
           </p>
          </td>
         </tr>


               
         <tr>
          <td>writeConcern</td>
          <td><span class="classname">MongoDB\Driver\WriteConcern</span></td>
          <td>
           <p class="para">
            A write concern to apply to the operation.
           </p>
          </td>
         </tr>


              </tbody>
             
            </table>

           </p>
           <p class="para">
            This option is available in MongoDB 4.0+.
           </p>
          </td>
          <td><code class="literal">[]</code></td>
         </tr>

         <tr>
          <td>snapshot</td>
          <td><span class="type">bool</span></td>
          <td>
           <p class="para">
            Configure snapshot reads in a session. If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, a timestamp will
            be obtained from the first supported read operation in the session
            (i.e. <code class="literal">find</code>, <code class="literal">aggregate</code>, or
            unsharded <code class="literal">distinct</code>). Subsequent read operations
            within the session will then utilize a <code class="literal">&quot;snapshot&quot;</code>
            read concern level to read majority-committed data from that
            timestamp. Set to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> to disable snapshot reads.
           </p>
           <p class="para">
            Snapshot reads require MongoDB 5.0+ and cannot be used with causal
            consistency, transactions, or write operations. If
            <code class="literal">&quot;snapshot&quot;</code> is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>,
            <code class="literal">&quot;causalConsistency&quot;</code> will default to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>.
           </p>
           <p class="para">
            See
            <a href="https://www.mongodb.com/docs/manual/reference/read-concern-snapshot/#read-concern-and-atclustertime" class="link external">&raquo;&nbsp;Read Concern &quot;snapshot&quot;</a>
            in the MongoDB manual for more information.
           </p>
          </td>
          <td><strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong></td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\Command.__construct
name: commandOptions
type: null
description:
<blockquote class="note"><p><strong class="note">Note</strong>: 
      <span class="simpara">
       Do not use this parameter to specify options described in the command&#039;s
       reference in the MongoDB manual. This parameter should only be used for
       the options explicitly listed below.
      </span>
     </p></blockquote>
     <p class="para">
      <table class="doctable table">
       <caption><strong>commandOptions</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>maxAwaitTimeMS</td>
          <td><span class="type">int</span></td>
          <td>
           <p class="para">
            Positive integer denoting the time limit in milliseconds for the
            server to block a getMore operation if no data is available. This
            option should only be used in conjunction with commands that return
            a tailable cursor (e.g. <a href="https://www.mongodb.com/docs/manual/changeStreams/" class="link external">&raquo;&nbsp;Change
            Streams</a>).
           </p>
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\Query.__construct
name: filter
type: object
description:
<p class="para">
      The <a href="https://www.mongodb.com/docs/manual/tutorial/query-documents/" class="link external">&raquo;&nbsp;query predicate</a>.
      An empty predicate will match all documents in the collection.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <span class="simpara">
       When evaluating query criteria, MongoDB compares types and values according to its own <a href="https://www.mongodb.com/docs/manual/reference/bson-type-comparison-order/" class="link external">&raquo;&nbsp;comparison rules for BSON types</a>, which differs from PHP&#039;s <a href="types.comparisons.html" class="link">comparison</a> and <a href="language.types.type-juggling.html" class="link">type juggling</a> rules. When matching a special BSON type the query criteria should use the respective <a href="book.bson.html" class="link">BSON class</a> (e.g. use <span class="classname">MongoDB\BSON\ObjectId</span> to match an <a href="https://www.mongodb.com/docs/manual/reference/bson-types/#objectid" class="link external">&raquo;&nbsp;ObjectId</a>).
      </span>
     </p></blockquote>


function_name: MongoDB\Driver\Query.__construct
name: queryOptions
type: null
description:
<p class="para">
      <table id="mongodb-driver-query.construct-queryOptions" class="doctable table">
       <caption><strong>queryOptions</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>allowDiskUse</td>
          <td><span class="type">bool</span></td>
          <td>
           <p class="para">
            Allows MongoDB to use temporary disk files to store data exceeding
            the 100 megabyte system memory limit while processing a blocking
            sort operation.
           </p>
          </td>
         </tr>

         <tr>
          <td>allowPartialResults</td>
          <td><span class="type">bool</span></td>
          <td>
           <p class="para">
            For queries against a sharded collection, returns partial results
            from the mongos if some shards are unavailable instead of throwing
            an error.
           </p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;partial&quot;</code> option if
            not specified.
           </p>
          </td>
         </tr>

         <tr>
          <td>awaitData</td>
          <td><span class="type">bool</span></td>
          <td>
           Use in conjunction with the <code class="literal">&quot;tailable&quot;</code> option to
           block a getMore operation on the cursor temporarily if at the end of
           data rather than returning no data. After a timeout period, the query
           returns as normal.
          </td>
         </tr>

         <tr>
          <td>batchSize</td>
          <td><span class="type">int</span></td>
          <td>
           <p class="para">
            The number of documents to return in the first batch. Defaults to
            101. A batch size of 0 means that the cursor will be established,
            but no documents will be returned in the first batch.
           </p>
           <p class="para">
            In versions of MongoDB before 3.2, where queries use the legacy wire
            protocol OP_QUERY, a batch size of 1 will close the cursor
            irrespective of the number of matched documents.
           </p>
          </td>
         </tr>

         
         <tr>
          <td>collation</td>
          <td><span class="type"><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">
            <a href="https://www.mongodb.com/docs/upcoming/reference/collation/" class="link external">&raquo;&nbsp;Collation</a> allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the <code class="literal">&quot;locale&quot;</code> field is mandatory; all other collation fields are optional. For descriptions of the fields, see <a href="https://www.mongodb.com/docs/upcoming/reference/collation/#collation-document" class="link external">&raquo;&nbsp;Collation Document</a>.
           </p>
           <p class="para">
            If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons.
           </p>
           <p class="para">
            This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.
           </p>
          </td>
         </tr>


         <tr>
          <td>comment</td>
          <td><span class="type">mixed</span></td>
          <td>
           <p class="para">
            An arbitrary comment to help trace the operation through the
            database profiler, currentOp output, and logs.
           </p>
           <p class="para">
            The comment can be any valid BSON type for MongoDB 4.4+. Earlier
            server versions only support string values.
           </p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;$comment&quot;</code> modifier
            if not specified.
           </p>
          </td>
         </tr>

         <tr>
          <td>exhaust</td>
          <td><span class="type">bool</span></td>
          <td>
           <p class="para">
            Stream the data down full blast in multiple &quot;more&quot; packages, on the
            assumption that the client will fully read all data queried. Faster
            when you are pulling a lot of data and know you want to pull it all
            down. Note: the client is not allowed to not read all the data
            unless it closes the connection.
           </p>
           <p class="para">
            This option is not supported by the find command in MongoDB 3.2+ and
            will force the driver to use the legacy wire protocol version (i.e.
            OP_QUERY).
           </p>
          </td>
         </tr>

         <tr>
          <td>explain</td>
          <td><span class="type">bool</span></td>
          <td>
           <p class="para">
            If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the returned <span class="classname">MongoDB\Driver\Cursor</span>
            will contain a single document that describes the process and
            indexes used to return the query.
           </p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;$explain&quot;</code> modifier
            if not specified.
           </p>
           <p class="para">
            This option is not supported by the find command in MongoDB 3.2+ and
            will only be respected when using the legacy wire protocol version
            (i.e. OP_QUERY). The
            <a href="https://www.mongodb.com/docs/manual/reference/command/explain/" class="link external">&raquo;&nbsp;explain</a>
            command should be used on MongoDB 3.0+.
           </p>
          </td>
         </tr>

         <tr>
          <td>hint</td>
          <td><span class="type"><span class="type">string</span><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">
            Index specification. Specify either the index name as a string or
            the index key pattern. If specified, then the query system will only
            consider plans using the hinted index.
           </p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;hint&quot;</code> option if not
            specified.
           </p>
          </td>
         </tr>

         
         <tr>
          <td>let</td>
          <td><span class="type"><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">
            Map of parameter names and values. Values must be constant or closed expressions that do not reference document fields. Parameters can then be accessed as variables in an aggregate expression context (e.g. <code class="literal">$$var</code>).
           </p>
           <p class="para">
            This option is available in MongoDB 5.0+ and will result in an exception at execution time if specified for an older server version.
           </p>
          </td>
         </tr>


         <tr>
          <td>limit</td>
          <td><span class="type">int</span></td>
          <td>
           <p class="para">
            The maximum number of documents to return. If unspecified, then
            defaults to no limit. A limit of 0 is equivalent to setting no
            limit.
           </p>
           <p class="para">
            A negative limit is will be interpreted as a positive limit with the
            <code class="literal">&quot;singleBatch&quot;</code> option set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>. This behavior
            is supported for backwards compatibility, but should be considered
            deprecated.
           </p>
          </td>
         </tr>

         <tr>
          <td>max</td>
          <td><span class="type"><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">
            The <em>exclusive</em> upper bound for a specific index.
           </p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;$max&quot;</code> modifier if
            not specified.
           </p>
          </td>
         </tr>

         <tr>
          <td>maxAwaitTimeMS</td>
          <td><span class="type">int</span></td>
          <td>
           <p class="para">
            Positive integer denoting the time limit in milliseconds for the
            server to block a getMore operation if no data is available. This
            option should only be used in conjunction with the
            <code class="literal">&quot;tailable&quot;</code> and <code class="literal">&quot;awaitData&quot;</code>
            options.
           </p>
          </td>
         </tr>

         <tr>
          <td>maxScan</td>
          <td><span class="type">int</span></td>
          <td>
           <div class="warning"><strong class="warning">Warning</strong>
            <p class="simpara">
             This option is deprecated and should not be used.
            </p>
           </div>
           <p class="para">
            Positive integer denoting the maximum number of documents or index
            keys to scan when executing the query.
           </p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;$maxScan&quot;</code> modifier
            if not specified.
           </p>
          </td>
         </tr>

         <tr>
          <td>maxTimeMS</td>
          <td><span class="type">int</span></td>
          <td>
           <p class="para">
            The cumulative time limit in milliseconds for processing operations
            on the cursor. MongoDB aborts the operation at the earliest
            following interrupt point.
           </p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;$maxTimeMS&quot;</code>
            modifier if not specified.
           </p>
          </td>
         </tr>

         <tr>
          <td>min</td>
          <td><span class="type"><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">
            The <em>inclusive</em> lower bound for a specific index.
           </p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;$min&quot;</code> modifier if
            not specified.
           </p>
          </td>
         </tr>

         <tr>
          <td>modifiers</td>
          <td><span class="type">array</span></td>
          <td>
           <a href="https://www.mongodb.com/docs/manual/reference/operator/query-modifier/" class="link external">&raquo;&nbsp;Meta operators</a>
           modifying the output or behavior of a query. Use of these operators
           is deprecated in favor of named options.
          </td>
         </tr>

         <tr>
          <td>noCursorTimeout</td>
          <td><span class="type">bool</span></td>
          <td>
           Prevents the server from timing out idle cursors after an inactivity
           period (10 minutes).
          </td>
         </tr>

         <tr>
          <td>oplogReplay</td>
          <td><span class="type">bool</span></td>
          <td>
           <p class="para">
            Internal use for replica sets. To use oplogReplay, you must include
            the following condition in the filter:
           </p>
           <p class="para">
            <div class="example-contents">
<div class="textcode"><pre class="textcode">[ &#039;ts&#039; =&gt; [ &#039;$gte&#039; =&gt; &lt;timestamp&gt; ] ]</pre>
</div>
            </div>

           </p>
           <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">This option is deprecated as of the 1.8.0 release.</span></p></blockquote>
          </td>
         </tr>

         <tr>
          <td>projection</td>
          <td><span class="type"><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">
            The <a href="https://www.mongodb.com/docs/manual/tutorial/project-fields-from-query-results/" class="link external">&raquo;&nbsp;projection specification</a>
            to determine which fields to include in the returned documents.
           </p>
           <p class="para">
            If you are using the <a href="mongodb.persistence.deserialization.html" class="link">ODM
            functionality</a> to deserialise documents as their original
            PHP class, make sure that you include the
            <span class="property">__pclass</span> field in the projection. This is
            required for the deserialization to work and without it, the
            driver will return (by default) a <span class="classname">stdClass</span>
            object instead.
           </p>
          </td>
         </tr>

         <tr>
          <td>readConcern</td>
          <td><span class="classname">MongoDB\Driver\ReadConcern</span></td>
          <td>
           <p class="para">
            A read concern to apply to the operation. By default, the read
            concern from the
            <a href="mongodb-driver-manager.construct.html#mongodb-driver-manager.construct-uri" class="link">MongoDB
            Connection URI</a> will be used.
           </p>
           <p class="para">
            This option is available in MongoDB 3.2+ and will result in an
            exception at execution time if specified for an older server
            version.
           </p>
          </td>
         </tr>

         <tr>
          <td>returnKey</td>
          <td><span class="type">bool</span></td>
          <td>
           <p class="para">
            If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, returns only the index keys in the resulting documents.
            Default value is <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>. If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> and the find command does not
            use an index, the returned documents will be empty.
           </p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;$returnKey&quot;</code>
            modifier if not specified.
           </p>
          </td>
         </tr>

         <tr>
          <td>showRecordId</td>
          <td><span class="type">bool</span></td>
          <td>
           <p class="para">
            Determines whether to return the record identifier for each
            document. If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, adds a top-level <code class="literal">&quot;$recordId&quot;</code>
            field to the returned documents.
           </p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;$showDiskLoc&quot;</code>
            modifier if not specified.
           </p>
          </td>
         </tr>

         <tr>
          <td>singleBatch</td>
          <td><span class="type">bool</span></td>
          <td>
           Determines whether to close the cursor after the first batch.
           Defaults to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>.
          </td>
         </tr>

         <tr>
          <td>skip</td>
          <td><span class="type">int</span></td>
          <td>Number of documents to skip. Defaults to 0.</td>
         </tr>

         <tr>
          <td>snapshot</td>
          <td><span class="type">bool</span></td>
          <td>
           <div class="warning"><strong class="warning">Warning</strong>
            <p class="simpara">
             This option is deprecated and should not be used.
            </p>
           </div>
           <p class="para">
            Prevents the cursor from returning a document more than once because
            of an intervening write operation.
           </p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;$snapshot&quot;</code> modifier
            if not specified.
           </p>
          </td>
         </tr>

         <tr>
          <td>sort</td>
          <td><span class="type"><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">The sort specification for the ordering of the results.</p>
           <p class="para">
            Falls back to the deprecated <code class="literal">&quot;$orderby&quot;</code> modifier
            if not specified.
           </p>
          </td>
         </tr>

         <tr>
          <td>tailable</td>
          <td><span class="type">bool</span></td>
          <td>Returns a tailable cursor for a capped collection.</td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\BulkWrite.__construct
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
          <th>Default</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>bypassDocumentValidation</td>
          <td><span class="type">bool</span></td>
          <td>
           <p class="para">
            If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, allows insert and update operations to circumvent
            document level validation.
           </p>
           <p class="para">
            This option is available in MongoDB 3.2+ and is ignored for older
            server versions, which do not support document level validation.
           </p>
          </td>
          <td><strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong></td>
         </tr>

         <tr>
          <td>comment</td>
          <td><span class="type">mixed</span></td>
          <td>
           <p class="para">
            An arbitrary comment to help trace the operation through the
            database profiler, currentOp output, and logs.
           </p>
           <p class="para">
            This option is available in MongoDB 4.4+ and will result in an
            exception at execution time if specified for an older server
            version.
           </p>
          </td>
         </tr>

         
         <tr>
          <td>let</td>
          <td><span class="type"><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">
            Map of parameter names and values. Values must be constant or closed expressions that do not reference document fields. Parameters can then be accessed as variables in an aggregate expression context (e.g. <code class="literal">$$var</code>).
           </p>
           <p class="para">
            This option is available in MongoDB 5.0+ and will result in an exception at execution time if specified for an older server version.
           </p>
          </td>
         </tr>


         <tr>
          <td>ordered</td>
          <td><span class="type">bool</span></td>
          <td>
           Ordered operations (<strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>) are executed serially on the MongoDB
           server, while unordered operations (<strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>) are sent to the server
           in an arbitrary order and may be executed in parallel.
          </td>
          <td><strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong></td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\BulkWrite.delete
name: deleteOptions
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>deleteOptions</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
          <th>Default</th>
         </tr>

        </thead>

        <tbody class="tbody">
         
         <tr>
          <td>collation</td>
          <td><span class="type"><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">
            <a href="https://www.mongodb.com/docs/upcoming/reference/collation/" class="link external">&raquo;&nbsp;Collation</a> allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the <code class="literal">&quot;locale&quot;</code> field is mandatory; all other collation fields are optional. For descriptions of the fields, see <a href="https://www.mongodb.com/docs/upcoming/reference/collation/#collation-document" class="link external">&raquo;&nbsp;Collation Document</a>.
           </p>
           <p class="para">
            If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons.
           </p>
           <p class="para">
            This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.
           </p>
          </td>
         </tr>


         <tr>
          <td>hint</td>
          <td><span class="type"><span class="type">string</span><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">
            Index specification. Specify either the index name as a string or
            the index key pattern. If specified, then the query system will only
            consider plans using the hinted index.
           </p>
           <p class="para">
            This option is available in MongoDB 4.4+ and will result in an
            exception at execution time if specified for an older server
            version.
           </p>
          </td>
         </tr>

         <tr>
          <td>limit</td>
          <td><span class="type">bool</span></td>
          <td>Delete all matching documents (<strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>), or only the first matching document (<strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>)</td>
          <td><strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong></td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\BulkWrite.update
name: newObj
type: object
description:
<p class="para">
      A document containing either update operators (e.g.
      <code class="literal">$set</code>), a replacement document (i.e.
      <em>only</em> <code class="literal">field:value</code> expressions), or
      an <a href="https://www.mongodb.com/docs/manual/reference/command/update/#update-with-an-aggregation-pipeline" class="link external">&raquo;&nbsp;aggregation pipeline</a>.
     </p>


function_name: MongoDB\Driver\BulkWrite.update
name: updateOptions
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>updateOptions</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
          <th>Default</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>arrayFilters</td>
          <td><span class="type">array</span></td>
          <td>
           <p class="para">
            An array of filter documents that determines which array elements to
            modify for an update operation on an array field. See
            <a href="https://www.mongodb.com/docs/manual/reference/command/update/#update-command-arrayfilters" class="link external">&raquo;&nbsp;Specify arrayFilters for Array Update Operations</a>
            in the MongoDB manual for more information.
           </p>
           <p class="para">
            This option is available in MongoDB 3.6+ and will result in an
            exception at execution time if specified for an older server
            version.
           </p>
          </td>
         </tr>

         
         <tr>
          <td>collation</td>
          <td><span class="type"><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">
            <a href="https://www.mongodb.com/docs/upcoming/reference/collation/" class="link external">&raquo;&nbsp;Collation</a> allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the <code class="literal">&quot;locale&quot;</code> field is mandatory; all other collation fields are optional. For descriptions of the fields, see <a href="https://www.mongodb.com/docs/upcoming/reference/collation/#collation-document" class="link external">&raquo;&nbsp;Collation Document</a>.
           </p>
           <p class="para">
            If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons.
           </p>
           <p class="para">
            This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.
           </p>
          </td>
         </tr>


         <tr>
          <td>hint</td>
          <td><span class="type"><span class="type">string</span><span class="type">array</span><span class="type">object</span></span></td>
          <td>
           <p class="para">
            Index specification. Specify either the index name as a string or
            the index key pattern. If specified, then the query system will only
            consider plans using the hinted index.
           </p>
           <p class="para">
            This option is available in MongoDB 4.2+ and will result in an
            exception at execution time if specified for an older server
            version.
           </p>
          </td>
         </tr>

         <tr>
          <td>multi</td>
          <td><span class="type">bool</span></td>
          <td>
           Update only the first matching document if <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>, or all
           matching documents <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>. This option cannot be <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> if
           <code class="parameter">newObj</code> is a replacement document.
          </td>
          <td><strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong></td>
         </tr>

         <tr>
          <td>upsert</td>
          <td><span class="type">bool</span></td>
          <td>
           If <code class="parameter">filter</code> does not match an existing document,
           insert a <em>single</em> document. The document will be
           created from <code class="parameter">newObj</code> if it is a replacement
           document (i.e. no update operators); otherwise, the operators in
           <code class="parameter">newObj</code> will be applied to
           <code class="parameter">filter</code> to create the new document.
          </td>
          <td><strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong></td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\Session.advanceClusterTime
name: clusterTime
type: object
description:
<p class="para">
      The cluster time is a document containing a logical timestamp and server
      signature. Typically, this value will be obtained by calling
       <span class="methodname">MongoDB\Driver\Session::getClusterTime</span> on another
      session object.
     </p>


function_name: MongoDB\Driver\Session.advanceOperationTime
name: operationTime
type: MongoDB\BSON\TimestampInterface
description:
<p class="para">
      The operation time is a logical timestamp. Typically, this value will be
      obtained by calling
       <span class="methodname">MongoDB\Driver\Session::getOperationTime</span> on
      another session object.
     </p>


function_name: MongoDB\Driver\Session.startTransaction
name: options
type: null
description:
<p class="para">
      Options can be passed as argument to this method. Each element in this
      options array overrides the corresponding option from the
      <code class="literal">&quot;defaultTransactionOptions&quot;</code> option, if set when
      starting the session with
       <span class="methodname">MongoDB\Driver\Manager::startSession</span>.
     </p>
     <p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         
         <tr>
          <td>maxCommitTimeMS</td>
          <td>integer</td>
          <td>
           <p class="para">
            The maximum amount of time in milliseconds to allow a single
            <code class="literal">commitTransaction</code> command to run.
           </p>
           <p class="para">
            If specified, <code class="literal">maxCommitTimeMS</code> must be a signed
            32-bit integer greater than or equal to zero.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>readConcern</td>
          <td><span class="classname">MongoDB\Driver\ReadConcern</span></td>
          <td>
           <p class="para">
            A read concern to apply to the operation.
           </p>
           <p class="para">
            This option is available in MongoDB 3.2+ and will result in an
            exception at execution time if specified for an older server
            version.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>readPreference</td>
          <td><span class="classname">MongoDB\Driver\ReadPreference</span></td>
          <td>
           <p class="para">
            A read preference to use for selecting a server for the operation.
           </p>
          </td>
         </tr>


         
         <tr>
          <td>writeConcern</td>
          <td><span class="classname">MongoDB\Driver\WriteConcern</span></td>
          <td>
           <p class="para">
            A write concern to apply to the operation.
           </p>
          </td>
         </tr>


        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\ClientEncryption.addKeyAltName
name: keyId
type: MongoDB\BSON\Binary
description:
<p class="para">
      A <span class="classname">MongoDB\BSON\Binary</span> instance with subtype 4
      (UUID) identifying the key document.
     </p>


function_name: MongoDB\Driver\ClientEncryption.__construct
name: options
type: array
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>keyVaultClient</td>
          <td><span class="classname">MongoDB\Driver\Manager</span></td>
          <td>The Manager used to route data key queries. This option is required (unlike with <span class="function">MongoDB\Driver\Manager::createClientEncryption</span>).</td>
         </tr>

         
         <tr>
          <td>keyVaultNamespace</td>
          <td><span class="type">string</span></td>
          <td>A fully qualified namespace (e.g. <code class="literal">&quot;databaseName.collectionName&quot;</code>) denoting the collection that contains all data keys used for encryption and decryption. This option is required.</td>
         </tr>


         
         <tr>
          <td>kmsProviders</td>
          <td><span class="type">array</span></td>
          <td>
           <p class="para">
            A document containing the configuration for one or more KMS providers, which are used to encrypt data keys. Supported providers include <code class="literal">&quot;aws&quot;</code>, <code class="literal">&quot;azure&quot;</code>, <code class="literal">&quot;gcp&quot;</code>, <code class="literal">&quot;kmip&quot;</code>, and <code class="literal">&quot;local&quot;</code> and at least one must be specified.
           </p>
           <p class="para">
            If an empty document is specified for <code class="literal">&quot;aws&quot;</code>,
            <code class="literal">&quot;azure&quot;</code>, or <code class="literal">&quot;gcp&quot;</code>, the driver
            will attempt to configure the provider using
            <a href="https://github.com/mongodb/specifications/blob/master/source/client-side-encryption/client-side-encryption.rst#automatic-credentials" class="link external">&raquo;&nbsp;Automatic Credentials</a>.
           </p>
           <p class="para">
            The format for <code class="literal">&quot;aws&quot;</code> is as follows:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">aws: {
    accessKeyId: &lt;string&gt;,
    secretAccessKey: &lt;string&gt;,
    sessionToken: &lt;optional string&gt;
}</pre>
</div>
           </div>

           <p class="para">
            The format for <code class="literal">&quot;azure&quot;</code> is as follows:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">azure: {
    tenantId: &lt;string&gt;,
    clientId: &lt;string&gt;,
    clientSecret: &lt;string&gt;,
    identityPlatformEndpoint: &lt;optional string&gt; // Defaults to &quot;login.microsoftonline.com&quot;
}</pre>
</div>
           </div>

           <p class="para">
            The format for <code class="literal">&quot;gcp&quot;</code> is as follows:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">gcp: {
    email: &lt;string&gt;,
    privateKey: &lt;base64 string&gt;|&lt;MongoDB\BSON\Binary&gt;,
    endpoint: &lt;optional string&gt; // Defaults to &quot;oauth2.googleapis.com&quot;
}</pre>
</div>
           </div>

           <p class="para">
            The format for <code class="literal">&quot;kmip&quot;</code> is as follows:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">kmip: {
    endpoint: &lt;string&gt;
}</pre>
</div>
           </div>

           <p class="para">
            The format for <code class="literal">&quot;local&quot;</code> is as follows:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">local: {
    // 96-byte master key used to encrypt/decrypt data keys
    key: &lt;base64 string&gt;|&lt;MongoDB\BSON\Binary&gt;
}</pre>
</div>
           </div>

          </td>
         </tr>


         
         <tr>
          <td>tlsOptions</td>
          <td><span class="type">array</span></td>
          <td>
           <p class="para">
            A document containing the TLS configuration for one or more KMS providers. Supported providers include <code class="literal">&quot;aws&quot;</code>, <code class="literal">&quot;azure&quot;</code>, <code class="literal">&quot;gcp&quot;</code>, and <code class="literal">&quot;kmip&quot;</code>. All providers support the following options:
           </p>
           <div class="example-contents">
<div class="javascriptcode"><pre class="javascriptcode">&lt;provider&gt;: {
    tlsCaFile: &lt;optional string&gt;,
    tlsCertificateKeyFile: &lt;optional string&gt;,
    tlsCertificateKeyFilePassword: &lt;optional string&gt;,
    tlsDisableOCSPEndpointCheck: &lt;optional bool&gt;
}</pre>
</div>
           </div>

          </td>
         </tr>


        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\ClientEncryption.createDataKey
name: kmsProvider
type: string
description:
<p class="para">
      The KMS provider (e.g. <code class="literal">&quot;local&quot;</code>,
      <code class="literal">&quot;aws&quot;</code>) that will be used to encrypt the new data key.
     </p>


function_name: MongoDB\Driver\ClientEncryption.createDataKey
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>Data key options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>masterKey</td>
          <td><span class="type">array</span></td>
          <td>
           <p class="para">
            The masterKey document identifies a KMS-specific key used to encrypt
            the new data key. This option is required unless
            <code class="parameter">kmsProvider</code> is <code class="literal">&quot;local&quot;</code>.
           </p>
           
  <p class="para">
   <table class="doctable table">
    <caption><strong><code class="literal">&quot;aws&quot;</code> provider options</strong></caption>
    
     <thead>
      <tr>
       <th>Option</th>
       <th>Type</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>region</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>key</td>
       <td>string</td>
       <td>Required. The Amazon Resource Name (ARN) to the AWS customer master key (CMK).</td>
      </tr>

      <tr>
       <td>endpoint</td>
       <td>string</td>
       <td>Optional. An alternate host identifier to send KMS requests to. May include port number.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   <table class="doctable table">
    <caption><strong><code class="literal">&quot;azure&quot;</code> provider options</strong></caption>
    
     <thead>
      <tr>
       <th>Option</th>
       <th>Type</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>keyVaultEndpoint</td>
       <td>string</td>
       <td>Required. Host with optional port (e.g. &quot;example.vault.azure.net&quot;).</td>
      </tr>

      <tr>
       <td>keyName</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>keyVersion</td>
       <td>string</td>
       <td>Optional. A specific version of the named key. Defaults to using the key&#039;s primary version.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   <table class="doctable table">
    <caption><strong><code class="literal">&quot;gcp&quot;</code> provider options</strong></caption>
    
     <thead>
      <tr>
       <th>Option</th>
       <th>Type</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>projectId</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>location</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>keyRing</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>keyName</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>keyVersion</td>
       <td>string</td>
       <td>Optional. A specific version of the named key. Defaults to using the key&#039;s primary version.</td>
      </tr>

      <tr>
       <td>endpoint</td>
       <td>string</td>
       <td>Optional. Host with optional port. Defaults to &quot;cloudkms.googleapis.com&quot;.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   <table class="doctable table">
    <caption><strong><code class="literal">&quot;kmip&quot;</code> provider options</strong></caption>
    
     <thead>
      <tr>
       <th>Option</th>
       <th>Type</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>keyId</td>
       <td>string</td>
       <td>Optional. Unique identifier to a 96-byte KMIP secret data managed object. If unspecified, the driver creates a random 96-byte KMIP secret data managed object.</td>
      </tr>

      <tr>
       <td>endpoint</td>
       <td>string</td>
       <td>Optional. Host with optional port.</td>
      </tr>

     </tbody>
    
   </table>

  </p>

          </td>
         </tr>

         <tr>
          <td>keyAltNames</td>
          <td><span class="type">array</span></td>
          <td>
           <p class="para">
            An optional list of string alternate names used to reference a key.
            If a key is created with alternate names, then encryption may refer
            to the key by the unique alternate name instead of by
            <code class="literal">_id</code>.
           </p>
          </td>
         </tr>

         <tr>
          <td>keyMaterial</td>
          <td><span class="classname">MongoDB\BSON\Binary</span></td>
          <td>
           <p class="para">
            An optional 96-byte value to use as custom key material for the data
            key being created. If keyMaterial is given, the custom key material
            is used for encrypting and decrypting data. Otherwise, the key
            material for the new data key is generated from a cryptographically
            secure random device.
           </p>
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\ClientEncryption.decrypt
name: value
type: MongoDB\BSON\Binary
description:
<p class="para">
      A <span class="classname">MongoDB\BSON\Binary</span> instance with subtype 6
      containing the encrypted value.
     </p>


function_name: MongoDB\Driver\ClientEncryption.encrypt
name: value
type: mixed
description:
<p class="para">
      The value to be encrypted. Any value that can be inserted into MongoDB can
      be encrypted using this method.
     </p>


function_name: MongoDB\Driver\ClientEncryption.encrypt
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>Encryption options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>algorithm</td>
          <td><span class="type">string</span></td>
          <td>
           <p class="para">
            The encryption algorithm to be used. This option is required.
            Specify one of the following
            <a href="class.mongodb-driver-clientencryption.html#mongodb-driver-clientencryption.constants" class="link">ClientEncryption constants</a>:
           </p>
           <ul class="simplelist">
            <li><strong><code>MongoDB\Driver\ClientEncryption::AEAD_AES_256_CBC_HMAC_SHA_512_DETERMINISTIC</code></strong></li>
            <li><strong><code>MongoDB\Driver\ClientEncryption::AEAD_AES_256_CBC_HMAC_SHA_512_RANDOM</code></strong></li>
            <li><strong><code><a href="class.mongodb-driver-clientencryption.html#mongodb-driver-clientencryption.constants.algorithm-indexed">MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED</a></code></strong></li>
            <li><strong><code><a href="class.mongodb-driver-clientencryption.html#mongodb-driver-clientencryption.constants.algorithm-unindexed">MongoDB\Driver\ClientEncryption::ALGORITHM_UNINDEXED</a></code></strong></li>
            <li><strong><code><a href="class.mongodb-driver-clientencryption.html#mongodb-driver-clientencryption.constants.algorithm-range-preview">MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE_PREVIEW</a></code></strong></li>
           </ul>
          </td>
         </tr>

         <tr>
          <td>contentionFactor</td>
          <td><span class="type">int</span></td>
          <td>
           <p class="para">
            The contention factor for evaluating queries with indexed, encrypted
            payloads.
           </p>
           <p class="para">
            This option only applies and may only be specified when
            <code class="literal">algorithm</code> is
            <strong><code><a href="class.mongodb-driver-clientencryption.html#mongodb-driver-clientencryption.constants.algorithm-indexed">MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED</a></code></strong>
            or
            <strong><code><a href="class.mongodb-driver-clientencryption.html#mongodb-driver-clientencryption.constants.algorithm-range-preview">MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE_PREVIEW</a></code></strong>.
           </p>
          </td>
         </tr>

         <tr>
          <td>keyAltName</td>
          <td><span class="type">string</span></td>
          <td>
           <p class="para">
            Identifies a key vault collection document by
            <code class="literal">keyAltName</code>. This option is mutually exclusive
            with <code class="literal">keyId</code> and exactly one is required.
           </p>
          </td>
         </tr>

         <tr>
          <td>keyId</td>
          <td><span class="classname">MongoDB\BSON\Binary</span></td>
          <td>
           <p class="para">
            Identifies a data key by <code class="literal">_id</code>. The value is a UUID
            (binary subtype 4). This option is mutually exclusive with
            <code class="literal">keyAltName</code> and exactly one is required.
           </p>
          </td>
         </tr>

         <tr>
          <td>queryType</td>
          <td><span class="type">string</span></td>
          <td>
           <p class="para">
            The query type for evaluating queries with indexed, encrypted
            payloads. Specify one of the following
            <a href="class.mongodb-driver-clientencryption.html#mongodb-driver-clientencryption.constants" class="link">ClientEncryption constants</a>:
           </p>
           <ul class="simplelist">
            <li><strong><code><a href="class.mongodb-driver-clientencryption.html#mongodb-driver-clientencryption.constants.query-type-equality">MongoDB\Driver\ClientEncryption::QUERY_TYPE_EQUALITY</a></code></strong></li>
            <li><strong><code><a href="class.mongodb-driver-clientencryption.html#mongodb-driver-clientencryption.constants.query-type-range-preview">MongoDB\Driver\ClientEncryption::QUERY_TYPE_RANGE_PREVIEW</a></code></strong></li>
           </ul>
           <p class="para">This option only applies and may only be specified when
            <code class="literal">algorithm</code> is
            <strong><code><a href="class.mongodb-driver-clientencryption.html#mongodb-driver-clientencryption.constants.algorithm-indexed">MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED</a></code></strong>
            or <strong><code><a href="class.mongodb-driver-clientencryption.html#mongodb-driver-clientencryption.constants.algorithm-range-preview">MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE_PREVIEW</a></code></strong>.
           </p>
          </td>
         </tr>

         <tr>
          <td>rangeOpts</td>
          <td><span class="type">array</span></td>
          <td>
           <p class="para">
            Index options for a queryable encryption field supporting
            &quot;rangePreview&quot; queries. The options below must match the values set
            in the <code class="literal">encryptedFields</code> of the target collection.
            For double and decimal128 BSON field types, <code class="literal">min</code>,
            <code class="literal">max</code>, and <code class="literal">precision</code> must all be
            set, or all be unset.
           </p>
           <p class="para">
            <table class="doctable table">
             <caption><strong>Range index options</strong></caption>
             
              <thead>
               <tr>
                <th>Option</th>
                <th>Type</th>
                <th>Description</th>
               </tr>

              </thead>

              <tbody class="tbody">
               <tr>
                <td>min</td>
                <td><span class="type">mixed</span></td>
                <td>Required if <code class="literal">precision</code> is set.</td>
               </tr>

               <tr>
                <td>max</td>
                <td><span class="type">mixed</span></td>
                <td>Required if <code class="literal">precision</code> is set.</td>
               </tr>

               <tr>
                <td>sparsity</td>
                <td><span class="type">int</span></td>
                <td>Required.</td>
               </tr>

               <tr>
                <td>precision</td>
                <td><span class="type">int</span></td>
                <td>Optional. May only be set for double or decimal128 BSON field types.</td>
               </tr>

              </tbody>
             
            </table>

           </p>
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\ClientEncryption.encryptExpression
name: expr
type: object
description:
<p class="para">
      The match or aggregate expression to be encrypted. Expressions must use at
      least one of the <code class="literal">$gt</code>, <code class="literal">$gte</code>,
      <code class="literal">$lt</code>, or <code class="literal">$lte</code> operators. A top-level
      <code class="literal">$and</code> operator is required, even if only a single
      comparison operator is used.
     </p>
     <p class="para">
      An example of a supported match expression (applies to queries and the
      <code class="literal">$match</code> aggregation stage) is as follows:
     </p>
     <div class="example-contents">
<div class="textcode"><pre class="textcode">[
    &#039;$and&#039; =&gt; [
        [ &#039;&lt;field&gt;&#039; =&gt; [ &#039;$gt&#039;  =&gt; &#039;&lt;value1&gt;&#039; ] ],
        [ &#039;&lt;field&gt;&#039; =&gt; [ &#039;$lte&#039; =&gt; &#039;&lt;value2&gt;&#039; ] ],
    ],
]</pre>
</div>
     </div>

     <p class="para">
      An example of a supported aggregate expression is as follows:
     </p>
     <div class="example-contents">
<div class="textcode"><pre class="textcode">[
    &#039;$and&#039; =&gt; [
        [ &#039;$gte&#039; =&gt; [ &#039;&lt;fieldPath&gt;&#039;, &#039;&lt;value1&gt;&#039; ] ],
        [ &#039;$lt&#039;  =&gt; [ &#039;&lt;fieldPath&gt;&#039;, &#039;&lt;value2&gt;&#039; ] ],
    ],
]</pre>
</div>
     </div>


function_name: MongoDB\Driver\ClientEncryption.rewrapManyDataKey
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>RewrapManyDataKey options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>provider</td>
          <td><span class="type">string</span></td>
          <td>
           <p class="para">
            The KMS provider (e.g. <code class="literal">&quot;local&quot;</code>,
            <code class="literal">&quot;aws&quot;</code>) that will be used to re-encrypt the
            matched data keys.
           </p>
           <p class="para">
            If a KMS provider is not specified, matched data keys will be
            re-encrypted with their current KMS provider.
           </p>
          </td>
         </tr>

         <tr>
          <td>masterKey</td>
          <td><span class="type">array</span></td>
          <td>
           <p class="para">
            The masterKey identifies a KMS-specific key used to encrypt the new
            data key. This option should not be specified without the
            <code class="literal">&quot;provider&quot;</code> option. This option is required if
            <code class="literal">&quot;provider&quot;</code> is specified and not
            <code class="literal">&quot;local&quot;</code>.
           </p>
           
  <p class="para">
   <table class="doctable table">
    <caption><strong><code class="literal">&quot;aws&quot;</code> provider options</strong></caption>
    
     <thead>
      <tr>
       <th>Option</th>
       <th>Type</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>region</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>key</td>
       <td>string</td>
       <td>Required. The Amazon Resource Name (ARN) to the AWS customer master key (CMK).</td>
      </tr>

      <tr>
       <td>endpoint</td>
       <td>string</td>
       <td>Optional. An alternate host identifier to send KMS requests to. May include port number.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   <table class="doctable table">
    <caption><strong><code class="literal">&quot;azure&quot;</code> provider options</strong></caption>
    
     <thead>
      <tr>
       <th>Option</th>
       <th>Type</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>keyVaultEndpoint</td>
       <td>string</td>
       <td>Required. Host with optional port (e.g. &quot;example.vault.azure.net&quot;).</td>
      </tr>

      <tr>
       <td>keyName</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>keyVersion</td>
       <td>string</td>
       <td>Optional. A specific version of the named key. Defaults to using the key&#039;s primary version.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   <table class="doctable table">
    <caption><strong><code class="literal">&quot;gcp&quot;</code> provider options</strong></caption>
    
     <thead>
      <tr>
       <th>Option</th>
       <th>Type</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>projectId</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>location</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>keyRing</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>keyName</td>
       <td>string</td>
       <td>Required.</td>
      </tr>

      <tr>
       <td>keyVersion</td>
       <td>string</td>
       <td>Optional. A specific version of the named key. Defaults to using the key&#039;s primary version.</td>
      </tr>

      <tr>
       <td>endpoint</td>
       <td>string</td>
       <td>Optional. Host with optional port. Defaults to &quot;cloudkms.googleapis.com&quot;.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   <table class="doctable table">
    <caption><strong><code class="literal">&quot;kmip&quot;</code> provider options</strong></caption>
    
     <thead>
      <tr>
       <th>Option</th>
       <th>Type</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>keyId</td>
       <td>string</td>
       <td>Optional. Unique identifier to a 96-byte KMIP secret data managed object. If unspecified, the driver creates a random 96-byte KMIP secret data managed object.</td>
      </tr>

      <tr>
       <td>endpoint</td>
       <td>string</td>
       <td>Optional. Host with optional port.</td>
      </tr>

     </tbody>
    
   </table>

  </p>

          </td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\ServerApi.__construct
name: version
type: string
description:
<p class="para">
      A server API version.
     </p>
     <p class="para">
      Supported API versions are provided as constants in
      <span class="classname">MongoDB\Driver\ServerApi</span>. The only supported API
      version is <strong><code><a href="class.mongodb-driver-serverapi.html#mongodb-driver-serverapi.constants.v1">MongoDB\Driver\ServerApi::V1</a></code></strong>.
     </p>


function_name: MongoDB\Driver\ServerApi.__construct
name: strict
type: null
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>, the
      server will yield an error for any command that is not part of the
      specified API version. If no value is provided, the server default value
      (<strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>) is used.
     </p>


function_name: MongoDB\Driver\ServerApi.__construct
name: deprecationErrors
type: null
description:
<p class="para">
      If the <code class="parameter">deprecationErrors</code> parameter is set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>,
      the server will yield an error when using a command that is deprecated in
      the specified API version. If no value is provided, the server default value
      (<strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>) is used.
     </p>


function_name: MongoDB\Driver\ServerApi.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\Driver\ServerApi</span>.
      </p>


function_name: MongoDB\Driver\WriteConcern.__construct
name: w
type: int
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>Write concern</strong></caption>
       
        <thead>
         <tr>
          <th>Value</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>1</td>
          <td>
            Requests acknowledgement that the write operation has propagated to
            the standalone <code class="literal">mongod</code> or the primary in a replica
            set. This is the default write concern for MongoDB.
          </td>
         </tr>

         <tr>
          <td>0</td>
          <td>
           Requests no acknowledgment of the write operation. However, this may
           return information about socket exceptions and networking errors to
           the application.
          </td>
         </tr>

         <tr>
          <td>&lt;integer greater than 1&gt;</td>
          <td>
           Numbers greater than 1 are valid only for replica sets to request
           acknowledgement from specified number of members, including the
           primary.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="class.mongodb-driver-writeconcern.html#mongodb-driver-writeconcern.constants.majority">MongoDB\Driver\WriteConcern::MAJORITY</a></code></strong></td>
          <td>
           <p class="para">
            Requests acknowledgment that write operations have propagated to the
            majority of voting nodes, including the primary, and have been
            written to the on-disk journal for these nodes.
           </p>
           <p class="para">
            Prior to MongoDB 3.0, this refers to the majority of replica set
            members (not just voting nodes).
           </p>
          </td>
         </tr>

         <tr>
          <td>string</td>
          <td>
           A string value is interpereted as a tag set. Requests acknowledgement
           that the write operations have propagated to a replica set member
           with the specified tag.
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\WriteConcern.__construct
name: wtimeout
type: null
description:
<p class="para">
      How long to wait (in milliseconds) for secondaries before failing.
     </p>
     <p class="para">
      <code class="literal">wtimeout</code> causes write operations to return with an
      error (<span class="classname">WriteConcernError</span>) after the specified
      limit, even if the required write concern will eventually succeed. When
      these write operations return, MongoDB does not undo successful data
      modifications performed before the write concern exceeded the
      <code class="literal">wtimeout</code> time limit.
     </p>
     <p class="para">
      If specified, <code class="literal">wtimeout</code> must be a signed 64-bit integer
      greater than or equal to zero.
     </p>
     <p class="para">
      <table class="doctable table">
       <caption><strong>Write concern timeout</strong></caption>
       
        <thead>
         <tr>
          <th>Value</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>0</td>
          <td>Block indefinitely. This is the default.</td>
         </tr>

         <tr>
          <td>&lt;integer greater than 0&gt;</td>
          <td>
           Milliseconds to wait until returning.
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\WriteConcern.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\Driver\WriteConcern</span>.
      </p>


function_name: MongoDB\Driver\ReadPreference.__construct
name: mode
type: int
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>Read preference mode</strong></caption>
       
        <thead>
         <tr>
          <th>Value</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><strong><code><a href="class.mongodb-driver-readpreference.html#mongodb-driver-readpreference.constants.rp-primary">MongoDB\Driver\ReadPreference::RP_PRIMARY</a></code></strong> or <code class="literal">&quot;primary&quot;</code></td>
          <td>
           <p class="para">
            All operations read from the current replica set primary. This is
            the default read preference for MongoDB.
           </p>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="class.mongodb-driver-readpreference.html#mongodb-driver-readpreference.constants.rp-primary-preferred">MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED</a></code></strong> or <code class="literal">&quot;primaryPreferred&quot;</code></td>
          <td>
           <p class="para">
            In most situations, operations read from the primary but if it is
            unavailable, operations read from secondary members.
           </p>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="class.mongodb-driver-readpreference.html#mongodb-driver-readpreference.constants.rp-secondary">MongoDB\Driver\ReadPreference::RP_SECONDARY</a></code></strong> or <code class="literal">&quot;secondary&quot;</code></td>
          <td>
           <p class="para">
            All operations read from the secondary members of the replica set.
           </p>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="class.mongodb-driver-readpreference.html#mongodb-driver-readpreference.constants.rp-secondary-preferred">MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED</a></code></strong> or <code class="literal">&quot;secondaryPreferred&quot;</code></td>
          <td>
           <p class="para">
            In most situations, operations read from secondary members but if no
            secondary members are available, operations read from the primary.
           </p>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="class.mongodb-driver-readpreference.html#mongodb-driver-readpreference.constants.rp-nearest">MongoDB\Driver\ReadPreference::RP_NEAREST</a></code></strong> or <code class="literal">&quot;nearest&quot;</code></td>
          <td>
           <p class="para">
            Operations read from member of the replica set with the least
            network latency, irrespective of the member&#039;s type.
           </p>
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\ReadPreference.__construct
name: tagSets
type: null
description:
<p class="para">
      Tag sets allow you to target read operations to specific members of a
      replica set. This parameter should be an array of associative arrays, each
      of which contain zero or more key/value pairs. When selecting a server for
      a read operation, the driver attempt to select a node having all tags in a
      set (i.e. the associative array of key/value pairs). If selection fails,
      the driver will attempt subsequent sets. An empty tag set
      (<code class="literal">array()</code>) will match any node and may be used as a
      fallback.
     </p>
     <p class="para">
      Tags are not compatible with the
      <strong><code><a href="class.mongodb-driver-readpreference.html#mongodb-driver-readpreference.constants.rp-primary">MongoDB\Driver\ReadPreference::RP_PRIMARY</a></code></strong> mode and,
      in general, only apply when selecting a secondary member of a set for a
      read operation. However, the
      <strong><code><a href="class.mongodb-driver-readpreference.html#mongodb-driver-readpreference.constants.rp-nearest">MongoDB\Driver\ReadPreference::RP_NEAREST</a></code></strong> mode, when
      combined with a tag set, selects the matching member with the lowest
      network latency. This member may be a primary or secondary.
     </p>


function_name: MongoDB\Driver\ReadPreference.__construct
name: options
type: null
description:
<p class="para">
      <table class="doctable table">
       <caption><strong>options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>hedge</td>
          <td><span class="type"><span class="type">object</span><span class="type">array</span></span></td>
          <td>
           <p class="para">Specifies whether to use <a href="https://www.mongodb.com/docs/manual/core/sharded-cluster-query-router/#mongos-hedged-reads" class="link external">&raquo;&nbsp;hedged reads</a>, which are supported by MongoDB 4.4+ for sharded queries.</p>
           <p class="para">
            Server hedged reads are available for all non-primary read preferences
            and are enabled by default when using the <code class="literal">&quot;nearest&quot;</code>
            mode. This option allows explicitly enabling server hedged reads for
            non-primary read preferences by specifying
            <code class="literal">[&#039;enabled&#039; =&gt; true]</code>, or explicitly disabling
            server hedged reads for the <code class="literal">&quot;nearest&quot;</code> read
            preference by specifying <code class="literal">[&#039;enabled&#039; =&gt; false]</code>.
           </p>
          </td>
         </tr>

         <tr>
          <td>maxStalenessSeconds</td>
          <td><span class="type">int</span></td>
          <td>
           <p class="para">
            Specifies a maximum replication lag, or &quot;staleness&quot;, for reads from
            secondaries. When a secondary&#039;s estimated staleness exceeds
            this value, the driver stops using it for read operations.
           </p>
           <p class="para">
            If specified, the max staleness must be a signed 32-bit integer
            greater than or equal to
            <strong><code><a href="class.mongodb-driver-readpreference.html#mongodb-driver-readpreference.constants.smallest-max-staleness-seconds">MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS</a></code></strong>.
           </p>
           <p class="para">
            Defaults to
            <strong><code><a href="class.mongodb-driver-readpreference.html#mongodb-driver-readpreference.constants.no-max-staleness">MongoDB\Driver\ReadPreference::NO_MAX_STALENESS</a></code></strong>,
            which means that the driver will not consider a secondary&#039;s lag
            when choosing where to direct a read operation.
           </p>
           <p class="para">
            This option is not compatible with the
            <strong><code><a href="class.mongodb-driver-readpreference.html#mongodb-driver-readpreference.constants.rp-primary">MongoDB\Driver\ReadPreference::RP_PRIMARY</a></code></strong> mode.
            Specifying a max staleness also requires all MongoDB instances in
            the deployment to be using MongoDB 3.4+. An exception will be thrown
            at execution time if any MongoDB instances in the deployment are of
            an older server version.
           </p>
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>


function_name: MongoDB\Driver\ReadPreference.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\Driver\ReadPreference</span>.
      </p>


function_name: MongoDB\Driver\ReadConcern.__construct
name: level
type: null
description:
<p class="para">
      The <a href="https://www.mongodb.com/docs/manual/reference/read-concern/#read-concern-levels" class="link external">&raquo;&nbsp;read concern level</a>.
      You may use, but are not limited to, one of the
      <a href="class.mongodb-driver-readconcern.html#mongodb-driver-readconcern.constants" class="link">class constants</a>.
     </p>


function_name: MongoDB\Driver\ReadConcern.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\Driver\ReadConcern</span>.
      </p>


function_name: MongoDB\Driver\CursorId.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\Driver\CursorId</span>.
      </p>


function_name: MongoDB\BSON\toPHP
name: typeMap
type: array
initializer: array()
description:
<p class="para">
      <a href="mongodb.persistence.deserialization.html#mongodb.persistence.typemaps" class="link">Type map configuration</a>.
     </p>


function_name: MongoDB\BSON\Document.fromPHP
name: value
type: array
description:
<p class="para">
      A PHP object or array containing the document. When passing an array with
      numeric keys, the numeric values are converted to strings and used as
      document keys.
     </p>


function_name: MongoDB\BSON\Document.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\Document</span>.
      </p>


function_name: MongoDB\BSON\PackedArray.fromPHP
name: value
type: array
description:
<p class="para">
      The PHP array to convert to a BSON array. The array must be a list (i.e.
      have sequential numeric keys starting with <code class="literal">0</code>).
     </p>


function_name: MongoDB\BSON\PackedArray.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\PackedArray</span>.
      </p>


function_name: MongoDB\BSON\Binary.__construct
name: type
type: int
initializer: MongoDB\BSON\Binary::TYPE_GENERIC
description:
<p class="para">
      Unsigned 8-bit integer denoting the data&#039;s type. Defaults to <strong><code><a href="class.mongodb-bson-binary.html#mongodb-bson-binary.constants.type-generic">MongoDB\BSON\Binary::TYPE_GENERIC</a></code></strong> if not specified.
     </p>


function_name: MongoDB\BSON\Binary.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\Binary</span>.
      </p>


function_name: MongoDB\BSON\Decimal128.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\Decimal128</span>.
      </p>


function_name: MongoDB\BSON\Javascript.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\Javascript</span>.
      </p>


function_name: MongoDB\BSON\MaxKey.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\MaxKey</span>.
      </p>


function_name: MongoDB\BSON\MinKey.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\MinKey</span>.
      </p>


function_name: MongoDB\BSON\ObjectId.__construct
name: id
type: null
description:
<p class="para">
      A 24-character hexadecimal string. If not provided, the driver will
      generate an ObjectId.
     </p>


function_name: MongoDB\BSON\ObjectId.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\ObjectId</span>.
      </p>


function_name: MongoDB\BSON\Regex.__construct
name: pattern
type: string
description:
<p class="para">
      The regular expression pattern.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <span class="simpara">
       The pattern should not be wrapped with delimiter characters.
      </span>
     </p></blockquote>


function_name: MongoDB\BSON\Regex.__construct
name: flags
type: string
initializer: ""
description:
<p class="para">
      The <a href="https://www.mongodb.com/docs/manual/reference/operator/query/regex/#op._S_options" class="link external">&raquo;&nbsp;regular
      expression flags</a>. Characters in this argument will be sorted
      alphabetically.
     </p>


function_name: MongoDB\BSON\Regex.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\Regex</span>.
      </p>


function_name: MongoDB\BSON\Timestamp.__construct
name: increment
type: int
description:
<p class="para">
      32-bit integer denoting the incrementing ordinal for operations within a
      given second.
     </p>


function_name: MongoDB\BSON\Timestamp.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\Timestamp</span>.
      </p>


function_name: MongoDB\BSON\UTCDateTime.__construct
name: milliseconds
type: null
description:
<p class="para">
      Number of milliseconds since the Unix epoch (Jan 1, 1970). Negative values
      represent dates before 1970. This value may be provided as a 64-bit
      <span class="type">int</span>. For compatibility on 32-bit systems, this parameter
      may also be provided as a <span class="type">float</span> or <span class="type">string</span>.
     </p>
     <p class="para">
      If the argument is a <span class="classname">DateTimeInterface</span>, the number
      of milliseconds since the Unix epoch will be derived from that value.
     </p>
     <p class="para">
      If this argument is <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the current time will be used by default.
     </p>


function_name: MongoDB\BSON\UTCDateTime.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\UTCDateTime</span>.
      </p>


function_name: MongoDB\BSON\DBPointer.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\DBPointer</span>.
      </p>


function_name: MongoDB\BSON\Int64.__construct
name: value
type: string
description:
<p class="para">
      The value to assign to the <span class="classname">Int64</span> instance. This
      value can be provided as an <span class="type">int</span> or <span class="type">string</span>, the
      latter being required on 32-bit platforms to represent 64-bit values.
     </p>


function_name: MongoDB\BSON\Int64.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\Int64</span>.
      </p>


function_name: MongoDB\BSON\Symbol.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\Symbol</span>.
      </p>


function_name: MongoDB\BSON\Undefined.unserialize
name: data
type: string
description:
<p class="para">
       The serialized <span class="classname">MongoDB\BSON\Undefined</span>.
      </p>


function_name: MongoDB\Driver\Monitoring\CommandSubscriber.commandFailed
name: event
type: MongoDB\Driver\Monitoring\CommandFailedEvent
description:
<p class="para">
      An event object encapsulating information about the failed command.
     </p>


function_name: MongoDB\Driver\Monitoring\CommandSubscriber.commandStarted
name: event
type: MongoDB\Driver\Monitoring\CommandStartedEvent
description:
<p class="para">
      An event object encapsulating information about the started command.
     </p>


function_name: MongoDB\Driver\Monitoring\CommandSubscriber.commandSucceeded
name: event
type: MongoDB\Driver\Monitoring\CommandSucceededEvent
description:
<p class="para">
      An event object encapsulating information about the successful command.
     </p>


function_name: MongoDB\Driver\Monitoring\LogSubscriber.log
name: level
type: int
description:
<p class="para">
      The severity level. This will be one of the
      <a href="class.mongodb-driver-monitoring-logsubscriber.html#mongodb-driver-monitoring-logsubscriber.constants" class="link">interface constants</a>.
     </p>


function_name: MongoDB\Driver\Monitoring\SDAMSubscriber.serverChanged
name: event
type: MongoDB\Driver\Monitoring\ServerChangedEvent
description:
<p class="para">
      An event object encapsulating information about the changed server
      description.
     </p>


function_name: MongoDB\Driver\Monitoring\SDAMSubscriber.serverHeartbeatFailed
name: event
type: MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent
description:
<p class="para">
      An event object encapsulating information about the failed server
      heartbeat.
     </p>


function_name: MongoDB\Driver\Monitoring\SDAMSubscriber.serverHeartbeatStarted
name: event
type: MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent
description:
<p class="para">
      An event object encapsulating information about the started server
      heartbeat.
     </p>


function_name: MongoDB\Driver\Monitoring\SDAMSubscriber.serverHeartbeatSucceeded
name: event
type: MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent
description:
<p class="para">
      An event object encapsulating information about the successful server
      heartbeat.
     </p>


function_name: MongoDB\Driver\Monitoring\SDAMSubscriber.topologyChanged
name: event
type: MongoDB\Driver\Monitoring\TopologyChangedEvent
description:
<p class="para">
      An event object encapsulating information about the changed topology
      description.
     </p>


function_name: MongoDB\Driver\Monitoring\SDAMSubscriber.topologyClosed
name: event
type: MongoDB\Driver\Monitoring\TopologyClosedEvent
description:
<p class="para">
      An event object encapsulating information about the closed topology.
     </p>


function_name: MongoDB\Driver\Monitoring\SDAMSubscriber.topologyOpening
name: event
type: MongoDB\Driver\Monitoring\TopologyOpeningEvent
description:
<p class="para">
      An event object encapsulating information about the opened topology.
     </p>


function_name: mysqli.$affected_rows
name: mysql
type: mysqli
description:
<p class="para">Procedural style only: A <span class="classname">mysqli</span> object
returned by <span class="function">mysqli_connect</span> or <span class="function">mysqli_init</span>
</p>


function_name: mysqli.begin_transaction
name: flags
type: int
description:
<p class="para">
         <strong><code>MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT</code></strong>: 
         Start the transaction as &quot;START TRANSACTION WITH CONSISTENT SNAPSHOT&quot;.
        </p>


function_name: mysqli.change_user
name: database
type: null
description:
<p class="para">
       The database to change to.
      </p>
      <p class="para">
       If desired, the <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> value may be passed resulting in only changing
       the user and not selecting a database. To select a database in this
       case use the <span class="function">mysqli_select_db</span> function.
      </p>


function_name: mysqli.commit
name: flags
type: int
description:
<p class="para">
       A bitmask of <strong><code>MYSQLI_TRANS_COR_*</code></strong> constants.
      </p>


function_name: mysqli.commit
name: name
type: null
description:
<p class="para">
       If provided then <code class="literal">COMMIT/*name*/</code> is executed.
      </p>


function_name: mysqli.__construct
name: hostname
type: null
description:
<p class="para">
       Can be either a host name or an IP address. When passing <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the value is retrieved from
       <a href="mysqli.configuration.html#ini.mysqli.default-host" class="link">mysqli.default_host</a>.
       When possible, pipes will be used instead of the TCP/IP protocol.
       The TCP/IP protocol is used if a host name and port number are provided together e.g. <code class="literal">localhost:3308</code>.
      </p>
      <p class="para">
       Prepending host by <code class="literal">p:</code> opens a persistent connection.
       <span class="function">mysqli_change_user</span> is automatically called on
       connections opened from the connection pool.
      </p>


function_name: mysqli.__construct
name: username
type: null
description:
<p class="para">
       The MySQL username or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> to assume the username based on the
       <a href="mysqli.configuration.html#ini.mysqli.default-user" class="link">mysqli.default_user</a> ini option.
      </p>


function_name: mysqli.__construct
name: password
type: null
description:
<p class="para">
       The MySQL password or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> to assume the password based on the
       <a href="mysqli.configuration.html#ini.mysqli.default-pw" class="link">mysqli.default_pw</a> ini option.
      </p>


function_name: mysqli.__construct
name: database
type: null
description:
<p class="para">
       The default database to be used when performing queries or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
      </p>


function_name: mysqli.__construct
name: port
type: null
description:
<p class="para">
       The port number to attempt to connect to the MySQL server or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> to assume the port based on the
       <a href="mysqli.configuration.html#ini.mysqli.default-port" class="link">mysqli.default_port</a> ini option.
      </p>


function_name: mysqli.__construct
name: socket
type: null
description:
<p class="para">
       The socket or named pipe that should be used or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> to assume the socket based on the
       <a href="mysqli.configuration.html#ini.mysqli.default-socket" class="link">mysqli.default_socket</a> ini option.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Specifying the <code class="parameter">socket</code> parameter will not
        explicitly determine the type of connection to be used when
        connecting to the MySQL server. How the connection is made to the
        MySQL database is determined by the <code class="parameter">hostname</code>
        parameter.
       </p>
      </p></blockquote>


function_name: mysqli.debug
name: options
type: string
description:
<p class="para">
       A string representing the debugging operation to perform
      </p>
      <p class="para">
        The debug control string is a sequence of colon separated fields as follows:
        <code class="literal"><div class="cdata"><pre>&lt;field_1&gt;:&lt;field_2&gt;:&lt;field_N&gt;</pre></div></code>
        Each field consists of a mandatory flag character followed by an optional <code class="literal">,</code> and comma separated list of modifiers:
        <code class="literal">flag[,modifier,modifier,...,modifier]</code>
      </p>
      <p class="para">
       <table class="doctable table">
        <caption><strong>Recognized Flag Characters</strong></caption>
          
            <thead>
              <tr>
                <th><code class="parameter">options</code> character</th>
                <th>Description</th>
              </tr>

            </thead>

            <tbody class="tbody">
              <tr>
                <td>O</td>
                <td><strong><code>MYSQLND_DEBUG_FLUSH</code></strong></td>
              </tr>

              <tr>
                <td>A/a</td>
                <td><strong><code>MYSQLND_DEBUG_APPEND</code></strong></td>
              </tr>

              <tr>
                <td>F</td>
                <td><strong><code>MYSQLND_DEBUG_DUMP_FILE</code></strong></td>
              </tr>

              <tr>
                <td>i</td>
                <td><strong><code>MYSQLND_DEBUG_DUMP_PID</code></strong></td>
              </tr>

              <tr>
                <td>L</td>
                <td><strong><code>MYSQLND_DEBUG_DUMP_LINE</code></strong></td>
              </tr>

              <tr>
                <td>m</td>
                <td><strong><code>MYSQLND_DEBUG_TRACE_MEMORY_CALLS</code></strong></td>
              </tr>

              <tr>
                <td>n</td>
                <td><strong><code>MYSQLND_DEBUG_DUMP_LEVEL</code></strong></td>
              </tr>

              <tr>
                <td>o</td>
                <td>output to file</td>
              </tr>

              <tr>
                <td>T</td>
                <td><strong><code>MYSQLND_DEBUG_DUMP_TIME</code></strong></td>
              </tr>

              <tr>
                <td>t</td>
                <td><strong><code>MYSQLND_DEBUG_DUMP_TRACE</code></strong></td>
              </tr>

              <tr>
                <td>x</td>
                <td><strong><code>MYSQLND_DEBUG_PROFILE_CALLS</code></strong></td>
              </tr>

            </tbody>
          
        </table>

       </p>


function_name: mysqli.execute_query
name: query
type: string
description:
<p class="para">
       The query, as a string. It must consist of a single SQL statement.
      </p>
      <p class="para">
       The SQL statement may contain zero or more parameter markers
       represented by question mark (<code class="literal">?</code>) characters
       at the appropriate positions.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 

       <p class="para">
        The markers are legal only in certain places in SQL statements.
        For example, they are permitted in the <code class="literal">VALUES()</code>
        list of an <code class="literal">INSERT</code> statement (to specify column
        values for a row), or in a comparison with a column in a
        <code class="literal">WHERE</code> clause to specify a comparison value.
        However, they are not permitted for identifiers (such as table or
        column names).
       </p>
      </p></blockquote>


function_name: mysqli.execute_query
name: params
type: null
description:
<p class="para">
       An optional list <span class="type">array</span> with as many elements as there are bound parameters in the SQL statement being executed. Each value is treated as a <span class="type">string</span>.
      </p>


function_name: mysqli.multi_query
name: query
type: string
description:
<p class="para">
       A string containing the queries to be executed.
       Multiple queries must be separated by a semicolon.
      </p>


function_name: mysqli.options
name: option
type: int
description:
<p class="para">
       The option that you want to set. It can be one of the following values:
       <table id="mysqli.options.parameters" class="doctable table">
        <caption><strong>Valid options</strong></caption>
        
         <thead>
          <tr>
           <th>Name</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-opt-connect-timeout">MYSQLI_OPT_CONNECT_TIMEOUT</a></code></strong></td>
           <td>Connection timeout in seconds</td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-opt-read-timeout">MYSQLI_OPT_READ_TIMEOUT</a></code></strong></td>
           <td>Command execution result timeout in seconds. Available as of PHP 7.2.0.</td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-opt-local-infile">MYSQLI_OPT_LOCAL_INFILE</a></code></strong></td>
           <td>Enable/disable use of <code class="literal">LOAD LOCAL INFILE</code></td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-init-command">MYSQLI_INIT_COMMAND</a></code></strong></td>
           <td>Command to execute after when connecting to MySQL server</td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-set-charset-name">MYSQLI_SET_CHARSET_NAME</a></code></strong></td>
           <td>The charset to be set as default.</td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-read-default-file">MYSQLI_READ_DEFAULT_FILE</a></code></strong></td>
           <td>
            Read options from named option file instead of <var class="filename">my.cnf</var>
            Not supported by mysqlnd.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-read-default-group">MYSQLI_READ_DEFAULT_GROUP</a></code></strong></td>
           <td>
            Read options from the named group from <var class="filename">my.cnf</var>
            or the file specified with <strong><code>MYSQL_READ_DEFAULT_FILE</code></strong>.
            Not supported by mysqlnd.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-server-public-key">MYSQLI_SERVER_PUBLIC_KEY</a></code></strong></td>
           <td>
             RSA public key file used with the SHA-256 based authentication.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-opt-net-cmd-buffer-size">MYSQLI_OPT_NET_CMD_BUFFER_SIZE</a></code></strong></td>
           <td>
             The size of the internal command/network buffer. Only valid for
             mysqlnd.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-opt-net-read-buffer-size">MYSQLI_OPT_NET_READ_BUFFER_SIZE</a></code></strong></td>
           <td>
             Maximum read chunk size in bytes when reading the body of a MySQL
             command packet. Only valid for mysqlnd.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-opt-int-and-float-native">MYSQLI_OPT_INT_AND_FLOAT_NATIVE</a></code></strong></td>
           <td>
             Convert integer and float columns back to PHP numbers when using non-prepared statements.
             Only valid for mysqlnd.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-opt-ssl-verify-server-cert">MYSQLI_OPT_SSL_VERIFY_SERVER_CERT</a></code></strong></td>
           <td>
            Whether to verify server certificate or not.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: mysqli.poll
name: read
type: null
description:
<p class="para">
       List of connections to check for outstanding results that can be read.
      </p>


function_name: mysqli.poll
name: error
type: null
description:
<p class="para">
      List of connections on which an error occurred, for example, query
      failure or lost connection.
      </p>


function_name: mysqli.poll
name: reject
type: array
description:
<p class="para">
      List of connections rejected because no asynchronous query
      has been run on for which the function could poll results.
      </p>


function_name: mysqli.query
name: result_mode
type: int
description:
<p class="para">
       The result mode can be one of 3 constants indicating how the result will
       be returned from the MySQL server.
      </p>
      <p class="para">
       <strong><code><a href="mysqli.constants.html#constant.mysqli-store-result">MYSQLI_STORE_RESULT</a></code></strong> (default) - returns a
       <span class="classname">mysqli_result</span> object with buffered result set.
      </p>
      <p class="para">
       <strong><code><a href="mysqli.constants.html#constant.mysqli-use-result">MYSQLI_USE_RESULT</a></code></strong> - returns a
       <span class="classname">mysqli_result</span> object with unbuffered result set. 
       As long as there are pending records waiting to be fetched, the
       connection line will be busy and all subsequent calls will return error 
       <code class="literal">Commands out of sync</code>. To avoid the error all records 
       must be fetched from the server or the result set must be discarded by
       calling <span class="function">mysqli_free_result</span>.
      </p>
      <p class="para">
       <strong><code>MYSQLI_ASYNC</code></strong> (available with mysqlnd) - the query is
       performed asynchronously and no result set is immediately returned.
       <span class="function">mysqli_poll</span> is then used to get results from such
       queries. Used in combination with either
       <strong><code><a href="mysqli.constants.html#constant.mysqli-store-result">MYSQLI_STORE_RESULT</a></code></strong> or
       <strong><code><a href="mysqli.constants.html#constant.mysqli-use-result">MYSQLI_USE_RESULT</a></code></strong> constant.
      </p>


function_name: mysqli.real_connect
name: hostname
type: null
description:
<p class="para">
       Can be either a host name or an IP address. When passing <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the value is retrieved from
       <a href="mysqli.configuration.html#ini.mysqli.default-host" class="link">mysqli.default_host</a>.
       When possible, pipes will be used instead of the TCP/IP protocol.
       The TCP/IP protocol is used if a host name and port number are provided together e.g. <code class="literal">localhost:3308</code>.
      </p>


function_name: mysqli.real_connect
name: flags
type: int
description:
<p class="para">
       With the parameter <code class="parameter">flags</code> you can set different
       connection options:
      </p>
      <table id="mysqli.real-connect.flags" class="doctable table">
       <caption><strong>Supported flags</strong></caption>
       
       <thead>
        <tr>
         <th>Name</th>
         <th>Description</th>
        </tr>

       </thead>

       <tbody class="tbody">
        <tr>
         <td><strong><code><a href="mysqli.constants.html#constant.mysqli-client-compress">MYSQLI_CLIENT_COMPRESS</a></code></strong></td>
         <td>Use compression protocol</td>
        </tr>

        <tr>
         <td><strong><code>MYSQLI_CLIENT_FOUND_ROWS</code></strong></td>
         <td>return number of matched rows, not the number of affected rows</td>
        </tr>

        <tr>
         <td><strong><code><a href="mysqli.constants.html#constant.mysqli-client-ignore-space">MYSQLI_CLIENT_IGNORE_SPACE</a></code></strong></td>
         <td>Allow spaces after function names. Makes all function names reserved words.</td>
        </tr>

        <tr>
         <td><strong><code><a href="mysqli.constants.html#constant.mysqli-client-interactive">MYSQLI_CLIENT_INTERACTIVE</a></code></strong></td>
         <td>
          Allow <code class="literal">interactive_timeout</code> seconds (instead of
          <code class="literal">wait_timeout</code> seconds) of inactivity before closing the connection
         </td>
        </tr>

        <tr>
         <td><strong><code><a href="mysqli.constants.html#constant.mysqli-client-ssl">MYSQLI_CLIENT_SSL</a></code></strong></td>
         <td>Use SSL (encryption)</td>
        </tr>

        <tr>
         <td><strong><code><a href="mysqli.constants.html#constant.mysqli-client-ssl-dont-verify-server-cert">MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT</a></code></strong></td>
         <td>
          Like <strong><code><a href="mysqli.constants.html#constant.mysqli-client-ssl">MYSQLI_CLIENT_SSL</a></code></strong>, but disables validation of the provided 
          SSL certificate. This is only for installations using MySQL Native Driver and MySQL 5.6 or later.
         </td>
        </tr>

        </tbody>
       
      </table>

      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        For security reasons the <strong><code>MULTI_STATEMENT</code></strong> flag is
        not supported in PHP. If you want to execute multiple queries use the
        <span class="function">mysqli_multi_query</span> function.
       </p>
      </p></blockquote>


function_name: mysqli.real_escape_string
name: string
type: string
description:
<p class="para">
       The string to be escaped.
      </p>
      <p class="para">
       Characters encoded are <code class="literal">NUL (ASCII 0)</code>,
       <code class="literal">\n</code>, <code class="literal">\r</code>, <code class="literal">\</code>,
       <code class="literal">&#039;</code>, <code class="literal">&quot;</code>, and
       <kbd class="keycombo"><kbd class="keycap">CTRL</kbd>+<kbd class="keycap">Z</kbd></kbd>.
      </p>


function_name: mysqli.refresh
name: flags
type: int
description:
<p class="para">
       The options to refresh, using the MYSQLI_REFRESH_* constants as documented
       within the <a href="mysqli.constants.html" class="link">MySQLi constants</a> documentation.
      </p>
      <p class="para">
       See also the official <a href="http://dev.mysql.com/doc/mysql/en/mysql-refresh.html" class="link external">&raquo;&nbsp;MySQL Refresh</a>
       documentation.
      </p>


function_name: mysqli.rollback
name: name
type: null
description:
<p class="para">
       If provided then <code class="literal">ROLLBACK/*name*/</code> is executed.
      </p>


function_name: mysqli.ssl_set
name: ca_path
type: null
description:
<p class="para">
       The pathname to a directory that contains trusted SSL CA certificates
       in <acronym class="acronym">PEM</acronym> format.
      </p>


function_name: mysqli.store_result
name: mode
type: int
description:
<p class="para">
       The option that you want to set. As of PHP 8.1, this parameter has no effect. It can be one of the following values:
       <table id="mysqli.store-result.parameters" class="doctable table">
        <caption><strong>Valid options</strong></caption>
        
         <thead>
          <tr>
           <th>Name</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code>MYSQLI_STORE_RESULT_COPY_DATA</code></strong></td>
           <td>Copy results from the internal mysqlnd buffer into the PHP variables fetched. By default,
           mysqlnd will use a reference logic to avoid copying and duplicating results held in memory.
           For certain result sets, for example, result sets with many small rows, the copy approach can
           reduce the overall memory usage because PHP variables holding results may be
           released earlier (available with mysqlnd only)</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: mysqli_stmt.$affected_rows
name: statement
type: mysqli_stmt
description:
<p class="para">Procedural style only: A <span class="classname">mysqli_stmt</span> object
returned by <span class="function">mysqli_stmt_init</span>.</p>


function_name: mysqli_stmt.attr_set
name: attribute
type: int
description:
<p class="para">
       The attribute that you want to set. It can have one of the following values:
       <table id="mysqli-stmt.attr-set.parameters" class="doctable table">
        <caption><strong>Attribute values</strong></caption>
        
         <thead>
          <tr>
           <th>Character</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH</td>
           <td>
            Setting to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> causes <span class="function">mysqli_stmt_store_result</span> to
            update the metadata <code class="literal">MYSQL_FIELD-&gt;max_length</code> value.
           </td>
          </tr>

          <tr>
           <td>MYSQLI_STMT_ATTR_CURSOR_TYPE</td>
           <td>
            Type of cursor to open for statement when <span class="function">mysqli_stmt_execute</span>
            is invoked. <code class="parameter">value</code> can be <strong><code><a href="mysqli.constants.html#constant.mysqli-cursor-type-no-cursor">MYSQLI_CURSOR_TYPE_NO_CURSOR</a></code></strong>
            (the default) or <strong><code><a href="mysqli.constants.html#constant.mysqli-cursor-type-read-only">MYSQLI_CURSOR_TYPE_READ_ONLY</a></code></strong>.
           </td>
          </tr>

          <tr>
           <td>MYSQLI_STMT_ATTR_PREFETCH_ROWS</td>
           <td>
            Number of rows to fetch from server at a time when using a cursor.
            <code class="parameter">value</code> can be in the range from 1 to the maximum
            value of unsigned long. The default is 1.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       If you use the <strong><code><a href="mysqli.constants.html#constant.mysqli-stmt-attr-cursor-type">MYSQLI_STMT_ATTR_CURSOR_TYPE</a></code></strong> option with
       <strong><code><a href="mysqli.constants.html#constant.mysqli-cursor-type-read-only">MYSQLI_CURSOR_TYPE_READ_ONLY</a></code></strong>, a cursor is opened for the
       statement when you invoke <span class="function">mysqli_stmt_execute</span>. If there
       is already an open cursor from a previous <span class="function">mysqli_stmt_execute</span> call,
       it closes the cursor before opening a new one. <span class="function">mysqli_stmt_reset</span>
       also closes any open cursor before preparing the statement for re-execution.
       <span class="function">mysqli_stmt_free_result</span> closes any open cursor.
      </p>
      <p class="para">
       If you open a cursor for a prepared statement, <span class="function">mysqli_stmt_store_result</span>
       is unnecessary.
      </p>


function_name: mysqli_stmt.bind_param
name: types
type: string
description:
<p class="para">
       A string that contains one or more characters which specify the types
       for the corresponding bind variables:
       <table id="mysqli-stmt.bind-param.parameters" class="doctable table">
        <caption><strong>Type specification chars</strong></caption>
        
         <thead>
          <tr>
           <th>Character</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>i</td>
           <td>corresponding variable has type <span class="type">int</span></td>
          </tr>

          <tr>
           <td>d</td>
           <td>corresponding variable has type <span class="type">float</span></td>
          </tr>

          <tr>
           <td>s</td>
           <td>corresponding variable has type <span class="type">string</span></td>
          </tr>

          <tr>
           <td>b</td>
           <td>corresponding variable is a blob and will be sent in packets</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: mysqli_stmt.bind_param
name: vars
type: mixed
description:
<p class="para">
       The number of variables and length of string 
       <code class="parameter">types</code> must match the parameters in the statement.
      </p>


function_name: mysqli_stmt.__construct
name: query
type: null
description:
<p class="para">
       The query, as a string. If this parameter is <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, then the
       constructor behaves identically to
       <span class="function">mysqli_stmt_init</span>, otherwise it behaves as
       per <span class="function">mysqli_prepare</span>.
      </p>


function_name: mysqli_stmt.data_seek
name: offset
type: int
description:
<p class="para">
       Must be between zero and the total number of rows minus one (0..
       <span class="function">mysqli_stmt_num_rows</span> - 1).
      </p>


function_name: mysqli_stmt.send_long_data
name: param_num
type: int
description:
<p class="para">
       Indicates which parameter to associate the data with. Parameters are
       numbered beginning with 0.
      </p>


function_name: mysqli_result.__construct
name: result_mode
type: int
description:
<p class="para">
      The result mode can be one of 2 constants indicating how the result will
      be returned from the MySQL server.
     </p>
     <p class="para">
      <strong><code><a href="mysqli.constants.html#constant.mysqli-store-result">MYSQLI_STORE_RESULT</a></code></strong> (default) - creates a
      <span class="classname">mysqli_result</span> object with buffered result set.
     </p>
     <p class="para">
      <strong><code><a href="mysqli.constants.html#constant.mysqli-use-result">MYSQLI_USE_RESULT</a></code></strong> - creates a
      <span class="classname">mysqli_result</span> object with unbuffered result set. 
      As long as there are pending records waiting to be fetched, the
      connection line will be busy and all subsequent calls will return error 
      <code class="literal">Commands out of sync</code>. To avoid the error all records 
      must be fetched from the server or the result set must be discarded by
      calling <span class="function">mysqli_free_result</span>. The connection must
      remain open for the rows to be fetched.
     </p>


function_name: mysqli_result.$current_field
name: result
type: mysqli_result
description:
<p class="para">Procedural style only: A <span class="classname">mysqli_result</span>
object returned by <span class="function">mysqli_query</span>, <span class="function">mysqli_store_result</span>,
<span class="function">mysqli_use_result</span> or <span class="function">mysqli_stmt_get_result</span>.</p>


function_name: mysqli_result.data_seek
name: offset
type: int
description:
<p class="para">
       The row offset. Must be between zero and the total number of rows
       minus one (0..<span class="function">mysqli_num_rows</span> - 1).
      </p>


function_name: mysqli_result.fetch_all
name: mode
type: int
description:
<p class="para">
       This optional parameter is a constant indicating what type of array
       should be produced from the current row data. The possible values for
       this parameter are the constants <strong><code><a href="mysqli.constants.html#constant.mysqli-assoc">MYSQLI_ASSOC</a></code></strong>,
       <strong><code><a href="mysqli.constants.html#constant.mysqli-num">MYSQLI_NUM</a></code></strong>, or <strong><code><a href="mysqli.constants.html#constant.mysqli-both">MYSQLI_BOTH</a></code></strong>.
      </p>


function_name: mysqli_result.fetch_array
name: mode
type: int
description:
<p class="para">
       This optional parameter is a constant indicating what type of array
       should be produced from the current row data. The possible values for
       this parameter are the constants <strong><code><a href="mysqli.constants.html#constant.mysqli-assoc">MYSQLI_ASSOC</a></code></strong>,
       <strong><code><a href="mysqli.constants.html#constant.mysqli-num">MYSQLI_NUM</a></code></strong>, or <strong><code><a href="mysqli.constants.html#constant.mysqli-both">MYSQLI_BOTH</a></code></strong>.
      </p>
      <p class="para">
       By using the <strong><code><a href="mysqli.constants.html#constant.mysqli-assoc">MYSQLI_ASSOC</a></code></strong> constant this function
       will behave identically to the <span class="function">mysqli_fetch_assoc</span>,
       while <strong><code><a href="mysqli.constants.html#constant.mysqli-num">MYSQLI_NUM</a></code></strong> will behave identically to the
       <span class="function">mysqli_fetch_row</span> function. The final option 
       <strong><code><a href="mysqli.constants.html#constant.mysqli-both">MYSQLI_BOTH</a></code></strong> will create a single array with the
       attributes of both.
      </p>


function_name: mysqli_result.fetch_column
name: column
type: int
description:
<p class="para">
       0-indexed number of the column you wish to retrieve from the row. If
       no value is supplied, the first column will be returned.
      </p>


function_name: mysqli_result.fetch_field_direct
name: index
type: int
description:
<p class="para">
       The field number. This value must be in the range from
       <code class="literal">0</code> to <code class="literal">number of fields - 1</code>.
      </p>


function_name: mysqli_result.fetch_object
name: class
type: string
initializer: "stdClass"
description:
<p class="para">
       The name of the class to instantiate, set the properties of and return.
       If not specified, a <span class="classname">stdClass</span> object is returned.
      </p>


function_name: mysqli_result.fetch_object
name: constructor_args
type: array
initializer: []
description:
<p class="para">
       An optional <span class="type">array</span> of parameters to pass to the constructor
       for <code class="parameter">class</code> objects.
      </p>


function_name: mysqli_result.field_seek
name: index
type: int
description:
<p class="para">
       The field number. This value must be in the range from 
       <code class="literal">0</code> to <code class="literal">number of fields - 1</code>.
      </p>


function_name: mysqli_driver.$report_mode
name: flags
type: int
description:
<p class="para">
       <table id="mysqli-driver.report-mode.parameters" class="doctable table">
        <caption><strong>Supported flags</strong></caption>
        
         <thead>
          <tr>
           <th>Name</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-report-off">MYSQLI_REPORT_OFF</a></code></strong></td>
           <td>Turns reporting off</td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-report-error">MYSQLI_REPORT_ERROR</a></code></strong></td>
           <td>Report errors from mysqli function calls</td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-report-strict">MYSQLI_REPORT_STRICT</a></code></strong></td>
           <td>
            Throw <span class="classname">mysqli_sql_exception</span> for errors
            instead of warnings
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-report-index">MYSQLI_REPORT_INDEX</a></code></strong></td>
           <td>Report if no index or bad index was used in a query</td>
          </tr>

          <tr>
           <td><strong><code><a href="mysqli.constants.html#constant.mysqli-report-all">MYSQLI_REPORT_ALL</a></code></strong></td>
           <td>Set all options (report all)</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: getSession
name: uri
type: string
description:
<p class="para">
              The optional <code class="literal">compression-algorithms</code> attribute defines 
              the desired compression algorithms (and their preferred usage order): 
              <code class="literal">zstd_stream</code> (alias: zstd),
              <code class="literal">lz4_message</code> (alias: lz4), or
              <code class="literal">deflate_stream</code> (aliases: deflate or zlib).
              By default, the order used (depending on system availability) is lz4_message, zstd_stream, then deflate_stream.
              For example, passing in compression-algorithms=[lz4,zstd_stream] uses lz4 if it&#039;s available, otherwise
              zstd_stream is used. If both are unavailable then behavior depends on the compression value
              e.g., if compression=required then it&#039;ll fail with an error.
            </p>
            <p class="para">
              This option was added in version 8.0.22.
            </p>


function_name: Collection.add
name: document
type: mixed
description:
<p class="para">
      One or multiple documents, and this can be either JSON or an array of fields with 
      their associated values. This cannot be an empty array.
     </p>
     <p class="para">
      The MySQL server automatically generates unique <code class="literal">_id</code> values for
      each document (recommended), although this can be manually added as well. This value must be
      unique as otherwise the add operation will fail.
     </p>


function_name: Collection.addOrReplaceOne
name: id
type: string
description:
<p class="para">
      This is the filter id. If this id or any other field that has a unique index already 
      exists in the collection, then it will update the matching document instead.
     </p>
     <p class="para">
      By default, this id is automatically generated by MySQL Server when the
      record was added, and is referenced as a field named &#039;_id&#039;.
    </p>


function_name: Collection.createIndex
name: index_name
type: string
description:
<p class="para">
      The name of the index that to create. This name must be a valid index name as 
      accepted by the <code class="literal">CREATE INDEX</code> SQL query.
     </p>


function_name: Collection.createIndex
name: index_desc_json
type: string
description:
<p class="para">
          <code class="code">srid</code>: integer, (optional) srid value for use when 
          decoding <code class="literal">GEOJSON</code> data.
        </p>


function_name: Collection.find
name: search_condition
type: string
description:
<p class="para">
      Although optional, normally a condition is defined to limit the results
      to a subset of documents.
     </p>
     <p class="para">
      Multiple elements might build the condition and the syntax supports parameter binding. 
      The expression used as search condition must be a valid SQL expression.
      If no search condition is provided (field empty) then find(&#039;true&#039;) is assumed.
     </p>


function_name: Collection.modify
name: search_condition
type: string
description:
<p class="para">
      Must be a valid SQL expression used to match the documents to modify.
      This expression might be as simple as <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, which matches all 
      documents, or it might use functions and operators such as 
      <code class="code">&#039;CAST(_id AS SIGNED) &gt;= 10&#039;</code>, 
      <code class="code">&#039;age MOD 2 = 0 OR age MOD 3 = 0&#039;</code>, or
      <code class="code">&#039;_id IN [&quot;2&quot;,&quot;5&quot;,&quot;7&quot;,&quot;10&quot;]&#039;</code>.
     </p>


function_name: Collection.remove
name: search_condition
type: string
description:
<p class="para">
      Must be a valid SQL expression used to match the documents to remove.
      This expression might be as simple as <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, which matches all 
      documents, or it might use functions and operators such as 
      <code class="code">&#039;CAST(_id AS SIGNED) &gt;= 10&#039;</code>, 
      <code class="code">&#039;age MOD 2 = 0 OR age MOD 3 = 0&#039;</code>, or
      <code class="code">&#039;_id IN [&quot;2&quot;,&quot;5&quot;,&quot;7&quot;,&quot;10&quot;]&#039;</code>.
     </p>


function_name: Collection.removeOne
name: id
type: string
description:
<p class="para">
      The ID of the collection document to remove. Typically this is
      the _id that was generated by MySQL Server when the record
      was added.
     </p>


function_name: Collection.replaceOne
name: id
type: string
description:
<p class="para">
      ID of the document to replace or update. Typically this is
      the _id that was generated by MySQL Server when the record
      was added.
     </p>


function_name: Collection.replaceOne
name: doc
type: string
description:
<p class="para">
      Collection document to update or replace the document matching
      the <strong class="option unknown">id</strong> parameter.
     </p>
     <p class="para">
      This document can be either a document object or a valid JSON string 
      describing the new document.
     </p>


function_name: CollectionFind.bind
name: placeholder_values
type: array
description:
<p class="para">
      Values to substitute in the search condition; multiple values are allowed
      and are passed as an array where &quot;PLACEHOLDER_NAME =&gt; PLACEHOLDER_VALUE&quot;.
     </p>


function_name: CollectionFind.fields
name: projection
type: string
description:
<p class="para">
      Can either be a single string or an array of strings identifying the
      columns to be returned for each document that match the search condition.
     </p>


function_name: CollectionFind.groupBy
name: sort_expr
type: string
description:
<p class="para">
      The column or columns that have to be used for the group operation, this can either be a single string
      or an array of string arguments, one for each column.
     </p>


function_name: CollectionFind.having
name: sort_expr
type: string
description:
<p class="para">
      This must be a valid SQL expression, the use of aggreate functions is allowed
     </p>


function_name: CollectionFind.lockExclusive
name: lock_waiting_option
type: int
description:
<p class="para"><strong><code><a href="mysql-xdevapi.constants.html#constant.mysqlx-lock-skip-locked">MYSQLX_LOCK_SKIP_LOCKED</a></code></strong></p>


function_name: CollectionFind.sort
name: sort_expr
type: string
description:
<p class="para">
      One or more sorting expressions can be provided. The evaluation is from left to right,
      and each expression is separated by a comma.
     </p>


function_name: CollectionModify.arrayInsert
name: collection_field
type: string
description:
<p class="para">
      Identifies the item in the array after which the new element will be inserted.
      The format of this parameter is
      <code class="literal"><span class="replaceable">FIELD_NAME[ INDEX ]</span></code> where
      <span class="replaceable">FIELD_NAME</span> is the name of the document field
      to add the element to, and <span class="replaceable">INDEX</span>
      is the INDEX of the element within the field.
     </p>
     <p class="para">
      The INDEX field is zero based, so the first item of the array has an index of 0.
     </p>


function_name: CollectionModify.bind
name: placeholder_values
type: array
description:
<p class="para">
      Placeholder values to substitute in the search condition. Multiple values are allowed
      and have to be passed as an array of mappings PLACEHOLDER_NAME-&gt;PLACEHOLDER_VALUE.
     </p>


function_name: CollectionModify.sort
name: sort_expr
type: string
description:
<p class="para">
      One or more sort expressions can be provided. The evaluation is from
      left to right and each expression must be separated by a comma.
     </p>


function_name: Session.setSavepoint
name: name
type: string
description:
<p class="para">
      The name of the savepoint. The name is auto-generated if the optional <code class="literal">name</code> 
      parameter is not defined as &#039;SAVEPOINT1&#039;, &#039;SAVEPOINT2&#039;, and so on.
     </p>


function_name: Table.insert
name: columns
type: mixed
description:
<p class="para">
      The columns to insert data into. Can be an array
      with one or more values, or a string.
     </p>


function_name: Table.select
name: columns
type: mixed
description:
<p class="para">
      The columns to select data from. Can be an array
      with one or more values, or a string.
     </p>


function_name: TableSelect.having
name: sort_expr
type: string
description:
<p class="para">
      A condition on the aggregate functions used on the grouping criteria.
     </p>


function_name: TableSelect.orderby
name: sort_expr
type: mixed
description:
<p class="para">
      The expressions that define the order by criteria. Can be an array
      with one or more expressions, or a string.
     </p>


function_name: TableUpdate.bind
name: placeholder_values
type: array
description:
<p class="para">
     The name of the placeholder, and the value to bind, defined
     as a JSON array.
     </p>


function_name: mysql_affected_rows
name: link_identifier
type: resource
initializer: NULL
description:
<p class="para">The MySQL connection. If the
link identifier is not specified, the last link opened by
<span class="function">mysql_connect</span> is assumed. If no such link is found, it
will try to create one as if <span class="function">mysql_connect</span> had been called
with no arguments. If no connection is found or established, an
<strong><code><a href="errorfunc.constants.html#constant.e-warning">E_WARNING</a></code></strong> level error is generated.</p>


function_name: mysql_close
name: link_identifier
type: resource
initializer: NULL
description:
<p class="para">The MySQL connection. If the
link identifier is not specified, the last link opened by
<span class="function">mysql_connect</span> is assumed. If no connection is found or
established, an <strong><code><a href="errorfunc.constants.html#constant.e-warning">E_WARNING</a></code></strong> level error is
generated.</p>


function_name: mysql_connect
name: server
type: string
initializer: ini_get("mysql.default_host")
description:
<p class="para">
       The MySQL server. It can also include a port number. e.g. 
       &quot;hostname:port&quot; or a path to a local socket e.g. &quot;:/path/to/socket&quot; for 
       the localhost.
      </p>
      <p class="para">
       If the PHP directive <a href="mysql.configuration.html#ini.mysql.default-host" class="link">
       mysql.default_host</a> is undefined (default), then the default 
       value is &#039;localhost:3306&#039;. In <a href="ini.core.html#ini.sql.safe-mode" class="link">SQL safe mode</a>, this parameter is ignored
       and value &#039;localhost:3306&#039; is always used.
      </p>


function_name: mysql_connect
name: username
type: string
initializer: ini_get("mysql.default_user")
description:
<p class="para">
       The username. Default value is defined by <a href="mysql.configuration.html#ini.mysql.default-user" class="link">mysql.default_user</a>. In
       <a href="ini.core.html#ini.sql.safe-mode" class="link">SQL safe mode</a>, this parameter is ignored and the name of the user that
       owns the server process is used.
      </p>


function_name: mysql_connect
name: password
type: string
initializer: ini_get("mysql.default_password")
description:
<p class="para">
       The password. Default value is defined by <a href="mysql.configuration.html#ini.mysql.default-password" class="link">mysql.default_password</a>. In
       <a href="ini.core.html#ini.sql.safe-mode" class="link">SQL safe mode</a>, this parameter is ignored and empty password is used.
      </p>


function_name: mysql_connect
name: new_link
type: bool
description:
<p class="para">
       If a second call is made to <span class="function">mysql_connect</span>
       with the same arguments, no new link will be established, but
       instead, the link identifier of the already opened link will be
       returned. The <code class="parameter">new_link</code> parameter modifies this 
       behavior and makes <span class="function">mysql_connect</span> always open 
       a new link, even if <span class="function">mysql_connect</span> was called 
       before with the same parameters.
       In <a href="ini.core.html#ini.sql.safe-mode" class="link">SQL safe mode</a>, this parameter is ignored.
      </p>


function_name: mysql_connect
name: client_flags
type: int
description:
<p class="para">
       The <code class="parameter">client_flags</code> parameter can be a combination 
       of the following constants:
       128 (enable <code class="literal">LOAD DATA LOCAL</code> handling),
       <strong><code><a href="mysql.constants.html#constant.mysql-client-ssl">MYSQL_CLIENT_SSL</a></code></strong>,
       <strong><code><a href="mysql.constants.html#constant.mysql-client-compress">MYSQL_CLIENT_COMPRESS</a></code></strong>, 
       <strong><code><a href="mysql.constants.html#constant.mysql-client-ignore-space">MYSQL_CLIENT_IGNORE_SPACE</a></code></strong> or
       <strong><code><a href="mysql.constants.html#constant.mysql-client-interactive">MYSQL_CLIENT_INTERACTIVE</a></code></strong>.
       Read the section about <a href="mysql.constants.html#mysql.client-flags" class="xref">MySQL client constants</a> for further information.
       In <a href="ini.core.html#ini.sql.safe-mode" class="link">SQL safe mode</a>, this parameter is ignored.
      </p>


function_name: mysql_data_seek
name: result
type: resource
description:
<p class="para">The result <span class="type">resource</span> that
is being evaluated. This result comes from a call to
<span class="function">mysql_query</span>.</p>


function_name: mysql_db_name
name: result
type: resource
description:
<p class="para">
       The result pointer from a call to <span class="function">mysql_list_dbs</span>.
      </p>


function_name: mysql_db_query
name: query
type: string
description:
<p class="para">
       The MySQL query.
      </p>
      <p class="para">
       Data inside the query should be <a href="function.mysql-real-escape-string.html" class="link">properly escaped</a>.
      </p>


function_name: mysql_fetch_array
name: result_type
type: int
initializer: MYSQL_BOTH
description:
<p class="para">
       The type of array that is to be fetched. It&#039;s a constant and can
       take the following values: <strong><code><a href="mysql.constants.html#constant.mysql-assoc">MYSQL_ASSOC</a></code></strong>, 
       <strong><code><a href="mysql.constants.html#constant.mysql-num">MYSQL_NUM</a></code></strong>, and
       <strong><code><a href="mysql.constants.html#constant.mysql-both">MYSQL_BOTH</a></code></strong>.
      </p>


function_name: mysql_fetch_field
name: field_offset
type: int
description:
<p class="para">
       The numerical field offset. If the field offset is not specified, the 
       next field that was not yet retrieved by this function is retrieved. 
       The <code class="parameter">field_offset</code> starts at <code class="literal">0</code>.
      </p>


function_name: mysql_fetch_object
name: class_name
type: string
description:
<p class="para">
        The name of the class to instantiate, set the properties of and return.
        If not specified, a <span class="classname">stdClass</span> object is returned.
       </p>


function_name: mysql_field_flags
name: field_offset
type: int
description:
<p class="para">The numerical field offset. The
<code class="parameter">field_offset</code> starts at <code class="literal">0</code>. If
<code class="parameter">field_offset</code> does not exist, an error of level
<strong><code><a href="errorfunc.constants.html#constant.e-warning">E_WARNING</a></code></strong> is also issued.</p>


function_name: mysql_pconnect
name: server
type: string
initializer: ini_get("mysql.default_host")
description:
<p class="para">
       The MySQL server. It can also include a port number. e.g. 
       &quot;hostname:port&quot; or a path to a local socket e.g. &quot;:/path/to/socket&quot; for 
       the localhost.
      </p>
      <p class="para">
       If the PHP directive <a href="mysql.configuration.html#ini.mysql.default-host" class="link">
       mysql.default_host</a> is undefined (default), then the default 
       value is &#039;localhost:3306&#039;
      </p>


function_name: mysql_pconnect
name: username
type: string
initializer: ini_get("mysql.default_user")
description:
<p class="para">
       The username. Default value is the name of the user that owns the
       server process.
      </p>


function_name: mysql_pconnect
name: client_flags
type: int
description:
<p class="para">
       The <code class="parameter">client_flags</code> parameter can be a combination 
       of the following constants:
       128 (enable <code class="literal">LOAD DATA LOCAL</code> handling),
       <strong><code><a href="mysql.constants.html#constant.mysql-client-ssl">MYSQL_CLIENT_SSL</a></code></strong>, 
       <strong><code><a href="mysql.constants.html#constant.mysql-client-compress">MYSQL_CLIENT_COMPRESS</a></code></strong>, 
       <strong><code><a href="mysql.constants.html#constant.mysql-client-ignore-space">MYSQL_CLIENT_IGNORE_SPACE</a></code></strong> or
       <strong><code><a href="mysql.constants.html#constant.mysql-client-interactive">MYSQL_CLIENT_INTERACTIVE</a></code></strong>.
      </p>


function_name: mysql_query
name: query
type: string
description:
<p class="para">
       An SQL query
      </p>
      <p class="para">
       The query string should not end with a semicolon.
       Data inside the query should be <a href="function.mysql-real-escape-string.html" class="link">properly escaped</a>.
      </p>


function_name: mysql_result
name: row
type: int
description:
<p class="para">
       The row number from the result that&#039;s being retrieved. Row numbers 
       start at <code class="literal">0</code>.
      </p>


function_name: mysql_result
name: field
type: mixed
description:
<p class="para">
       The name or offset of the field being retrieved.
      </p>
      <p class="para">
       It can be the field&#039;s offset, the field&#039;s name, or the field&#039;s table 
       dot field name (tablename.fieldname). If the column name has been
       aliased (&#039;select foo as bar from...&#039;), use the alias instead of the 
       column name. If undefined, the first field is retrieved.
      </p>


function_name: mysql_tablename
name: result
type: resource
description:
<p class="para">
       A result pointer <span class="type">resource</span> that&#039;s returned from  
       <span class="function">mysql_list_tables</span>.
      </p>


function_name: mysql_unbuffered_query
name: query
type: string
description:
<p class="para">
       The SQL query to execute.
      </p>
      <p class="para">
       Data inside the query should be <a href="function.mysql-real-escape-string.html" class="link">properly escaped</a>.
      </p>


function_name: oci_bind_array_by_name
name: max_item_length
type: int
initializer: -1
description:
<p class="para">
       Sets maximum length for array items. If not specified or equals to -1,
       <span class="function">oci_bind_array_by_name</span> will find the longest
       element in the incoming array and will use it as the maximum length.
      </p>


function_name: oci_bind_array_by_name
name: type
type: int
description:
<p class="para">
          <strong><code><a href="oci8.constants.html#constant.sqlt-odt">SQLT_ODT</a></code></strong> - for arrays of DATE.
         </p>


function_name: oci_bind_by_name
name: param
type: string
description:
<p class="para">
       The colon-prefixed bind variable placeholder used in the
       statement.  The colon is optional
       in <code class="parameter">param</code>. Oracle does not use question
       marks for placeholders.
      </p>


function_name: oci_bind_by_name
name: var
type: mixed
description:
<p class="para">
       The PHP variable to be associated with <code class="parameter">param</code>
      </p>


function_name: oci_bind_by_name
name: max_length
type: int
initializer: -1
description:
<p class="para">
       Sets the maximum length for the data. If you set it to -1, this
       function will use the current length
       of <code class="parameter">var</code> to set the maximum
       length. In this case the <code class="parameter">var</code> must
       exist and contain data
       when <span class="function">oci_bind_by_name</span> is called.
      </p>


function_name: oci_bind_by_name
name: type
type: int
description:
<p class="para">
          <strong><code><a href="oci8.constants.html#constant.sqlt-bol">SQLT_BOL</a></code></strong> or <strong><code><a href="oci8.constants.html#constant.oci-b-bol">OCI_B_BOL</a></code></strong>
          - for PL/SQL BOOLEANs (Requires Oracle Database 12c)
         </p>


function_name: oci_close
name: connection
type: resource
description:
<p class="para">
       An Oracle connection identifier returned by 
       <span class="function">oci_connect</span>, <span class="function">oci_pconnect</span>,
       or <span class="function">oci_new_connect</span>.
      </p>


function_name: oci_commit
name: connection
type: resource
description:
<p class="para">
       An Oracle connection identifier, returned by
       <span class="function">oci_connect</span>, <span class="function">oci_pconnect</span>, or <span class="function">oci_new_connect</span>.
      </p>


function_name: oci_connect
name: connection_string
type: null
description:
<p class="para">Contains
the <code class="literal">Oracle instance</code> to connect to. It can be
an <a href="https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-E5358DEA-D619-4B7B-A799-3D2F802500F1" class="link external">&raquo;&nbsp;Easy Connect
string</a>, or a Connect Name from
the <var class="filename">tnsnames.ora</var> file, or the name of a local
Oracle instance.
</p>
<p class="para">If not specified or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, PHP uses
environment variables such as <strong><code>TWO_TASK</code></strong> (on Linux)
or <strong><code>LOCAL</code></strong> (on Windows)
and <strong><code>ORACLE_SID</code></strong> to determine the
<code class="literal">Oracle instance</code> to connect to.
</p>
<p class="para">
To use the Easy Connect naming method, PHP must be linked with Oracle
10<em>g</em> or greater Client libraries. The Easy Connect string for Oracle
10<em>g</em> is of the form:
<em>[//]host_name[:port][/service_name]</em>. From Oracle
11<em>g</em>, the syntax is:
<em>[//]host_name[:port][/service_name][:server_type][/instance_name]</em>.
Further options were introduced with Oracle 19c, including timeout and keep-alive
settings.  Refer to Oracle documentation.  Service names can be found by running
the Oracle utility <code class="literal">lsnrctl status</code> on the database server
machine.
</p>
<p class="para">
The <var class="filename">tnsnames.ora</var> file can be in the Oracle Net search path,
which
includes <var class="filename">/your/path/to/instantclient/network/admin</var>, <var class="filename">$ORACLE_HOME/network/admin</var>
and <var class="filename">/etc</var>.  Alternatively set <code class="literal">TNS_ADMIN</code>
so that <var class="filename">$TNS_ADMIN/tnsnames.ora</var> is read.  Make sure the web
daemon has read access to the file.
</p>


function_name: oci_connect
name: encoding
type: string
initializer: ""
description:
<p class="para">Determines
the character set used by the Oracle Client libraries.  The character
set does not need to match the character set used by the database.  If
it doesn&#039;t match, Oracle will do its best to convert data to and from
the database character set.  Depending on the character sets this may
not give usable results.  Conversion also adds some time overhead.
</p>
<p class="para">If not specified, the
Oracle Client libraries determine a character set from
the <strong><code>NLS_LANG</code></strong> environment variable.
</p>
<p class="para">Passing this parameter can
reduce the time taken to connect.
</p>


function_name: oci_connect
name: session_mode
type: int
description:
<p class="para">This
parameter is available since version PHP 5 (PECL OCI8 1.1) and accepts the
following values: <strong><code><a href="oci8.constants.html#constant.oci-default">OCI_DEFAULT</a></code></strong>,
<strong><code><a href="oci8.constants.html#constant.oci-sysoper">OCI_SYSOPER</a></code></strong> and <strong><code><a href="oci8.constants.html#constant.oci-sysdba">OCI_SYSDBA</a></code></strong>.
If either <strong><code><a href="oci8.constants.html#constant.oci-sysoper">OCI_SYSOPER</a></code></strong> or
<strong><code><a href="oci8.constants.html#constant.oci-sysdba">OCI_SYSDBA</a></code></strong> were specified, this function will try
to establish privileged connection using external credentials.
Privileged connections are disabled by default. To enable them you
need to set <a href="oci8.configuration.html#ini.oci8.privileged-connect" class="link">oci8.privileged_connect</a>
to <code class="literal">On</code>.
</p>
<p class="para">
PHP 5.3 (PECL OCI8 1.3.4) introduced the
<strong><code><a href="oci8.constants.html#constant.oci-cred-ext">OCI_CRED_EXT</a></code></strong> mode value. This tells Oracle to use
External or OS authentication, which must be configured in the
database.  The <strong><code><a href="oci8.constants.html#constant.oci-cred-ext">OCI_CRED_EXT</a></code></strong> flag can only be used
with username of &quot;/&quot; and a empty password.
<a href="oci8.configuration.html#ini.oci8.privileged-connect" class="link">oci8.privileged_connect</a>
may be <code class="literal">On</code> or <code class="literal">Off</code>.
</p>
<p class="para">
<strong><code><a href="oci8.constants.html#constant.oci-cred-ext">OCI_CRED_EXT</a></code></strong> may be combined with the
<strong><code><a href="oci8.constants.html#constant.oci-sysoper">OCI_SYSOPER</a></code></strong> or
<strong><code><a href="oci8.constants.html#constant.oci-sysdba">OCI_SYSDBA</a></code></strong> modes.
</p>
<p class="para">
<strong><code><a href="oci8.constants.html#constant.oci-cred-ext">OCI_CRED_EXT</a></code></strong> is not supported on Windows for
security reasons.
</p>


function_name: oci_define_by_name
name: statement
type: resource
description:
<p class="para">A valid OCI8 statement
identifier created by <span class="function">oci_parse</span> and executed
by <span class="function">oci_execute</span>, or a <code class="literal">REF
CURSOR</code> statement identifier.</p>


function_name: oci_define_by_name
name: column
type: string
description:
<p class="para">
       The column name used in the query.
      </p>
      <p class="para">
       Use uppercase for Oracle&#039;s default, non-case sensitive column
       names.  Use the exact column name case for case-sensitive
       column names.
      </p>


function_name: oci_define_by_name
name: type
type: int
description:
<p class="para">
        The data type to be returned.  Generally not needed.  Note that
        Oracle-style data conversions are not performed.  For example,
        <strong><code><a href="oci8.constants.html#constant.sqlt-int">SQLT_INT</a></code></strong> will be ignored and the returned
        data type will still be <strong><code><a href="oci8.constants.html#constant.sqlt-chr">SQLT_CHR</a></code></strong>.
      </p>
      <p class="para">
       You can optionally use <span class="function">oci_new_descriptor</span>
       to allocate LOB/ROWID/BFILE descriptors.
      </p>


function_name: oci_error
name: connection_or_statement
type: null
description:
<p class="para">
       For most errors, <code class="parameter">connection_or_statement</code> is the
       resource handle that was passed to the failing function call.
       For connection errors with <span class="function">oci_connect</span>,
       <span class="function">oci_new_connect</span> or 
       <span class="function">oci_pconnect</span> <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> should be passed.
      </p>


function_name: oci_execute
name: mode
type: int
description:
<p class="para">
        An optional second parameter can be one of the following constants:
       <table class="doctable table">
        <caption><strong>Execution Modes</strong></caption>
        
         <thead>
          <tr>
           <th>Constant</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-commit-on-success">OCI_COMMIT_ON_SUCCESS</a></code></strong></td>
           <td>Automatically commit all outstanding changes for
             this connection when the statement has succeeded. This
             is the default.</td>
          </tr>

          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-describe-only">OCI_DESCRIBE_ONLY</a></code></strong></td>
           <td>Make query meta data available to functions
             like <span class="function">oci_field_name</span> but do not
             create a result set. Any subsequent fetch call such
             as <span class="function">oci_fetch_array</span> will
             fail.</td>
          </tr>

          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-no-auto-commit">OCI_NO_AUTO_COMMIT</a></code></strong></td>
           <td>Do not automatically commit changes.</td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       Using <strong><code><a href="oci8.constants.html#constant.oci-no-auto-commit">OCI_NO_AUTO_COMMIT</a></code></strong> mode starts or continues a
       transaction. Transactions are automatically rolled back when
       the connection is closed, or when the script ends.  Explicitly
       call <span class="function">oci_commit</span> to commit a transaction,
       or <span class="function">oci_rollback</span> to abort it.
      </p>
      <p class="para">
       When inserting or updating data, using transactions is
       recommended for relational data consistency and for performance
       reasons.
      </p>
      <p class="para">
       If <strong><code><a href="oci8.constants.html#constant.oci-no-auto-commit">OCI_NO_AUTO_COMMIT</a></code></strong> mode is used for any
       statement including queries, and 
        <span class="function">oci_commit</span>
       or <span class="function">oci_rollback</span> is not subsequently
       called, then OCI8 will perform a rollback at the end of the
       script even if no data was changed.  To avoid an unnecessary
       rollback, many scripts do not
       use <strong><code><a href="oci8.constants.html#constant.oci-no-auto-commit">OCI_NO_AUTO_COMMIT</a></code></strong> mode for queries or
       PL/SQL.  Be careful to ensure the appropriate transactional
       consistency for the application when
       using <span class="function">oci_execute</span> with different modes in
       the same script.
      </p>


function_name: oci_fetch_all
name: output
type: array
description:
<p class="para">
       The variable to contain the returned rows.
      </p>
      <p class="para">
        LOB columns are returned as strings, where Oracle supports
        conversion.
      </p>
      <p class="para">
        See <span class="function">oci_fetch_array</span> for more information
        on how data and types are fetched.
      </p>


function_name: oci_fetch_all
name: offset
type: int
description:
<p class="para">
       The number of initial rows to discard when fetching the
       result. The default value is 0, so the first row onwards is
       returned.
      </p>


function_name: oci_fetch_all
name: limit
type: int
initializer: -1
description:
<p class="para">
       The number of rows to return.  The default is -1 meaning return
       all the rows from <code class="parameter">offset</code> + 1 onwards.
      </p>


function_name: oci_fetch_all
name: flags
type: int
initializer: OCI_FETCHSTATEMENT_BY_COLUMN | OCI_ASSOC
description:
<p class="para">
       Parameter <code class="parameter">flags</code> indicates the array
       structure and whether associative arrays should be used.
       <table class="doctable table">
        <caption><strong><span class="function">oci_fetch_all</span> Array Structure Modes</strong></caption>
        
         <thead>
          <tr>
           <th>Constant</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-fetchstatement-by-row">OCI_FETCHSTATEMENT_BY_ROW</a></code></strong></td>
           <td>The outer array will contain one sub-array per query
           row.</td>
          </tr>

          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-fetchstatement-by-column">OCI_FETCHSTATEMENT_BY_COLUMN</a></code></strong></td>
           <td>The outer array will contain one sub-array per query
           column. This is the default.</td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
        Arrays can be indexed either by column heading or numerically.
        Only one index mode will be returned.
       <table class="doctable table">
        <caption><strong><span class="function">oci_fetch_all</span> Array Index Modes</strong></caption>
        
         <thead>
          <tr>
           <th>Constant</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-num">OCI_NUM</a></code></strong></td>
           <td>Numeric indexes are used for each column&#039;s array.</td>
          </tr>

          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-assoc">OCI_ASSOC</a></code></strong></td>
           <td>Associative indexes are used for each column&#039;s
           array. This is the default.</td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       Use the addition operator &quot;+&quot; to choose a combination
       of array structure and index modes.
      </p>
      <p class="para">
       Oracle&#039;s default, non-case sensitive column names will have
       uppercase array keys.  Case-sensitive column names will have
       array keys using the exact column case.
       Use <span class="function">var_dump</span>
       on <code class="parameter">output</code> to verify the appropriate case
       to use for each query.
      </p>
      <p class="para">
        Queries that have more than one column with the same name
        should use column aliases.  Otherwise only one of the columns
        will appear in an associative array.
      </p>


function_name: oci_fetch_array
name: statement
type: resource
description:
<p class="para">A valid OCI8 statement
identifier created by <span class="function">oci_parse</span> and executed
by <span class="function">oci_execute</span>, or a <code class="literal">REF
CURSOR</code> statement identifier.</p>
       <p class="para">
        Can also be a statement identifier returned by <span class="function">oci_get_implicit_resultset</span>.
       </p>


function_name: oci_fetch_array
name: mode
type: int
initializer: OCI_BOTH | OCI_RETURN_NULLS
description:
<p class="para">
       An optional second parameter can be any combination of the following
       constants:
       <table class="doctable table">
        <caption><strong><span class="function">oci_fetch_array</span> Modes</strong></caption>
        
         <thead>
          <tr>
           <th>Constant</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-both">OCI_BOTH</a></code></strong></td>
           <td>Returns an array with both associative and numeric
            indices. This is the same
            as <strong><code><a href="oci8.constants.html#constant.oci-assoc">OCI_ASSOC</a></code></strong>
            + <strong><code><a href="oci8.constants.html#constant.oci-num">OCI_NUM</a></code></strong> and is the default
            behavior.</td>
          </tr>

          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-assoc">OCI_ASSOC</a></code></strong></td>
           <td>Returns an associative array.</td>
          </tr>

          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-num">OCI_NUM</a></code></strong></td>
           <td>Returns a numeric array.</td>
          </tr>

          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-return-nulls">OCI_RETURN_NULLS</a></code></strong></td>
           <td>Creates elements for <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> fields.  The element
             values will be a PHP <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="oci8.constants.html#constant.oci-return-lobs">OCI_RETURN_LOBS</a></code></strong></td>
           <td>Returns the contents of LOBs instead of the LOB
             descriptors.</td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       The default <code class="parameter">mode</code> is <strong><code><a href="oci8.constants.html#constant.oci-both">OCI_BOTH</a></code></strong>.
      </p>
      <p class="para">
       Use the addition operator &quot;+&quot; to specify more than
       one mode at a time.
      </p>


function_name: oci_get_implicit_resultset
name: statement
type: resource
description:
<p class="para">A valid OCI8 statement identifier created
         by <span class="function">oci_parse</span> and executed
         by <span class="function">oci_execute</span>.  The statement
         identifier may or may not be associated with a SQL statement
         that returns Implicit Result Sets.
       </p>


function_name: oci_new_collection
name: connection
type: resource
description:
<p class="para">
       An Oracle connection identifier, returned by 
       <span class="function">oci_connect</span> or <span class="function">oci_pconnect</span>.
      </p>


function_name: oci_new_collection
name: schema
type: null
description:
<p class="para">
       Should point to the scheme, where the named type was created. The name
       of the current user is used when <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> is passed.
      </p>


function_name: oci_new_descriptor
name: type
type: int
description:
<p class="para">
       Valid values for <code class="parameter">type</code> are: 
       <strong><code><a href="oci8.constants.html#constant.oci-dtype-file">OCI_DTYPE_FILE</a></code></strong>, <strong><code><a href="oci8.constants.html#constant.oci-dtype-lob">OCI_DTYPE_LOB</a></code></strong> and
       <strong><code><a href="oci8.constants.html#constant.oci-dtype-rowid">OCI_DTYPE_ROWID</a></code></strong>.
      </p>


function_name: oci_parse
name: connection
type: resource
description:
<p class="para">
       An Oracle connection identifier, returned by 
       <span class="function">oci_connect</span>, <span class="function">oci_pconnect</span>, or <span class="function">oci_new_connect</span>.
      </p>


function_name: oci_parse
name: sql
type: string
description:
<p class="para">
       The SQL or PL/SQL statement.
      </p>
      <p class="para">
       SQL statements <em>should not</em> end with a
       semi-colon (&quot;;&quot;).  PL/SQL
       statements <em>should</em> end with a semi-colon
       (&quot;;&quot;).
      </p>


function_name: oci_register_taf_callback
name: callback
type: null
description:
<p class="para">
       A user-defined callback to register for Oracle TAF. It can be a
       string of the function name or a Closure (anonymous function).
      </p>
      <p class="para">
       The interface of a TAF user-defined callback function is as follows:
      </p>
      <div class="methodsynopsis dc-description"><span class="type">int</span> <span class="methodname">userCallbackFn</span>(<span class="methodparam"><span class="type">resource</span> <code class="parameter">$connection</code></span>, <span class="methodparam"><span class="type">int</span> <code class="parameter">$event</code></span>, <span class="methodparam"><span class="type">int</span> <code class="parameter">$type</code></span>)</div>

      <p class="para">
       See the parameter description and an example on <a href="oci8.taf.html" class="link">
       OCI8 Transparent Application Failover (TAF) Support</a> page.
      </p>


function_name: oci_result
name: column
type: int
description:
<p class="para">
       Can be either use the column number (1-based) or the column name.
       The case of the column name must be the case that Oracle meta data
       describes the column as, which is uppercase for columns created
       case insensitively.
      </p>


function_name: oci_rollback
name: connection
type: resource
description:
<p class="para">
       An Oracle connection identifier, returned by
       <span class="function">oci_connect</span>, <span class="function">oci_pconnect</span>
       or <span class="function">oci_new_connect</span>.
      </p>


function_name: oci_set_action
name: connection
type: resource
description:
<p class="para">An Oracle connection identifier,
returned by <span class="function">oci_connect</span>, <span class="function">oci_pconnect</span>,
or <span class="function">oci_new_connect</span>.</p>


function_name: oci_set_call_timeout
name: timeout
type: int
description:
<p class="para">
       The maximum time in milliseconds that any single round-trip between PHP and Oracle Database may take.
      </p>


function_name: oci_set_edition
name: edition
type: string
description:
<p class="para">
       Oracle Database edition name previously created with the <acronym class="acronym">SQL</acronym>
       &quot;<code class="literal">CREATE EDITION</code>&quot; command.
      </p>


function_name: oci_set_module_name
name: name
type: string
description:
<p class="para">
       User chosen <span class="type">string</span> up to 48 bytes long.
      </p>


function_name: oci_statement_type
name: statement
type: resource
description:
<p class="para">
       A valid OCI8 statement identifier from <span class="function">oci_parse</span>.
      </p>


function_name: OCILob.flush
name: flag
type: int
description:
<p class="para">
       By default, resources are not freed, but using flag 
       <strong><code>OCI_LOB_BUFFER_FREE</code></strong> you can do it explicitly.
       Be sure you know what you&#039;re doing - next read/write operation to the
       same part of LOB will involve a round-trip to the server and initialize
       new buffer resources. It is recommended to use 
       <strong><code>OCI_LOB_BUFFER_FREE</code></strong> flag only when you are not
       going to work with the LOB anymore.
      </p>


function_name: OCILob.read
name: length
type: int
description:
<p class="para">
       The length of data to read, in bytes (BLOB) or characters (CLOB).
       Large values will be rounded down to 1 MB.
      </p>


function_name: OCILob.save
name: offset
type: int
description:
<p class="para">
       Can be used to indicate offset from the beginning of the large object.
      </p>


function_name: OCILob.seek
name: offset
type: int
description:
<p class="para">
       Indicates the amount of bytes, on which internal pointer should be
       moved from the position, pointed by <code class="parameter">whence</code>.
      </p>


function_name: OCILob.seek
name: whence
type: int
description:
<p class="para">
       May be one of:
       <ul class="simplelist">
        <li>
         <strong><code><a href="oci8.constants.html#constant.oci-seek-set">OCI_SEEK_SET</a></code></strong> - sets the position equal to 
         <code class="parameter">offset</code>
        </li>
        <li>
         <strong><code><a href="oci8.constants.html#constant.oci-seek-cur">OCI_SEEK_CUR</a></code></strong> - adds <code class="parameter">offset</code> 
         bytes to the current position  
        </li>
        <li>
         <strong><code><a href="oci8.constants.html#constant.oci-seek-end">OCI_SEEK_END</a></code></strong> - adds <code class="parameter">offset</code>
         bytes to the end of large object (use negative value to move to a position
         before the end of large object)
        </li>
       </ul>
      </p>


function_name: OCILob.setBuffering
name: mode
type: bool
description:
<p class="para">
       <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> for on and <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> for off.
      </p>


function_name: OCILob.truncate
name: length
type: int
description:
<p class="para">
       If provided, this method will truncate the LOB to
       <code class="parameter">length</code> bytes. Otherwise, it will completely
       purge the LOB.
      </p>


function_name: OCILob.write
name: length
type: null
description:
<p class="para">
       If this parameter is an integer, writing will stop after
       <code class="parameter">length</code> bytes have been written or the end of
       <code class="parameter">data</code> is reached, whichever comes first.
      </p>


function_name: OCILob.writeTemporary
name: type
type: int
description:
<p class="para">
       Can be one of the following:
       <ul class="simplelist">
        <li>
         <strong><code><a href="oci8.constants.html#constant.oci-temp-blob">OCI_TEMP_BLOB</a></code></strong> is used to create temporary BLOBs 
        </li>
        <li>
         <strong><code><a href="oci8.constants.html#constant.oci-temp-clob">OCI_TEMP_CLOB</a></code></strong> is used to create
         temporary CLOBs
        </li>
       </ul>
      </p>


function_name: oci_internal_debug
name: onoff
type: bool
description:
<p class="para">
       Set this to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> to turn debug output off or <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to turn it on.
      </p>


function_name: pg_affected_rows
name: result
type: PgSql\Result
description:
<p class="para">An <span class="classname">PgSql\Result</span> instance, returned by <span class="function">pg_query</span>,
<span class="function">pg_query_params</span> or <span class="function">pg_execute</span>(among others).</p>


function_name: pg_client_encoding
name: connection
type: null
description:
<p class="para">An <span class="classname">PgSql\Connection</span> instance.
When <code class="parameter">connection</code> is <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the default connection is used.
The default connection is the last connection made by <span class="function">pg_connect</span>
or <span class="function">pg_pconnect</span>.
<div class="warning"><strong class="warning">Warning</strong><p class="simpara">As of PHP 8.1.0, using the default connection is deprecated.</p></div></p>


function_name: pg_connect
name: connection_string
type: string
description:
<p class="para">
       The <code class="parameter">connection_string</code> can be empty to use all default parameters, or it 
       can contain one or more parameter settings separated by whitespace. 
       Each parameter setting is in the form <code class="literal">keyword = value</code>. Spaces around 
       the equal sign are optional. To write an empty value or a value 
       containing spaces, surround it with single quotes, e.g., <code class="literal">keyword = 
       &#039;a value&#039;</code>. Single quotes and backslashes within the value must be 
       escaped with a backslash, i.e., \&#039; and \\.  
      </p>
      <p class="para">
       The currently recognized parameter keywords are:
       <code class="parameter">host</code>, <code class="parameter">hostaddr</code>, <code class="parameter">port</code>,
       <code class="parameter">dbname</code> (defaults to value of <code class="parameter">user</code>),
       <code class="parameter">user</code>,
       <code class="parameter">password</code>, <code class="parameter">connect_timeout</code>,
       <code class="parameter">options</code>, <code class="parameter">tty</code> (ignored), <code class="parameter">sslmode</code>,
       <code class="parameter">requiressl</code> (deprecated in favor of <code class="parameter">sslmode</code>), and
       <code class="parameter">service</code>.  Which of these arguments exist depends
       on your PostgreSQL version.
      </p>
      <p class="para">
       The <code class="parameter">options</code> parameter can be used to set command line parameters 
       to be invoked by the server.
      </p>


function_name: pg_connect
name: flags
type: int
description:
<p class="para">
       If <strong><code><a href="pgsql.constants.html#constant.pgsql-connect-force-new">PGSQL_CONNECT_FORCE_NEW</a></code></strong> is passed, then a new connection
       is created, even if the <code class="parameter">connection_string</code> is identical to
       an existing connection.
      </p>
      <p class="para">
       If <strong><code><a href="pgsql.constants.html#constant.pgsql-connect-async">PGSQL_CONNECT_ASYNC</a></code></strong> is given, then the
       connection is established asynchronously. The state of the connection
       can then be checked via <span class="function">pg_connect_poll</span> or
       <span class="function">pg_connection_status</span>.
      </p>


function_name: pg_convert
name: flags
type: int
description:
<p class="para">
       Any number of <strong><code><a href="pgsql.constants.html#constant.pgsql-conv-ignore-default">PGSQL_CONV_IGNORE_DEFAULT</a></code></strong>,
       <strong><code><a href="pgsql.constants.html#constant.pgsql-conv-force-null">PGSQL_CONV_FORCE_NULL</a></code></strong> or
       <strong><code><a href="pgsql.constants.html#constant.pgsql-conv-ignore-not-null">PGSQL_CONV_IGNORE_NOT_NULL</a></code></strong>, combined.
      </p>


function_name: pg_copy_from
name: table_name
type: string
description:
<p class="para">
       Name of the table into which to copy the <code class="parameter">rows</code>.
      </p>


function_name: pg_copy_from
name: rows
type: array
description:
<p class="para">
       An <span class="type">array</span> of data to be copied into <code class="parameter">table_name</code>.
       Each value in <code class="parameter">rows</code> becomes a row in <code class="parameter">table_name</code>.
       Each value in <code class="parameter">rows</code> should be a delimited string of the values
       to insert into each field.  Values should be linefeed terminated.
      </p>


function_name: pg_copy_from
name: separator
type: string
initializer: "\t"
description:
<p class="para">
       The token that separates values for each field in each element of
       <code class="parameter">rows</code>.  Default is <code class="literal">\t</code>.
      </p>


function_name: pg_copy_from
name: null_as
type: string
initializer: "\\\\N"
description:
<p class="para">
       How SQL <code class="literal">NULL</code> values are represented in the
       <code class="parameter">rows</code>.  Default is <code class="literal">\\N</code> (<code class="literal">&quot;\\\\N&quot;</code>).
      </p>


function_name: pg_copy_to
name: table_name
type: string
description:
<p class="para">
       Name of the table from which to copy the data into <code class="parameter">rows</code>.
      </p>


function_name: pg_delete
name: conditions
type: array
description:
<p class="para">
       An <span class="type">array</span> whose keys are field names in the table <code class="parameter">table_name</code>,
       and whose values are the values of those fields that are to be deleted.
      </p>


function_name: pg_delete
name: flags
type: int
description:
<p class="para">
       Any number of <strong><code><a href="pgsql.constants.html#constant.pgsql-conv-force-null">PGSQL_CONV_FORCE_NULL</a></code></strong>,
       <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-no-conv">PGSQL_DML_NO_CONV</a></code></strong>,
       <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-escape">PGSQL_DML_ESCAPE</a></code></strong>,
       <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-exec">PGSQL_DML_EXEC</a></code></strong>,
       <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-async">PGSQL_DML_ASYNC</a></code></strong> or
       <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-string">PGSQL_DML_STRING</a></code></strong> combined. If <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-string">PGSQL_DML_STRING</a></code></strong> is part of the
       <code class="parameter">flags</code> then query string is returned. When <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-no-conv">PGSQL_DML_NO_CONV</a></code></strong>
       or <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-escape">PGSQL_DML_ESCAPE</a></code></strong> is set, it does not call <span class="function">pg_convert</span> internally.
      </p>


function_name: pg_escape_bytea
name: connection
type: PgSql\Connection
description:
<p class="para">An <span class="classname">PgSql\Connection</span> instance.
When <code class="parameter">connection</code> is unspecified, the default connection is used.
The default connection is the last connection made by <span class="function">pg_connect</span>
or <span class="function">pg_pconnect</span>.
<div class="warning"><strong class="warning">Warning</strong><p class="simpara">As of PHP 8.1.0, using the default connection is deprecated.</p></div></p>


function_name: pg_escape_bytea
name: data
type: string
description:
<p class="para">
       A <span class="type">string</span> containing text or binary data to be inserted into a bytea
       column.
      </p>


function_name: pg_escape_identifier
name: data
type: string
description:
<p class="para">
       A <span class="type">string</span> containing text to be escaped.
      </p>


function_name: pg_execute
name: stmtname
type: string
description:
<p class="para">
       The name of the prepared statement to execute.  if
       &quot;&quot; is specified, then the unnamed statement is executed.  The name must have
       been previously prepared using <span class="function">pg_prepare</span>, 
       <span class="function">pg_send_prepare</span> or a <code class="literal">PREPARE</code> SQL
       command.
      </p>


function_name: pg_execute
name: params
type: array
description:
<p class="para">
        An array of parameter values to substitute for the $1, $2, etc. placeholders
        in the original prepared query string.  The number of elements in the array
        must match the number of placeholders.
      </p>
      <div class="warning"><strong class="warning">Warning</strong>
       <p class="para">
        Elements are converted to strings by calling this function.
       </p>
      </div>


function_name: pg_fetch_all
name: mode
type: int
description:
<p class="para">
An optional parameter that controls how the returned <span class="type">array</span> is indexed.
<code class="parameter">mode</code> is a constant and can take the following values:
<strong><code><a href="pgsql.constants.html#constant.pgsql-assoc">PGSQL_ASSOC</a></code></strong>, <strong><code><a href="pgsql.constants.html#constant.pgsql-num">PGSQL_NUM</a></code></strong> and <strong><code><a href="pgsql.constants.html#constant.pgsql-both">PGSQL_BOTH</a></code></strong>.
Using <strong><code><a href="pgsql.constants.html#constant.pgsql-num">PGSQL_NUM</a></code></strong>, the function will return an array with numerical indices,
using <strong><code><a href="pgsql.constants.html#constant.pgsql-assoc">PGSQL_ASSOC</a></code></strong> it will return only associative indices
while <strong><code><a href="pgsql.constants.html#constant.pgsql-both">PGSQL_BOTH</a></code></strong> will return both numerical and associative indices.</p>


function_name: pg_fetch_array
name: row
type: null
description:
<p class="para">
       Row number in result to fetch. Rows are numbered from 0 upwards. If
       omitted or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the next row is fetched.
      </p>


function_name: pg_fetch_object
name: constructor_args
type: array
initializer: []
description:
<p class="para">
        An optional <span class="type">array</span> of parameters to pass to the constructor
        for <code class="parameter">class</code> objects.
       </p>


function_name: pg_fetch_result
name: row
type: null
description:
<p class="para">
       Row number in result to fetch.  Rows are numbered from 0 upwards.  If omitted,
       next row is fetched.
      </p>


function_name: pg_fetch_result
name: field
type: mixed
description:
<p class="para">       
       A <span class="type">string</span> representing the name of the field (column) to fetch, otherwise
       an <span class="type">int</span> representing the field number to fetch.  Fields are
       numbered from 0 upwards.
      </p>


function_name: pg_field_is_null
name: row
type: null
description:
<p class="para">
       Row number in result to fetch.  Rows are numbered from 0 upwards.  If omitted,
       current row is fetched.
      </p>


function_name: pg_field_is_null
name: field
type: mixed
description:
<p class="para">
        Field number (starting from 0) as an <span class="type">int</span> or 
        the field name as a <span class="type">string</span>.
       </p>


function_name: pg_field_num
name: field
type: string
description:
<p class="para">
        The name of the field.
        The given name is treated like an identifier in an SQL command,
        that is, it is downcased unless double-quoted.
       </p>


function_name: pg_field_prtlen
name: row
type: null
description:
<p class="para">
       Row number in result.  Rows are numbered from 0 upwards.  If omitted,
       current row is fetched.
      </p>


function_name: pg_field_table
name: oid_only
type: bool
description:
<p class="para">
        By default the tables name that field belongs to is returned but
        if <code class="parameter">oid_only</code> is set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, then the
        oid will instead be returned.
       </p>


function_name: pg_insert
name: table_name
type: string
description:
<p class="para">
       Name of the table into which to insert rows.  The table <code class="parameter">table_name</code> must at least
       have as many columns as <code class="parameter">values</code> has elements.
      </p>


function_name: pg_insert
name: values
type: array
description:
<p class="para">
       An <span class="type">array</span> whose keys are field names in the table <code class="parameter">table_name</code>,
       and whose values are the values of those fields that are to be inserted.
      </p>


function_name: pg_insert
name: flags
type: int
description:
<p class="para">
       Any number of <strong><code>PGSQL_CONV_OPTS</code></strong>,
       <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-no-conv">PGSQL_DML_NO_CONV</a></code></strong>,
       <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-escape">PGSQL_DML_ESCAPE</a></code></strong>,
       <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-exec">PGSQL_DML_EXEC</a></code></strong>,
       <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-async">PGSQL_DML_ASYNC</a></code></strong> or
       <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-string">PGSQL_DML_STRING</a></code></strong> combined. If <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-string">PGSQL_DML_STRING</a></code></strong> is part of the
       <code class="parameter">flags</code> then query string is returned. When <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-no-conv">PGSQL_DML_NO_CONV</a></code></strong>
       or <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-escape">PGSQL_DML_ESCAPE</a></code></strong> is set, it does not call <span class="function">pg_convert</span> internally.
      </p>


function_name: pg_last_notice
name: mode
type: int
description:
<p class="para">
       One of <strong><code><a href="pgsql.constants.html#constant.pgsql-notice-last">PGSQL_NOTICE_LAST</a></code></strong> (to return last notice),
       <strong><code><a href="pgsql.constants.html#constant.pgsql-notice-all">PGSQL_NOTICE_ALL</a></code></strong> (to return all notices),
       or <strong><code><a href="pgsql.constants.html#constant.pgsql-notice-clear">PGSQL_NOTICE_CLEAR</a></code></strong> (to clear notices).
      </p>


function_name: pg_lo_close
name: lob
type: PgSql\Lob
description:
<p class="para">An <span class="classname">PgSql\Lob</span> instance, returned by <span class="function">pg_lo_open</span>.</p>


function_name: pg_lo_create
name: object_id
type: mixed
description:
<p class="para">
       If an <code class="parameter">object_id</code> is given the function
       will try to create a large object with this id, else a free
       object id is assigned by the server. The parameter
       relies on functionality that first
       appeared in PostgreSQL 8.1.
      </p>


function_name: pg_lo_export
name: oid
type: int
description:
<p class="para">
       The <var class="varname">OID</var> of the large object in the database.
      </p>


function_name: pg_lo_export
name: pathname
type: string
description:
<p class="para">
       The full path and file name of the file in which to write the
       large object on the client filesystem.
      </p>


function_name: pg_lo_import
name: pathname
type: string
description:
<p class="para">
       The full path and file name of the file on the client
       filesystem from which to read the large object data.
      </p>


function_name: pg_lo_open
name: mode
type: string
description:
<p class="para">
       Can be either &quot;r&quot; for read-only, &quot;w&quot; for write only or &quot;rw&quot; for read and 
       write.
      </p>


function_name: pg_lo_seek
name: whence
type: int
description:
<p class="para">
       One of the constants <strong><code><a href="pgsql.constants.html#constant.pgsql-seek-set">PGSQL_SEEK_SET</a></code></strong> (seek from object start), 
       <strong><code><a href="pgsql.constants.html#constant.pgsql-seek-cur">PGSQL_SEEK_CUR</a></code></strong> (seek from current position)
       or <strong><code><a href="pgsql.constants.html#constant.pgsql-seek-end">PGSQL_SEEK_END</a></code></strong> (seek from object end) .
      </p>


function_name: pg_lo_write
name: data
type: string
description:
<p class="para">
       The data to be written to the large object.  If <code class="parameter">length</code> is
       an <span class="type">int</span> and is less than the length of <code class="parameter">data</code>, only
       <code class="parameter">length</code> bytes will be written.
      </p>


function_name: pg_lo_write
name: length
type: null
description:
<p class="para">
       An optional maximum number of bytes to write.  Must be greater than zero
       and no greater than the length of <code class="parameter">data</code>.  Defaults to
       the length of <code class="parameter">data</code>.
      </p>


function_name: pg_meta_data
name: extended
type: bool
description:
<p class="para">
       Flag for returning extended meta data. Default to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>.
      </p>


function_name: pg_parameter_status
name: param_name
type: string
description:
<p class="para">
         Possible <code class="parameter">param_name</code> values include <code class="literal">server_version</code>, 
        <code class="literal">server_encoding</code>, <code class="literal">client_encoding</code>, 
        <code class="literal">is_superuser</code>, <code class="literal">session_authorization</code>, 
        <code class="literal">DateStyle</code>, <code class="literal">TimeZone</code>, and 
        <code class="literal">integer_datetimes</code>.  Note that this value is case-sensitive.
        </p>


function_name: pg_pconnect
name: connection_string
type: string
description:
<p class="para">
       The <code class="parameter">connection_string</code> can be empty to use all default parameters, or it 
       can contain one or more parameter settings separated by whitespace. 
       Each parameter setting is in the form <code class="literal">keyword = value</code>. Spaces around 
       the equal sign are optional. To write an empty value or a value 
       containing spaces, surround it with single quotes, e.g., <code class="literal">keyword = 
       &#039;a value&#039;</code>. Single quotes and backslashes within the value must be 
       escaped with a backslash, i.e., \&#039; and \\.  
      </p>
      <p class="para">
       The currently recognized parameter keywords are:
       <code class="parameter">host</code>, <code class="parameter">hostaddr</code>, <code class="parameter">port</code>,
       <code class="parameter">dbname</code>, <code class="parameter">user</code>,
       <code class="parameter">password</code>, <code class="parameter">connect_timeout</code>,
       <code class="parameter">options</code>, <code class="parameter">tty</code> (ignored), <code class="parameter">sslmode</code>,
       <code class="parameter">requiressl</code> (deprecated in favor of <code class="parameter">sslmode</code>), and
       <code class="parameter">service</code>.  Which of these arguments exist depends
       on your PostgreSQL version.
      </p>


function_name: pg_pconnect
name: flags
type: int
description:
<p class="para">
       If <strong><code><a href="pgsql.constants.html#constant.pgsql-connect-force-new">PGSQL_CONNECT_FORCE_NEW</a></code></strong> is passed, then a new connection
       is created, even if the <code class="parameter">connection_string</code> is identical to
       an existing connection.
      </p>


function_name: pg_prepare
name: stmtname
type: string
description:
<p class="para">
       The name to give the prepared statement.  Must be unique per-connection.  If
       &quot;&quot; is specified, then an unnamed statement is created, overwriting any
       previously defined unnamed statement.
      </p>


function_name: pg_prepare
name: query
type: string
description:
<p class="para">
       The parameterized SQL statement.  Must contain only a single statement.
       (multiple statements separated by semi-colons are not allowed.)  If any parameters 
       are used, they are referred to as $1, $2, etc.
      </p>


function_name: pg_put_line
name: data
type: string
description:
<p class="para">
       A line of text to be sent directly to the PostgreSQL backend.  A <code class="literal">NULL</code>
       terminator is added automatically.
      </p>


function_name: pg_query_params
name: query
type: string
description:
<p class="para">
       The parameterized SQL statement.  Must contain only a single statement.
       (multiple statements separated by semi-colons are not allowed.)  If any parameters 
       are used, they are referred to as $1, $2, etc.
      </p>
      <p class="para">
       User-supplied values should always be passed as parameters, not
       interpolated into the query string, where they form possible
       <a href="security.database.sql-injection.html" class="link"> SQL injection</a>
       attack vectors and introduce bugs when handling data containing quotes.
       If for some reason you cannot use a parameter, ensure that interpolated
       values are <a href="function.pg-escape-string.html" class="link">properly escaped</a>.
      </p>


function_name: pg_query_params
name: params
type: array
description:
<p class="para">
        An array of parameter values to substitute for the $1, $2, etc. placeholders
        in the original prepared query string.  The number of elements in the array
        must match the number of placeholders.
      </p>
      <p class="para">
       Values intended for <code class="literal">bytea</code> fields are not supported as
       parameters. Use <span class="function">pg_escape_bytea</span> instead, or use the
       large object functions.
      </p>


function_name: pg_query
name: query
type: string
description:
<p class="para">
       The SQL statement or statements to be executed. When multiple statements are passed to the function,
       they are automatically executed as one transaction, unless there are explicit BEGIN/COMMIT commands
       included in the query string. However, using multiple transactions in one function call is not recommended.
      </p>
      <div class="warning"><strong class="warning">Warning</strong>
       <p class="para">
        String interpolation of user-supplied data is extremely dangerous and is
        likely to lead to <a href="security.database.sql-injection.html" class="link">SQL
        injection</a> vulnerabilities. In most cases
        <span class="function">pg_query_params</span> should be preferred, passing
        user-supplied values as parameters rather than substituting them into
        the query string.
       </p>
       <p class="para">
        Any user-supplied data substituted directly into a query string should
        be <a href="function.pg-escape-string.html" class="link">properly escaped</a>.
       </p>
      </div>


function_name: pg_result_error_field
name: field_code
type: int
description:
<p class="para">
         Possible <code class="parameter">field_code</code> values are: <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-severity">PGSQL_DIAG_SEVERITY</a></code></strong>,
         <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-sqlstate">PGSQL_DIAG_SQLSTATE</a></code></strong>, <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-message-primary">PGSQL_DIAG_MESSAGE_PRIMARY</a></code></strong>,
         <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-message-detail">PGSQL_DIAG_MESSAGE_DETAIL</a></code></strong>,
         <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-message-hint">PGSQL_DIAG_MESSAGE_HINT</a></code></strong>, <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-statement-position">PGSQL_DIAG_STATEMENT_POSITION</a></code></strong>,
         <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-internal-position">PGSQL_DIAG_INTERNAL_POSITION</a></code></strong> (PostgreSQL 8.0+ only),
         <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-internal-query">PGSQL_DIAG_INTERNAL_QUERY</a></code></strong> (PostgreSQL 8.0+ only),
         <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-context">PGSQL_DIAG_CONTEXT</a></code></strong>, <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-source-file">PGSQL_DIAG_SOURCE_FILE</a></code></strong>,
         <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-source-line">PGSQL_DIAG_SOURCE_LINE</a></code></strong> or
         <strong><code><a href="pgsql.constants.html#constant.pgsql-diag-source-function">PGSQL_DIAG_SOURCE_FUNCTION</a></code></strong>.
        </p>


function_name: pg_result_seek
name: row
type: int
description:
<p class="para">
       Row to move the internal offset to in the <span class="classname">PgSql\Result</span> instance.
       Rows are numbered starting from zero.
      </p>


function_name: pg_result_status
name: mode
type: int
description:
<p class="para">
       Either <strong><code><a href="pgsql.constants.html#constant.pgsql-status-long">PGSQL_STATUS_LONG</a></code></strong> to return the numeric status 
       of the <code class="parameter">result</code>, or <strong><code><a href="pgsql.constants.html#constant.pgsql-status-string">PGSQL_STATUS_STRING</a></code></strong> 
       to return the command tag of the <code class="parameter">result</code>.
       If not specified, <strong><code><a href="pgsql.constants.html#constant.pgsql-status-long">PGSQL_STATUS_LONG</a></code></strong> is the default.
      </p>


function_name: pg_select
name: conditions
type: array
description:
<p class="para">
        An <span class="type">array</span> whose keys are field names in the table <code class="parameter">table_name</code>,
        and whose values are the conditions that a row must meet to be retrieved.
       </p>


function_name: pg_select
name: flags
type: int
description:
<p class="para">
        Any number of <strong><code><a href="pgsql.constants.html#constant.pgsql-conv-force-null">PGSQL_CONV_FORCE_NULL</a></code></strong>,
        <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-no-conv">PGSQL_DML_NO_CONV</a></code></strong>,
        <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-escape">PGSQL_DML_ESCAPE</a></code></strong>,
        <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-exec">PGSQL_DML_EXEC</a></code></strong>,
        <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-async">PGSQL_DML_ASYNC</a></code></strong> or
        <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-string">PGSQL_DML_STRING</a></code></strong> combined. If <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-string">PGSQL_DML_STRING</a></code></strong> is part of the
        <code class="parameter">flags</code> then the query string is returned. When <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-no-conv">PGSQL_DML_NO_CONV</a></code></strong>
        or <strong><code><a href="pgsql.constants.html#constant.pgsql-dml-escape">PGSQL_DML_ESCAPE</a></code></strong> is set, it does not call <span class="function">pg_convert</span> internally.
       </p>


function_name: pg_select
name: mode
type: int
description:
<p class="para">
        Any number of <strong><code><a href="pgsql.constants.html#constant.pgsql-assoc">PGSQL_ASSOC</a></code></strong>,
        <strong><code><a href="pgsql.constants.html#constant.pgsql-num">PGSQL_NUM</a></code></strong> or
        <strong><code><a href="pgsql.constants.html#constant.pgsql-both">PGSQL_BOTH</a></code></strong>
        If <strong><code><a href="pgsql.constants.html#constant.pgsql-assoc">PGSQL_ASSOC</a></code></strong> is set the return value will be an associative <span class="type">array</span>,
        with <strong><code><a href="pgsql.constants.html#constant.pgsql-num">PGSQL_NUM</a></code></strong> the return value will be an <span class="type">array</span>, and
        with <strong><code><a href="pgsql.constants.html#constant.pgsql-both">PGSQL_BOTH</a></code></strong> the return value will be both an associative and
        numerically indexed <span class="type">array</span>.
      </p>


function_name: pg_send_execute
name: statement_name
type: string
description:
<p class="para">
       The name of the prepared statement to execute.  If
       &quot;&quot; is specified, then the unnamed statement is executed.  The name must have
       been previously prepared using <span class="function">pg_prepare</span>, 
       <span class="function">pg_send_prepare</span> or a <code class="literal">PREPARE</code> SQL
       command.
      </p>


function_name: pg_send_execute
name: params
type: array
description:
<p class="para">
        An array of parameter values to substitute for the $1, $2, etc. placeholders
        in the original prepared query string.  The number of elements in the array
        must match the number of placeholders.
      </p>


function_name: pg_send_query
name: query
type: string
description:
<p class="para">
       The SQL statement or statements to be executed.
      </p>
      <p class="para">
       Data inside the query should be <a href="function.pg-escape-string.html" class="link">properly escaped</a>.
      </p>


function_name: pg_set_client_encoding
name: encoding
type: string
description:
<p class="para">
       The required client encoding.  One of <code class="literal">SQL_ASCII</code>, <code class="literal">EUC_JP</code>, 
       <code class="literal">EUC_CN</code>, <code class="literal">EUC_KR</code>, <code class="literal">EUC_TW</code>, 
       <code class="literal">UNICODE</code>, <code class="literal">MULE_INTERNAL</code>, <code class="literal">LATINX</code> (X=1...9), 
       <code class="literal">KOI8</code>, <code class="literal">WIN</code>, <code class="literal">ALT</code>, <code class="literal">SJIS</code>, 
       <code class="literal">BIG5</code> or <code class="literal">WIN1250</code>.
      </p>
      <p class="para">
       The exact list of available encodings depends on your PostgreSQL version, so check your
       PostgreSQL manual for a more specific list.
      </p>


function_name: pg_set_error_context_visibility
name: visibility
type: int
description:
<p class="para">
       The required visibility: <strong><code><a href="pgsql.constants.html#constant.pgsql-show-context-never">PGSQL_SHOW_CONTEXT_NEVER</a></code></strong>,
       <strong><code><a href="pgsql.constants.html#constant.pgsql-show-context-errors">PGSQL_SHOW_CONTEXT_ERRORS</a></code></strong>
       or <strong><code><a href="pgsql.constants.html#constant.pgsql-show-context-always">PGSQL_SHOW_CONTEXT_ALWAYS</a></code></strong>.
      </p>


function_name: pg_set_error_verbosity
name: verbosity
type: int
description:
<p class="para">
       The required verbosity: <strong><code><a href="pgsql.constants.html#constant.pgsql-errors-terse">PGSQL_ERRORS_TERSE</a></code></strong>,
       <strong><code><a href="pgsql.constants.html#constant.pgsql-errors-default">PGSQL_ERRORS_DEFAULT</a></code></strong>
       or <strong><code><a href="pgsql.constants.html#constant.pgsql-errors-verbose">PGSQL_ERRORS_VERBOSE</a></code></strong>.
      </p>


function_name: pg_trace
name: filename
type: string
description:
<p class="para">
       The full path and file name of the file in which to write the
       trace log.  Same as in <span class="function">fopen</span>.
      </p>


function_name: pg_trace
name: mode
type: string
initializer: "w"
description:
<p class="para">
       An optional file access mode, same as for <span class="function">fopen</span>.
      </p>


function_name: pg_trace
name: trace_mode
type: int
description:
<p class="para">
       An optional trace mode with the following constants
       <strong><code><a href="pgsql.constants.html#constant.pgsql-trace-suppress-timestamps">PGSQL_TRACE_SUPPRESS_TIMESTAMPS</a></code></strong> and
       <strong><code><a href="pgsql.constants.html#constant.pgsql-trace-regress-mode">PGSQL_TRACE_REGRESS_MODE</a></code></strong>
      </p>


function_name: pg_unescape_bytea
name: string
type: string
description:
<p class="para">
       A <span class="type">string</span> containing PostgreSQL bytea data to be converted into
       a PHP binary string.
      </p>


function_name: pg_update
name: values
type: array
description:
<p class="para">
       An <span class="type">array</span> whose keys are field names in the table <code class="parameter">table_name</code>,
       and whose values are what matched rows are to be updated to.
      </p>


function_name: pg_update
name: conditions
type: array
description:
<p class="para">
       An <span class="type">array</span> whose keys are field names in the table <code class="parameter">table_name</code>,
       and whose values are the conditions that a row must meet to be updated.
      </p>


function_name: SQLite3.backup
name: destination
type: SQLite3
description:
<p class="para">
      A database connection opened with  <span class="methodname">SQLite3::open</span>.
     </p>


function_name: SQLite3.backup
name: sourceDatabase
type: string
initializer: "main"
description:
<p class="para">
      The database name is <code class="literal">&quot;main&quot;</code> for the main database,
      <code class="literal">&quot;temp&quot;</code> for the temporary database,
      or the name specified after the <code class="literal">AS</code> keyword
      in an <code class="literal">ATTACH</code> statement for an attached database.
     </p>


function_name: SQLite3.backup
name: destinationDatabase
type: string
initializer: "main"
description:
<p class="para">
      Analogous to <code class="parameter">sourceDatabase</code>
      but for the <code class="parameter">destination</code>.
     </p>


function_name: SQLite3.busyTimeout
name: milliseconds
type: int
description:
<p class="para">
       The milliseconds to sleep. Setting this value to a value less than
       or equal to zero, will turn off an already set timeout handler.
      </p>


function_name: SQLite3.__construct
name: filename
type: string
description:
<p class="para">
       Path to the SQLite database, or <code class="literal">:memory:</code> to use in-memory database.
       If <code class="parameter">filename</code> is an empty string, then a private, temporary on-disk
       database will be created. This private database will be automatically
       deleted as soon as the database connection is closed.
      </p>


function_name: SQLite3.__construct
name: flags
type: int
initializer: SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE
description:
<p class="para">
          <strong><code><a href="sqlite3.constants.html#constant.sqlite3-open-create">SQLITE3_OPEN_CREATE</a></code></strong>: Create the database if it
          does not exist.
         </p>


function_name: SQLite3.__construct
name: encryptionKey
type: string
initializer: ""
description:
<p class="para">
       An optional encryption key used when encrypting and decrypting an
       SQLite database. If the SQLite encryption module is not installed,
       this parameter will have no effect.
      </p>


function_name: SQLite3.createAggregate
name: finalCallback
type: callable
description:
<p class="para">
       Callback function to aggregate the &quot;stepped&quot; data from each row. 
       Once all the rows have been processed, this function will be called
       and it should then take the data from the aggregation context and
       return the result. This callback function should return a type understood
       by SQLite (i.e. <a href="language.types.intro.html" class="link">scalar type</a>).
      </p>
      <p class="para">
       This function need to be defined as:
       <div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">fini</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$context</code></span>, <span class="methodparam"><span class="type">int</span> <code class="parameter">$rownumber</code></span>)</div>

       <dl>
        
         <dt><code class="parameter">context</code></dt>
         <dd>
          <p class="para">
           Holds the return value from the very last call to the step function.
          </p>
         </dd>
        
        
         <dt><code class="parameter">rownumber</code></dt>
         <dd>
          <p class="para">
           Always <code class="literal">0</code>.
          </p>
         </dd>
        
       </dl>
       The return value of this function will be used as the return value for
       the aggregate.
      </p>


function_name: SQLite3.createAggregate
name: argCount
type: int
initializer: -1
description:
<p class="para">
       The number of arguments that the SQL aggregate takes. If
       this parameter is negative, then the SQL aggregate may take
       any number of arguments.
      </p>


function_name: SQLite3.createCollation
name: callback
type: callable
description:
<p class="para">
      The name of a PHP function or user-defined function to apply as a
      callback, defining the behavior of the collation.  It should accept two
      values and return as <span class="function">strcmp</span> does, i.e. it should
      return -1, 1, or 0 if the first string sorts before, sorts after, or is
      equal to the second.
     </p>
      <p class="para">
       This function need to be defined as:
       <div class="methodsynopsis dc-description"><span class="type">int</span> <span class="methodname"><span class="replaceable">collation</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value1</code></span>, <span class="methodparam"><span class="type">mixed</span> <code class="parameter">$value2</code></span>)</div>

      </p>


function_name: SQLite3.createFunction
name: callback
type: callable
description:
<p class="para">
       The name of a PHP function or user-defined function to apply as a
       callback, defining the behavior of the SQL function.
      </p>
      <p class="para">
       This function need to be defined as:
       <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>, <span class="methodparam"><span class="type">mixed</span> <code class="parameter">...$values</code></span>)</div>

       <dl>
        
         <dt><code class="parameter">value</code></dt>
         <dd>
          <p class="para">
           The first argument passed to the SQL function.
          </p>
         </dd>
        
        
         <dt><code class="parameter">values</code></dt>
         <dd>
          <p class="para">
           Further arguments passed to the SQL function.
          </p>
         </dd>
        
       </dl>
      </p>


function_name: SQLite3.createFunction
name: flags
type: int
description:
<p class="para">
       A bitwise conjunction of flags. Currently, only
       <strong><code><a href="sqlite3.constants.html#constant.sqlite3-deterministic">SQLITE3_DETERMINISTIC</a></code></strong> is supported, which specifies
       that the function always returns the same result given the same inputs
       within a single SQL statement.
      </p>


function_name: SQLite3.enableExceptions
name: enable
type: bool
description:
<p class="para">
      When <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the <span class="classname">SQLite3</span> instance, and 
      <span class="classname">SQLite3Stmt</span> and <span class="classname">SQLite3Result</span>
      instances derived from it, will throw exceptions on error.
     </p>
     <p class="para">
      When <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>, the <span class="classname">SQLite3</span> instance, and
      <span class="classname">SQLite3Stmt</span> and <span class="classname">SQLite3Result</span>
      instances derived from it, will raise warnings on error.
     </p>
     <p class="para">
      For either mode, the error code and message, if any, will be available via
       <span class="methodname">SQLite3::lastErrorCode</span> and
       <span class="methodname">SQLite3::lastErrorMsg</span> respectively.
     </p>


function_name: SQLite3.exec
name: query
type: string
description:
<p class="para">
       The SQL query to execute (typically an INSERT, UPDATE, or DELETE
       query).
      </p>


function_name: SQLite3.loadExtension
name: name
type: string
description:
<p class="para">
       The name of the library to load. The library must be located in the
       directory specified in the configure option sqlite3.extension_dir.
      </p>


function_name: SQLite3.open
name: filename
type: string
description:
<p class="para">
       Path to the SQLite database, or <code class="literal">:memory:</code> to use in-memory database.
      </p>


function_name: SQLite3.openBlob
name: flags
type: int
description:
<p class="para">
       Either <strong><code><a href="sqlite3.constants.html#constant.sqlite3-open-readonly">SQLITE3_OPEN_READONLY</a></code></strong> or 
       <strong><code><a href="sqlite3.constants.html#constant.sqlite3-open-readwrite">SQLITE3_OPEN_READWRITE</a></code></strong> to open the stream
       for reading only, or for reading and writing, respectively.
      </p>


function_name: SQLite3.querySingle
name: entireRow
type: bool
description:
<p class="para">
       By default, <span class="function">querySingle</span> returns the value of the
       first column returned by the query. If
       <code class="parameter">entireRow</code> is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, then it returns an array
       of the entire first row.
      </p>


function_name: SQLite3.setAuthorizer
name: callback
type: null
description:
<p class="para">
      The <span class="type">callable</span> to be called.
     </p>
     <p class="para">
      If <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> is passed instead, this will disable the current authorizer callback.
     </p>


function_name: SQLite3Stmt.bindParam
name: param
type: int
description:
<p class="para">
       Either a <span class="type">string</span> (for named parameters) or an <span class="type">int</span>
       (for positional parameters) identifying the statement variable to which the
       value should be bound.
       If a named parameter does not start with a colon (<code class="literal">:</code>) or an
       at sign (<code class="literal">@</code>), a colon (<code class="literal">:</code>) is automatically preprended.
       Positional parameters start with <code class="literal">1</code>.
      </p>


function_name: SQLite3Stmt.bindParam
name: type
type: int
description:
<p class="para">
          <strong><code><a href="sqlite3.constants.html#constant.sqlite3-null">SQLITE3_NULL</a></code></strong>: The value is a NULL value.
         </p>


function_name: SQLite3Stmt.getSQL
name: expand
type: bool
description:
<p class="para">
      Whether to retrieve the expanded SQL. Passing <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> is only supported as
      of libsqlite 3.14.
     </p>


function_name: SQLite3Result.fetchArray
name: mode
type: int
description:
<p class="para">
          <strong><code><a href="sqlite3.constants.html#constant.sqlite3-both">SQLITE3_BOTH</a></code></strong>: returns an array indexed by both
          column name and number as returned in the corresponding result set,
          starting at column 0
         </p>


function_name: sqlsrv_begin_transaction
name: conn
type: resource
description:
<p class="para">
       The connection resource returned by a call to <span class="function">sqlsrv_connect</span>.
      </p>


function_name: sqlsrv_configure
name: setting
type: string
description:
<p class="para">
       The name of the setting to set. The possible values are 
       &quot;WarningsReturnAsErrors&quot;, &quot;LogSubsystems&quot;, and &quot;LogSeverity&quot;.
      </p>


function_name: sqlsrv_configure
name: value
type: mixed
description:
<p class="para">
       The value of the specified setting. The following table shows possible values:
          <table class="doctable table">
   <caption><strong>Error and Logging Setting Options</strong></caption>
   
    <thead>
     <tr>
      <th>Setting</th>
      <th>Options</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>WarningsReturnAsErrors</td>
      <td>1 (<strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>) or 0 (<strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>)</td>
     </tr>

     <tr>
      <td>LogSubsystems</td>
      <td>SQLSRV_LOG_SYSTEM_ALL (-1) 
      SQLSRV_LOG_SYSTEM_CONN (2) 
      SQLSRV_LOG_SYSTEM_INIT (1) 
      SQLSRV_LOG_SYSTEM_OFF (0) 
      SQLSRV_LOG_SYSTEM_STMT (4) 
      SQLSRV_LOG_SYSTEM_UTIL (8)</td>
     </tr>

     <tr>
      <td>LogSeverity</td>
      <td>SQLSRV_LOG_SEVERITY_ALL (-1) 
      SQLSRV_LOG_SEVERITY_ERROR (1) 
      SQLSRV_LOG_SEVERITY_NOTICE (4) 
      SQLSRV_LOG_SEVERITY_WARNING (2)</td>
     </tr>

    </tbody>
   
  </table>

      </p>


function_name: sqlsrv_connect
name: serverName
type: string
description:
<p class="para">
       The name of the server to which a connection is established. To connect 
       to a specific instance, follow the server name with a backward slash 
       and the instance name (e.g. serverName\sqlexpress).
      </p>


function_name: sqlsrv_connect
name: connectionInfo
type: array
description:
<p class="para">
       An associative array that specifies options for connecting to the server. 
       If values for the UID and PWD keys are not specified, the connection 
       will be attempted using Windows Authentication. For a complete list of supported 
       keys, see <a href="http://msdn.microsoft.com/en-us/library/ff628167.aspx" class="link external">&raquo;&nbsp;SQLSRV Connection Options</a>.
      </p>


function_name: sqlsrv_errors
name: errorsOrWarnings
type: int
description:
<p class="para">
       Determines whether error information, warning information, or both are 
       returned. If this parameter is not supplied, both error information and 
       warning information are returned. The following are the supported values 
       for this parameter: SQLSRV_ERR_ALL, SQLSRV_ERR_ERRORS, SQLSRV_ERR_WARNINGS.
      </p>


function_name: sqlsrv_execute
name: stmt
type: resource
description:
<p class="para">
       A statement resource returned by <span class="function">sqlsrv_prepare</span>.
      </p>


function_name: sqlsrv_fetch_array
name: fetchType
type: int
description:
<p class="para">
       A predefined constant specifying the type of array to return. Possible 
       values are <strong><code><a href="sqlsrv.constants.html#constant.sqlsrv-fetch-assoc">SQLSRV_FETCH_ASSOC</a></code></strong>, 
       <strong><code><a href="sqlsrv.constants.html#constant.sqlsrv-fetch-numeric">SQLSRV_FETCH_NUMERIC</a></code></strong>, and 
       <strong><code><a href="sqlsrv.constants.html#constant.sqlsrv-fetch-both">SQLSRV_FETCH_BOTH</a></code></strong> (the default).
      </p>
      <p class="para">
      A fetch type of SQLSRV_FETCH_ASSOC should not be used when consuming a 
      result set with multiple columns of the same name.
      </p>


function_name: sqlsrv_fetch_array
name: row
type: int
description:
<p class="para">
       Specifies the row to access in a result set that uses a scrollable cursor. 
       Possible values are <strong><code><a href="sqlsrv.constants.html#constant.sqlsrv-scroll-next">SQLSRV_SCROLL_NEXT</a></code></strong>, 
       <strong><code><a href="sqlsrv.constants.html#constant.sqlsrv-scroll-prior">SQLSRV_SCROLL_PRIOR</a></code></strong>, <strong><code><a href="sqlsrv.constants.html#constant.sqlsrv-scroll-first">SQLSRV_SCROLL_FIRST</a></code></strong>, 
       <strong><code><a href="sqlsrv.constants.html#constant.sqlsrv-scroll-last">SQLSRV_SCROLL_LAST</a></code></strong>, <strong><code><a href="sqlsrv.constants.html#constant.sqlsrv-scroll-absolute">SQLSRV_SCROLL_ABSOLUTE</a></code></strong> and, 
       <strong><code><a href="sqlsrv.constants.html#constant.sqlsrv-scroll-relative">SQLSRV_SCROLL_RELATIVE</a></code></strong> (the default). When this parameter 
       is specified, the <code class="parameter">fetchType</code> must be explicitly defined.
      </p>


function_name: sqlsrv_fetch_array
name: offset
type: int
description:
<p class="para">
       Specifies the row to be accessed if the row parameter is set to
       <strong><code><a href="sqlsrv.constants.html#constant.sqlsrv-scroll-absolute">SQLSRV_SCROLL_ABSOLUTE</a></code></strong> or
       <strong><code><a href="sqlsrv.constants.html#constant.sqlsrv-scroll-relative">SQLSRV_SCROLL_RELATIVE</a></code></strong>. Note that the first row in
       a result set has index 0.
      </p>


function_name: sqlsrv_fetch_object
name: stmt
type: resource
description:
<p class="para">
       A statement resource created by <span class="function">sqlsrv_query</span> or 
       <span class="function">sqlsrv_execute</span>.
      </p>


function_name: sqlsrv_fetch_object
name: className
type: string
description:
<p class="para">
       The name of the class to instantiate. If no class name is specified, 
       stdClass is instantiated.
      </p>


function_name: sqlsrv_fetch_object
name: ctorParams
type: array
description:
<p class="para">
       Values passed to the constructor of the specified class. If the constructor 
       of the specified class takes parameters, the ctorParams array must be 
       supplied.
      </p>


function_name: sqlsrv_fetch_object
name: row
type: int
description:
<p class="para">
       The row to be accessed. This parameter can only be used if the specified 
       statement was prepared with a scrollable cursor. In that case, this parameter 
       can take on one of the following values:
       <ul class="simplelist">
        <li>SQLSRV_SCROLL_NEXT</li>
        <li>SQLSRV_SCROLL_PRIOR</li>
        <li>SQLSRV_SCROLL_FIRST</li>
        <li>SQLSRV_SCROLL_LAST</li>
        <li>SQLSRV_SCROLL_ABSOLUTE</li>
        <li>SQLSRV_SCROLL_RELATIVE</li>
       </ul>
      </p>


function_name: sqlsrv_fetch
name: stmt
type: resource
description:
<p class="para">
       A statement resource created by executing <span class="function">sqlsrv_query</span> 
       or <span class="function">sqlsrv_execute</span>.
      </p>


function_name: sqlsrv_free_stmt
name: stmt
type: resource
description:
<p class="para">
       The statement for which resources are freed. 
       Note that <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> is a valid parameter value. This allows the function to be 
       called multiple times in a script. 
      </p>


function_name: sqlsrv_get_config
name: setting
type: string
description:
<p class="para">
       The name of the setting for which the value is returned. For a list of 
       configurable settings, see <span class="function">sqlsrv_configure</span>.
      </p>


function_name: sqlsrv_get_field
name: stmt
type: resource
description:
<p class="para">
       A statement resource returned by <span class="function">sqlsrv_query</span> or 
       <span class="function">sqlsrv_execute</span>.
      </p>


function_name: sqlsrv_get_field
name: fieldIndex
type: int
description:
<p class="para">
       The index of the field to be retrieved. Field indices start at 0. Fields 
       must be accessed in order. i.e. If you access field index 1, then field 
       index 0 will not be available.
      </p>


function_name: sqlsrv_get_field
name: getAsType
type: int
description:
<p class="para">
       The PHP data type for the returned field data. If this parameter is not 
       set, the field data will be returned as its default PHP data type.
       For information about default PHP data types, see 
       <a href="http://msdn.microsoft.com/en-us/library/cc296193.aspx" class="link external">&raquo;&nbsp;Default PHP Data Types</a> 
       in the Microsoft SQLSRV documentation.
      </p>


function_name: sqlsrv_num_fields
name: stmt
type: resource
description:
<p class="para">
       The statement for which the number of fields is returned. 
       <span class="function">sqlsrv_num_fields</span> can be called on a statement before 
       or after statement execution.
      </p>


function_name: sqlsrv_num_rows
name: stmt
type: resource
description:
<p class="para">
       The statement for which the row count is returned. The statement resource 
       must be created with a static or keyset cursor. For more information, see 
       <span class="function">sqlsrv_query</span>, <span class="function">sqlsrv_prepare</span>, or 
       <a href="http://msdn.microsoft.com/en-us/library/ee376927.aspx" class="link external">&raquo;&nbsp;Specifying a Cursor Type and Selecting Rows</a> 
       in the Microsoft SQLSRV documentation.
      </p>


function_name: sqlsrv_prepare
name: conn
type: resource
description:
<p class="para">
       A connection resource returned by <span class="function">sqlsrv_connect</span>.
      </p>


function_name: sqlsrv_prepare
name: params
type: array
description:
<p class="para">
       An array specifying parameter information when executing a parameterized 
       query. Array elements can be any of the following:
       <ul class="simplelist">
        <li>A literal value</li>
        <li>A PHP variable</li>
        <li>An array with this structure: 
        array($value [, $direction [, $phpType [, $sqlType]]])</li>
       </ul>
       The following table describes the elements in the array structure above:
       </p>
       <table class="doctable table">
       <caption><strong>Array structure</strong></caption>
       
        <thead>
         <tr>
          <th>Element</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>$value</td>
          <td>A literal value, a PHP variable, or a PHP by-reference variable.</td>
         </tr>

         <tr>
          <td>$direction (optional)</td>
          <td>One of the following SQLSRV constants used to indicate the 
          parameter direction: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. 
          The default value is SQLSRV_PARAM_IN.         </td>
         </tr>

         <tr>
          <td>$phpType (optional)</td>
          <td>A SQLSRV_PHPTYPE_* constant that specifies PHP data type of the 
          returned value.</td>
         </tr>

         <tr>
          <td>$sqlType (optional)</td>
          <td>A SQLSRV_SQLTYPE_* constant that specifies the SQL Server data 
          type of the input value.</td>
         </tr>

        </tbody>
       
      </table>


function_name: sqlsrv_prepare
name: options
type: array
description:
<p class="para">
       An array specifying query property options. The supported keys are described 
       in the following table:
      </p>
      <table class="doctable table">
       <caption><strong>Query Options</strong></caption>
       
        <thead>
         <tr>
          <th>Key</th>
          <th>Values</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>QueryTimeout</td>
          <td>A positive integer value.</td>
          <td>Sets the query timeout in seconds. By default, the driver will 
          wait indefinitely for results.</td>
         </tr>

         <tr>
          <td>SendStreamParamsAtExec</td>
          <td><strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> or <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> (the default is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>)</td>
          <td>Configures the driver to send all stream data at execution (<strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>), 
          or to send stream data in chunks (<strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>). By default, the value is set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>. 
          For more information, see <span class="function">sqlsrv_send_stream_data</span>.</td>
         </tr>

         <tr>
          <td>Scrollable</td>
          <td>SQLSRV_CURSOR_FORWARD, SQLSRV_CURSOR_STATIC, SQLSRV_CURSOR_DYNAMIC, 
          or SQLSRV_CURSOR_KEYSET</td>
          <td>See <a href="http://msdn.microsoft.com/en-us/library/ee376927.aspx" class="link external">&raquo;&nbsp;Specifying a Cursor Type and Selecting Rows</a> 
          in the Microsoft SQLSRV documentation.</td>
         </tr>

        </tbody>
       
      </table>


function_name: sqlsrv_query
name: params
type: array
description:
<p class="para">
       An array specifying parameter information when executing a parameterized query. 
       Array elements can be any of the following:
       <ul class="simplelist">
        <li>A literal value</li>
        <li>A PHP variable</li>
        <li>An array with this structure: 
        array($value [, $direction [, $phpType [, $sqlType]]])</li>
       </ul>
       The following table describes the elements in the array structure above:
       </p>
       <table class="doctable table">
       <caption><strong>Array structure</strong></caption>
       
        <thead>
         <tr>
          <th>Element</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>$value</td>
          <td>A literal value, a PHP variable, or a PHP by-reference variable.</td>
         </tr>

         <tr>
          <td>$direction (optional)</td>
          <td>One of the following SQLSRV constants used to indicate the 
          parameter direction: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. 
          The default value is SQLSRV_PARAM_IN.</td>
         </tr>

         <tr>
          <td>$phpType (optional)</td>
          <td>A SQLSRV_PHPTYPE_* constant that specifies PHP data type of the 
          returned value.</td>
         </tr>

         <tr>
          <td>$sqlType (optional)</td>
          <td>A SQLSRV_SQLTYPE_* constant that specifies the SQL Server data 
          type of the input value.</td>
         </tr>

        </tbody>
       
      </table>


function_name: sqlsrv_query
name: options
type: array
description:
<p class="para">
       An array specifying query property options. The supported keys are described 
       in the following table:
      </p>
      <table class="doctable table">
       <caption><strong>Query Options</strong></caption>
       
        <thead>
         <tr>
          <th>Key</th>
          <th>Values</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>QueryTimeout</td>
          <td>A positive integer value.</td>
          <td>Sets the query timeout in seconds. By default, the driver will 
          wait indefinitely for results.</td>
         </tr>

         <tr>
          <td>SendStreamParamsAtExec</td>
          <td><strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> or <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> (the default is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>)</td>
          <td>Configures the driver to send all stream data at execution (<strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>), 
          or to send stream data in chunks (<strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>). By default, the value is set 
          to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>. For more information, see <span class="function">sqlsrv_send_stream_data</span>.</td>
         </tr>

         <tr>
          <td>Scrollable</td>
          <td>SQLSRV_CURSOR_FORWARD, SQLSRV_CURSOR_STATIC, SQLSRV_CURSOR_DYNAMIC, 
          or SQLSRV_CURSOR_KEYSET</td>
          <td>See <a href="http://msdn.microsoft.com/en-us/library/ee376927.aspx" class="link external">&raquo;&nbsp;Specifying 
          a Cursor Type and Selecting Rows</a> in the Microsoft SQLSRV documentation.</td>
         </tr>

        </tbody>
       
      </table>


function_name: sqlsrv_rows_affected
name: stmt
type: resource
description:
<p class="para">
       The executed statement resource for which the number of affected rows is returned.
      </p>


function_name: cal_info
name: calendar
type: int
initializer: -1
description:
<p class="para">
       Calendar to return information for. If no calendar is specified
       information about all calendars is returned.
      </p>


function_name: cal_to_jd
name: calendar
type: int
description:
<p class="para">
       Calendar to convert from, one of 
       <strong><code><a href="calendar.constants.html#constant.cal-gregorian">CAL_GREGORIAN</a></code></strong>,
       <strong><code><a href="calendar.constants.html#constant.cal-julian">CAL_JULIAN</a></code></strong>,
       <strong><code><a href="calendar.constants.html#constant.cal-jewish">CAL_JEWISH</a></code></strong> or
       <strong><code><a href="calendar.constants.html#constant.cal-french">CAL_FRENCH</a></code></strong>.
      </p>


function_name: cal_to_jd
name: month
type: int
description:
<p class="para">
       The month as a number, the valid range depends 
       on the <code class="parameter">calendar</code>
      </p>


function_name: cal_to_jd
name: day
type: int
description:
<p class="para">
       The day as a number, the valid range depends 
       on the <code class="parameter">calendar</code>
      </p>


function_name: cal_to_jd
name: year
type: int
description:
<p class="para">
       The year as a number, the valid range depends 
       on the <code class="parameter">calendar</code>
      </p>


function_name: easter_date
name: year
type: null
description:
<p class="para">
       The year must be a number between 1970 and 2037 for 32-bit systems, or between 1970 and 2,000,000,000 for 64-bit systems.
       If omitted or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, defaults to the current year according to the local time.
      </p>


function_name: easter_date
name: mode
type: int
description:
<p class="para">
       Allows Easter dates to be calculated based on the Julian calendar when set
       to <strong><code><a href="calendar.constants.html#constant.cal-easter-always-julian">CAL_EASTER_ALWAYS_JULIAN</a></code></strong>. See also <a href="calendar.constants.html" class="link">calendar constants</a>.
       </p>


function_name: easter_days
name: year
type: null
description:
<p class="para">
       The year as a positive number. If omitted or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, defaults to the
       current year according to the local time.
      </p>


function_name: easter_days
name: mode
type: int
description:
<p class="para">
       Allows Easter dates to be calculated based
       on the Gregorian calendar during the years 1582 - 1752 when set to
       <strong><code><a href="calendar.constants.html#constant.cal-easter-roman">CAL_EASTER_ROMAN</a></code></strong>. See the <a href="calendar.constants.html" class="link">calendar constants</a> for more valid
       constants.      
       </p>


function_name: frenchtojd
name: month
type: int
description:
<p class="para">
       The month as a number from 1 (for Vendémiaire) to 13 (for the period of 5-6 days at the end of each year)
      </p>


function_name: gregoriantojd
name: day
type: int
description:
<p class="para">
       The day as a number from 1 to 31.
       If the month has less days then given, overflow occurs; see the example
       below.
      </p>


function_name: gregoriantojd
name: year
type: int
description:
<p class="para">
       The year as a number between -4714 and 9999.
       Negative numbers mean years B.C., positive numbers mean years A.D.
       Note that there is no year <code class="literal">0</code>; December 31, 1 B.C. is
       immediately followed by January 1, 1 A.D.
      </p>


function_name: jddayofweek
name: mode
type: int
description:
<table class="doctable table">
       <caption><strong>Calendar week modes</strong></caption>
       
        <thead>
         <tr>
          <th>Mode</th>
          <th>Meaning</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>0 (Default)</td> 
          <td>
           Return the day number as an int (0=Sunday, 1=Monday, etc)
          </td>
         </tr>

         <tr>
          <td>1</td> 
          <td>
           Returns string containing the day of week
           (English-Gregorian)
          </td>
         </tr>

         <tr>
          <td>2</td> 
          <td>
           Return a string containing the abbreviated day of week
           (English-Gregorian)
          </td>
         </tr>

        </tbody>
       
      </table>


function_name: jdtojewish
name: hebrew
type: bool
description:
<p class="para">
       If the <code class="parameter">hebrew</code> parameter is set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the
       <code class="parameter">flags</code> parameter is used for Hebrew, ISO-8859-8 encoded string based,
       output format.  
      </p>


function_name: jdtojewish
name: flags
type: int
description:
<p class="para">
       A bitmask which may consist of
       <strong><code><a href="calendar.constants.html#constant.cal-jewish-add-alafim-geresh">CAL_JEWISH_ADD_ALAFIM_GERESH</a></code></strong>,
       <strong><code><a href="calendar.constants.html#constant.cal-jewish-add-alafim">CAL_JEWISH_ADD_ALAFIM</a></code></strong> and
       <strong><code><a href="calendar.constants.html#constant.cal-jewish-add-gereshayim">CAL_JEWISH_ADD_GERESHAYIM</a></code></strong>.
      </p>


function_name: jdtounix
name: julian_day
type: int
description:
<p class="para">
       A julian day number between <code class="literal">2440588</code> and <code class="literal">106751993607888</code>
       on 64bit systems, or between <code class="literal">2440588</code> and <code class="literal">2465443</code> on 32bit systems.
      </p>


function_name: jewishtojd
name: month
type: int
description:
<p class="para">
       The month as a number from <code class="literal">1</code> to <code class="literal">13</code>,
       where <code class="literal">1</code> means <code class="literal">Tishri</code>,
       <code class="literal">13</code> means <code class="literal">Elul</code>, and
       <code class="literal">6</code> <em>and</em> <code class="literal">7</code> mean
       <code class="literal">Adar</code> in regular years, but <code class="literal">Adar I</code>
       and <code class="literal">Adar II</code>, respectively, in leap years.
      </p>


function_name: jewishtojd
name: day
type: int
description:
<p class="para">
       The day as a number from <code class="literal">1</code> to <code class="literal">30</code>.
       If the month has only 29 days, the first day of the following month is
       assumed.
      </p>


function_name: DateTime.add
name: object
type: DateTime
description:
<p class="para">Procedural style only: A <span class="classname">DateTime</span> object
returned by <span class="function">date_create</span>.
The function modifies this object.</p>


function_name: DateTime.__construct
name: datetime
type: string
initializer: "now"
description:
<p class="para">A date/time string. Valid formats are explained in <a href="datetime.formats.html" class="link">Date and Time Formats</a>.</p>
     <p class="para">
      Enter <code class="literal">&quot;now&quot;</code> here to obtain the current time when using
      the <code class="parameter">$timezone</code> parameter.
     </p>


function_name: DateTime.__construct
name: timezone
type: null
description:
<p class="para">
      A <span class="classname">DateTimeZone</span> object representing the
      timezone of <code class="parameter">$datetime</code>.
     </p>
     <p class="para">
      If <code class="parameter">$timezone</code> is omitted or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>,
      the current timezone will be used.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <p class="para">
       The <code class="parameter">$timezone</code> parameter
       and the current timezone are ignored when the
       <code class="parameter">$datetime</code> parameter either
       is a UNIX timestamp (e.g. <code class="literal">@946684800</code>)
       or specifies a timezone
       (e.g. <code class="literal">2010-01-28T15:00:00+02:00</code>).
      </p>
     </p></blockquote>


function_name: DateTime.createFromImmutable
name: object
type: DateTimeImmutable
description:
<p class="para">
       The immutable <span class="classname">DateTimeImmutable</span> object that needs
       to be converted to a mutable version. This object is not modified, but
       instead a new <span class="classname">DateTime</span> instance is
       created containing the same date, time, and timezone information.
      </p>


function_name: DateTime.createFromInterface
name: object
type: DateTimeInterface
description:
<p class="para">
       The <span class="classname">DateTimeInterface</span> object that needs
       to be converted to a mutable version. This object is not modified, but
       instead a new <span class="classname">DateTime</span> object is
       created containing the same date, time, and timezone information.
      </p>


function_name: DateTime.modify
name: modifier
type: string
description:
<p class="para">A date/time string. Valid formats are explained in <a href="datetime.formats.html" class="link">Date and Time Formats</a>.</p>


function_name: DateTime.setTimestamp
name: timestamp
type: int
description:
<p class="para">
      Unix timestamp representing the date.
      Setting timestamps outside the range of <span class="type">int</span> is possible by using
       <span class="methodname">DateTimeImmutable::modify</span> with the <code class="literal">@</code> format.
     </p>


function_name: DateTime.setTimezone
name: timezone
type: DateTimeZone
description:
<p class="para">
      A <span class="classname">DateTimeZone</span> object representing the
      desired time zone.
     </p>


function_name: DateTimeImmutable.__construct
name: timezone
type: null
description:
<p class="para">
      A <span class="classname">DateTimeZone</span> object representing the
      timezone of <code class="parameter">$datetime</code>.
     </p>
     <p class="para">
      If <code class="parameter">$timezone</code> is omitted or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>,
      the current timezone will be used.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <p class="para">
       The <code class="parameter">$timezone</code> parameter
       and the current timezone are ignored when the
       <code class="parameter">$datetime</code> parameter either
       is a UNIX timestamp (e.g. <code class="literal">@946684800</code>)
       or specifies a timezone
       (e.g. <code class="literal">2010-01-28T15:00:00+02:00</code>, or
       <code class="literal">2010-07-05T06:00:00Z</code>).
      </p>
     </p></blockquote>


function_name: DateTimeImmutable.createFromFormat
name: format
type: string
description:
<p class="para">
      The format that the passed in <span class="type">string</span> should be in. See the
      formatting options below. In most cases, the same letters as for the
      <span class="function">date</span> can be used.
     </p>
     <p class="para">
      All fields are initialised with the current date/time. In most cases you
      would want to reset these to &quot;zero&quot; (the Unix epoch, <code class="literal">1970-01-01
      00:00:00 UTC</code>). You do that by including the
      <code class="literal">!</code> character as first character in your
      <code class="parameter">format</code>, or <code class="literal">|</code> as your last.
      Please see the documentation for each character below for more
      information.
     </p>
     <p class="para">
      The format is parsed from left to right, which means that in some
      situations the order in which the format characters are present affects
      the result. In the case of <code class="literal">z</code> (the day of the year),
      it is required that a year has already been parsed,
      for example through the <code class="literal">Y</code> or <code class="literal">y</code>
      characters.
     </p>
     <p class="para">
      Letters that are used for parsing numbers allow a wide range of values,
      outside of what the logical range would be. For example, the
      <code class="literal">d</code> (day of the month) accepts values in the range from
      <code class="literal">00</code> to <code class="literal">99</code>. The only constraint is
      on the amount of digits. The date/time parser&#039;s overflow mechanism is
      used when out-of-range values are given. The examples below show some of
      this behaviour.
     </p>
     <p class="para">
      This also means that the data parsed for a format letter is greedy, and
      will read up to the amount of digits its format allows for. That can
      then also mean that there are no
      longer enough characters in the <code class="parameter">datetime</code> string
      for following format characters. An example on this page also
      illustrates this issue.
     </p>
     <p class="para">
      <table class="doctable table">
       <caption><strong>The following characters are recognized in the
       <code class="parameter">format</code> parameter string</strong></caption>
       
        <thead>
         <tr>
          <th><code class="parameter">format</code> character</th>
          <th>Description</th>
          <th>Example parsable values</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td style="text-align: center;"><em>Day</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">d</code> and <code class="literal">j</code></td>
          <td>Day of the month, 2 digits with or without leading zeros</td>
          <td>
           <code class="literal">01</code> to <code class="literal">31</code> or
           <code class="literal">1</code> to <code class="literal">31</code>. (2 digit numbers
           higher than the number of days in the month are accepted, in which
           case they will make the month overflow. For example using 33 with
           January, means February 2nd)
          </td>
         </tr>

         <tr>
          <td><code class="literal">D</code> and <code class="literal">l</code></td>
          <td>A textual representation of a day</td>
          <td>
           <code class="literal">Mon</code> through <code class="literal">Sun</code> or
           <code class="literal">Sunday</code> through <code class="literal">Saturday</code>. If
           the day name given is different then the day name belonging to a
           parsed (or default) date is different, then an overflow occurs to
           the <em>next</em> date with the given day name. See the
           examples below for an explanation.
          </td>
         </tr>

         <tr>
          <td><code class="literal">S</code></td>
          <td>English ordinal suffix for the day of the month, 2
          characters. It&#039;s ignored while processing.</td>
          <td>
           <code class="literal">st</code>, <code class="literal">nd</code>, <code class="literal">rd</code> or
           <code class="literal">th</code>.
          </td>
         </tr>

         <tr>
          <td><code class="literal">z</code></td>
          <td>
           The day of the year (starting from 0);
           must be preceded by <code class="literal">Y</code> or <code class="literal">y</code>.
          </td>
          <td>
           <code class="literal">0</code> through <code class="literal">365</code>. (3 digit
           numbers higher than the numbers in a year are accepted, in which
           case they will make the year overflow. For example using 366 with
           2022, means January 2nd, 2023)
          </td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Month</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">F</code> and <code class="literal">M</code></td>
          <td>A textual representation of a month, such as January or Sept</td>
          <td>
           <code class="literal">January</code> through <code class="literal">December</code> or
           <code class="literal">Jan</code> through <code class="literal">Dec</code>
          </td>
         </tr>

         <tr>
          <td><code class="literal">m</code> and <code class="literal">n</code></td>
          <td>Numeric representation of a month, with or without leading zeros</td>
          <td>
           <code class="literal">01</code> through <code class="literal">12</code> or
           <code class="literal">1</code> through <code class="literal">12</code>.
           (2 digit numbers higher than 12 are accepted, in which case they
           will make the year overflow. For example using 13 means January in
           the next year)
          </td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Year</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">X</code> and <code class="literal">x</code></td>
          <td>A full numeric representation of a year, up to 19 digits,
           optionally prefixed by <code class="literal">+</code> or
           <code class="literal">-</code></td>
          <td>Examples: <code class="literal">0055</code>, <code class="literal">787</code>,
           <code class="literal">1999</code>, <code class="literal">-2003</code>,
           <code class="literal">+10191</code></td>
         </tr>

         <tr>
          <td><code class="literal">Y</code></td>
          <td>A full numeric representation of a year, up to 4 digits</td>
          <td>Examples: <code class="literal">0055</code>, <code class="literal">787</code>,
           <code class="literal">1999</code>, <code class="literal">2003</code></td>
         </tr>

         <tr>
          <td><code class="literal">y</code></td>
          <td>
           A two digit representation of a year (which is assumed to be in the
           range 1970-2069, inclusive)
          </td>
          <td>
           Examples:
           <code class="literal">99</code> or <code class="literal">03</code>
           (which will be interpreted as <code class="literal">1999</code> and
           <code class="literal">2003</code>, respectively)
          </td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Time</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">a</code> and <code class="literal">A</code></td>
          <td>Ante meridiem and Post meridiem</td>
          <td><code class="literal">am</code> or <code class="literal">pm</code></td>
         </tr>

         <tr>
          <td><code class="literal">g</code> and <code class="literal">h</code></td>
          <td>12-hour format of an hour with or without leading zero</td>
          <td>
           <code class="literal">1</code> through <code class="literal">12</code> or
           <code class="literal">01</code> through <code class="literal">12</code> (2 digit
           numbers higher than 12 are accepted, in which case they will make
           the day overflow. For example using <code class="literal">14</code> means
           <code class="literal">02</code> in the next AM/PM period)
          </td>
         </tr>

         <tr>
          <td><code class="literal">G</code> and <code class="literal">H</code></td>
          <td>24-hour format of an hour with or without leading zeros</td>
          <td>
           <code class="literal">0</code> through <code class="literal">23</code> or
           <code class="literal">00</code> through <code class="literal">23</code> (2 digit
           numbers higher than 24 are accepted, in which case they will make
           the day overflow. For example using <code class="literal">26</code> means
           <code class="literal">02:00</code> the next day)
          </td>
         </tr>

         <tr>
          <td><code class="literal">i</code></td>
          <td>Minutes with leading zeros</td>
          <td>
           <code class="literal">00</code> to <code class="literal">59</code>. (2 digit
           numbers higher than 59 are accepted, in which case they will make
           the hour overflow. For example using <code class="literal">66</code> means
           <code class="literal">:06</code> the next hour)
          </td>
         </tr>

         <tr>
          <td><code class="literal">s</code></td>
          <td>Seconds, with leading zeros</td>
          <td>
           <code class="literal">00</code> through <code class="literal">59</code> (2 digit
           numbers higher than 59 are accepted, in which case they will make
           the minute overflow. For example using <code class="literal">90</code> means
           <code class="literal">:30</code> the next minute)
          </td>
         </tr>

         <tr>
          <td><code class="literal">v</code></td>
          <td>Fraction in milliseconds (up to three digits)</td>
          <td>Example: <code class="literal">12</code> (<code class="literal">0.12</code>
          seconds), <code class="literal">345</code> (<code class="literal">0.345</code> seconds)</td>
         </tr>

         <tr>
          <td><code class="literal">u</code></td>
          <td>Fraction in microseconds (up to six digits)</td>
          <td>Example: <code class="literal">45</code> (<code class="literal">0.45</code>
          seconds), <code class="literal">654321</code> (<code class="literal">0.654321</code>
          seconds)</td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Timezone</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td>
           <code class="literal">e</code>, <code class="literal">O</code>,
           <code class="literal">P</code> and <code class="literal">T</code>
          </td>
          <td>Timezone identifier, or difference to UTC in hours, or
          difference to UTC with colon between hours and minutes, or timezone
          abbreviation</td>
          <td>Examples: <code class="literal">UTC</code>, <code class="literal">GMT</code>,
           <code class="literal">Atlantic/Azores</code> or
           <code class="literal">+0200</code> or <code class="literal">+02:00</code> or
           <code class="literal">EST</code>, <code class="literal">MDT</code>
          </td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Full Date/Time</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">U</code></td>
          <td>Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)</td>
          <td>Example: <code class="literal">1292177455</code></td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Whitespace and Separators</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal"> </code> (space)</td>
          <td>Zero or more spaces, tabs, NBSP (U+A0), or NNBSP (U+202F)
          characters</td>
          <td>Example: <code class="literal">&quot;\t&quot;</code>, <code class="literal">&quot;  &quot;</code></td>
         </tr>

         <tr>
          <td><code class="literal">#</code></td>
          <td>
           One of the following separation symbol: <code class="literal">;</code>,
           <code class="literal">:</code>, <code class="literal">/</code>, <code class="literal">.</code>,
           <code class="literal">,</code>, <code class="literal">-</code>, <code class="literal">(</code> or
           <code class="literal">)</code>
          </td>
          <td>Example: <code class="literal">/</code></td>
         </tr>

         <tr>
          <td>
           <code class="literal">;</code>,
           <code class="literal">:</code>, <code class="literal">/</code>, <code class="literal">.</code>,
           <code class="literal">,</code>, <code class="literal">-</code>, <code class="literal">(</code> or
           <code class="literal">)</code>
          </td>
          <td>The specified character.</td>
          <td>Example: <code class="literal">-</code></td>
         </tr>

         <tr>
          <td><code class="literal">?</code></td>
          <td>A random byte</td>
          <td>Example: <code class="literal">^</code> (Be aware that for UTF-8
          characters you might need more than one <code class="literal">?</code>.
          In this case, using <code class="literal">*</code> is probably what you want
          instead)</td>
         </tr>

         <tr>
          <td><code class="literal">*</code></td>
          <td>Random bytes until the next separator or digit</td>
          <td>Example: <code class="literal">*</code> in <code class="literal">Y-*-d</code> with
          the string <code class="literal">2009-aWord-08</code> will match
          <code class="literal">aWord</code></td>
         </tr>

         <tr>
          <td><code class="literal">!</code></td>
          <td>Resets all fields (year, month, day, hour, minute, second,
          fraction and timezone information) to zero-like values (
           <code class="literal">0</code> for hour, minute, second and fraction,
           <code class="literal">1</code> for month and day, <code class="literal">1970</code>
           for year and <code class="literal">UTC</code> for timezone information)</td>
          <td>Without <code class="literal">!,</code> all fields will be set to the
          current date and time.</td>
         </tr>

         <tr>
          <td><code class="literal">|</code></td>
          <td>Resets all fields (year, month, day, hour, minute, second,
          fraction and timezone information) to zero-like values if they have
          not been parsed yet</td>
          <td><code class="literal">Y-m-d|</code> will set the year, month and day
          to the information found in the string to parse, and sets the hour,
          minute and second to 0.</td>
         </tr>

         <tr>
          <td><code class="literal">+</code></td>
          <td>If this format specifier is present, trailing data in the
          string will not cause an error, but a warning instead</td>
          <td>Use  <span class="methodname">DateTimeImmutable::getLastErrors</span> to find out
          whether trailing data was present.</td>
         </tr>

        </tbody>
       
      </table>

     </p>
     <p class="para">
      Unrecognized characters in the format string will cause the
      parsing to fail and an error message is appended to the returned
      structure. You can query error messages with
       <span class="methodname">DateTimeImmutable::getLastErrors</span>.
     </p>
     <p class="para">
      To include literal characters in <code class="parameter">format</code>, you have
      to escape them with a backslash (<code class="literal">\</code>).
     </p>
     <p class="para">
      If <code class="parameter">format</code> does not contain the character
      <code class="literal">!</code> then portions of the generated date/time which are not
      specified in <code class="parameter">format</code> will be set to the current
      system time.
     </p>
     <p class="para">
      If <code class="parameter">format</code> contains the
      character <code class="literal">!</code>, then portions of the generated
      date/time not provided in <code class="parameter">format</code>, as well as
      values to the left-hand side of the <code class="literal">!</code>, will
      be set to corresponding values from the Unix epoch.
     </p>
     <p class="para">
      If any time character is parsed, then all other time-related fields are
      set to &quot;0&quot;, unless also parsed.
     </p>
     <p class="para">
      The Unix epoch is 1970-01-01 00:00:00 UTC.
     </p>


function_name: DateTimeImmutable.createFromFormat
name: timezone
type: null
description:
<p class="para">
      A <span class="classname">DateTimeZone</span> object representing the
      desired time zone.
     </p>
     <p class="para">
      If <code class="parameter">timezone</code> is omitted or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> and
      <code class="parameter">datetime</code> contains no timezone,
      the current timezone will be used.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <p class="para">
       The <code class="parameter">timezone</code> parameter
       and the current timezone are ignored when the
       <code class="parameter">datetime</code> parameter either
       contains a UNIX timestamp (e.g. <code class="literal">946684800</code>)
       or specifies a timezone
       (e.g. <code class="literal">2010-01-28T15:00:00+02:00</code>).
      </p>
     </p></blockquote>


function_name: DateTimeImmutable.createFromInterface
name: object
type: DateTimeInterface
description:
<p class="para">
       The <span class="classname">DateTimeInterface</span> object that needs
       to be converted to an immutable version. This object is not modified, but
       instead a new <span class="classname">DateTimeImmutable</span> object is
       created containing the same date, time, and timezone information.
      </p>


function_name: DateTimeImmutable.createFromMutable
name: object
type: DateTime
description:
<p class="para">
       The mutable <span class="classname">DateTime</span> object that you want to
       convert to an immutable version. This object is not modified, but
       instead a new <span class="classname">DateTimeImmutable</span> instance is
       created containing the same date time and timezone information.
      </p>


function_name: DateTimeInterface.format
name: format
type: string
description:
<p class="para">
      The format of the outputted date <span class="type">string</span>. See the formatting
      options below. There are also several
      <a href="class.datetimeinterface.html#datetimeinterface.constants.types" class="link">predefined date constants</a>
      that may be used instead, so for example <strong><code>DATE_RSS</code></strong>
      contains the format string <code class="literal">&#039;D, d M Y H:i:s&#039;</code>.
     </p>
     <p class="para">
      <table class="doctable table">
       <caption><strong>The following characters are recognized in the
       <code class="parameter">format</code> parameter string</strong></caption>
       
        <thead>
         <tr>
          <th><code class="parameter">format</code> character</th>
          <th>Description</th>
          <th>Example returned values</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td style="text-align: center;"><em>Day</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">d</code></td>
          <td>Day of the month, 2 digits with leading zeros</td>
          <td><code class="literal">01</code> to <code class="literal">31</code></td>
         </tr>

         <tr>
          <td><code class="literal">D</code></td>
          <td>A textual representation of a day, three letters</td>
          <td><code class="literal">Mon</code> through <code class="literal">Sun</code></td>
         </tr>

         <tr>
          <td><code class="literal">j</code></td>
          <td>Day of the month without leading zeros</td>
          <td><code class="literal">1</code> to <code class="literal">31</code></td>
         </tr>

         <tr>
          <td><code class="literal">l</code> (lowercase &#039;L&#039;)</td>
          <td>A full textual representation of the day of the week</td>
          <td><code class="literal">Sunday</code> through <code class="literal">Saturday</code></td>
         </tr>

         <tr>
          <td><code class="literal">N</code></td>
          <td>ISO 8601 numeric representation of the day of the week</td>
          <td><code class="literal">1</code> (for Monday) through <code class="literal">7</code> (for Sunday)</td>
         </tr>

         <tr>
          <td><code class="literal">S</code></td>
          <td>English ordinal suffix for the day of the month, 2 characters</td>
          <td>
           <code class="literal">st</code>, <code class="literal">nd</code>, <code class="literal">rd</code> or
           <code class="literal">th</code>.  Works well with <code class="literal">j</code>
          </td>
         </tr>

         <tr>
          <td><code class="literal">w</code></td>
          <td>Numeric representation of the day of the week</td>
          <td><code class="literal">0</code> (for Sunday) through <code class="literal">6</code> (for Saturday)</td>
         </tr>

         <tr>
          <td><code class="literal">z</code></td>
          <td>The day of the year (starting from 0)</td>
          <td><code class="literal">0</code> through <code class="literal">365</code></td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Week</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">W</code></td>
          <td>ISO 8601 week number of year, weeks starting on Monday</td>
          <td>Example: <code class="literal">42</code> (the 42nd week in the year)</td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Month</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">F</code></td>
          <td>A full textual representation of a month, such as January or March</td>
          <td><code class="literal">January</code> through <code class="literal">December</code></td>
         </tr>

         <tr>
          <td><code class="literal">m</code></td>
          <td>Numeric representation of a month, with leading zeros</td>
          <td><code class="literal">01</code> through <code class="literal">12</code></td>
         </tr>

         <tr>
          <td><code class="literal">M</code></td>
          <td>A short textual representation of a month, three letters</td>
          <td><code class="literal">Jan</code> through <code class="literal">Dec</code></td>
         </tr>

         <tr>
          <td><code class="literal">n</code></td>
          <td>Numeric representation of a month, without leading zeros</td>
          <td><code class="literal">1</code> through <code class="literal">12</code></td>
         </tr>

         <tr>
          <td><code class="literal">t</code></td>
          <td>Number of days in the given month</td>
          <td><code class="literal">28</code> through <code class="literal">31</code></td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Year</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">L</code></td>
          <td>Whether it&#039;s a leap year</td>
          <td><code class="literal">1</code> if it is a leap year, <code class="literal">0</code> otherwise.</td>
         </tr>

         <tr>
          <td><code class="literal">o</code></td>
          <td>ISO 8601 week-numbering year. This has the same value as
           <code class="literal">Y</code>, except that if the ISO week number
           (<code class="literal">W</code>) belongs to the previous or next year, that year
           is used instead.</td>
          <td>Examples: <code class="literal">1999</code> or <code class="literal">2003</code></td>
         </tr>

         <tr>
          <td><code class="literal">X</code></td>
          <td>An expanded full numeric representation of a year, at least 4 digits,
           with <code class="literal">-</code> for years BCE, and <code class="literal">+</code>
           for years CE.</td>
          <td>Examples: <code class="literal">-0055</code>, <code class="literal">+0787</code>,
           <code class="literal">+1999</code>, <code class="literal">+10191</code></td>
         </tr>

         <tr>
          <td><code class="literal">x</code></td>
          <td>An expanded full numeric representation if required, or a
           standard full numeral representation if possible (like
           <code class="literal">Y</code>). At least four digits. Years BCE are prefixed
           with a <code class="literal">-</code>. Years beyond (and including)
           <code class="literal">10000</code> are prefixed by a
           <code class="literal">+</code>.</td>
          <td>Examples: <code class="literal">-0055</code>, <code class="literal">0787</code>,
           <code class="literal">1999</code>, <code class="literal">+10191</code></td>
         </tr>

         <tr>
          <td><code class="literal">Y</code></td>
          <td>A full numeric representation of a year, at least 4 digits,
           with <code class="literal">-</code> for years BCE.</td>
          <td>Examples: <code class="literal">-0055</code>, <code class="literal">0787</code>,
           <code class="literal">1999</code>, <code class="literal">2003</code>,
           <code class="literal">10191</code></td>
         </tr>

         <tr>
          <td><code class="literal">y</code></td>
          <td>A two digit representation of a year</td>
          <td>Examples: <code class="literal">99</code> or <code class="literal">03</code></td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Time</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">a</code></td>
          <td>Lowercase Ante meridiem and Post meridiem</td>
          <td><code class="literal">am</code> or <code class="literal">pm</code></td>
         </tr>

         <tr>
          <td><code class="literal">A</code></td>
          <td>Uppercase Ante meridiem and Post meridiem</td>
          <td><code class="literal">AM</code> or <code class="literal">PM</code></td>
         </tr>

         <tr>
          <td><code class="literal">B</code></td>
          <td>Swatch Internet time</td>
          <td><code class="literal">000</code> through <code class="literal">999</code></td>
         </tr>

         <tr>
          <td><code class="literal">g</code></td>
          <td>12-hour format of an hour without leading zeros</td>
          <td><code class="literal">1</code> through <code class="literal">12</code></td>
         </tr>

         <tr>
          <td><code class="literal">G</code></td>
          <td>24-hour format of an hour without leading zeros</td>
          <td><code class="literal">0</code> through <code class="literal">23</code></td>
         </tr>

         <tr>
          <td><code class="literal">h</code></td>
          <td>12-hour format of an hour with leading zeros</td>
          <td><code class="literal">01</code> through <code class="literal">12</code></td>
         </tr>

         <tr>
          <td><code class="literal">H</code></td>
          <td>24-hour format of an hour with leading zeros</td>
          <td><code class="literal">00</code> through <code class="literal">23</code></td>
         </tr>

         <tr>
          <td><code class="literal">i</code></td>
          <td>Minutes with leading zeros</td>
          <td><code class="literal">00</code> to <code class="literal">59</code></td>
         </tr>

         <tr>
          <td><code class="literal">s</code></td>
          <td>Seconds with leading zeros</td>
          <td><code class="literal">00</code> through <code class="literal">59</code></td>
         </tr>

         <tr>
          <td><code class="literal">u</code></td>
          <td>
           Microseconds. Note that
           <span class="function">date</span> will always generate
           <code class="literal">000000</code> since it takes an <span class="type">int</span>
           parameter, whereas  <span class="methodname">DateTime::format</span> does
           support microseconds if <span class="classname">DateTime</span> was
           created with microseconds.
          </td>
          <td>Example: <code class="literal">654321</code></td>
         </tr>

         <tr>
          <td><code class="literal">v</code></td>
          <td>
           Milliseconds. Same note applies as for
           <code class="literal">u</code>.
          </td>
          <td>Example: <code class="literal">654</code></td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Timezone</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">e</code></td>
          <td>Timezone identifier</td>
          <td>Examples: <code class="literal">UTC</code>, <code class="literal">GMT</code>, <code class="literal">Atlantic/Azores</code></td>
         </tr>

         <tr>
          <td><code class="literal">I</code> (capital i)</td>
          <td>Whether or not the date is in daylight saving time</td>
          <td><code class="literal">1</code> if Daylight Saving Time, <code class="literal">0</code> otherwise.</td>
         </tr>

         <tr>
          <td><code class="literal">O</code></td>
          <td>Difference to Greenwich time (GMT) without colon between hours and minutes</td>
          <td>Example: <code class="literal">+0200</code></td>
         </tr>

         <tr>
          <td><code class="literal">P</code></td>
          <td>Difference to Greenwich time (GMT) with colon between hours and minutes</td>
          <td>Example: <code class="literal">+02:00</code></td>
         </tr>

         <tr>
          <td><code class="literal">p</code></td>
          <td>
           The same as <code class="literal">P</code>, but returns <code class="literal">Z</code> instead of <code class="literal">+00:00</code>
           (available as of PHP 8.0.0)
          </td>
          <td>Examples: <code class="literal">Z</code> or <code class="literal">+02:00</code></td>
         </tr>

         <tr>
          <td><code class="literal">T</code></td>
          <td>Timezone abbreviation, if known; otherwise the GMT offset.</td>
          <td>Examples: <code class="literal">EST</code>, <code class="literal">MDT</code>, <code class="literal">+05</code></td>
         </tr>

         <tr>
          <td><code class="literal">Z</code></td>
          <td>Timezone offset in seconds. The offset for timezones west of UTC is always
          negative, and for those east of UTC is always positive.</td>
          <td><code class="literal">-43200</code> through <code class="literal">50400</code></td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Full Date/Time</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">c</code></td>
          <td>ISO 8601 date</td>
          <td>2004-02-12T15:19:21+00:00</td>
         </tr>

         <tr>
          <td><code class="literal">r</code></td>
          <td><a href="http://www.faqs.org/rfcs/rfc2822" class="link external">&raquo;&nbsp;RFC 2822</a>/<a href="http://www.faqs.org/rfcs/rfc5322" class="link external">&raquo;&nbsp;RFC 5322</a> formatted date</td>
          <td>Example: <code class="literal">Thu, 21 Dec 2000 16:01:07 +0200</code></td>
         </tr>

         <tr>
          <td><code class="literal">U</code></td>
          <td>Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)</td>
          <td>See also <span class="function">time</span></td>
         </tr>

        </tbody>
       
      </table>

     </p>
     <p class="para">
      Unrecognized characters in the format string will be printed
      as-is.  The <code class="literal">Z</code> format will always return
      <code class="literal">0</code> when using <span class="function">gmdate</span>.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <p class="para">
       Since this function only accepts <span class="type">int</span> timestamps the
       <code class="literal">u</code> format character is only useful when using the
       <span class="function">date_format</span> function with user based timestamps
       created with <span class="function">date_create</span>.
      </p>
     </p></blockquote>


function_name: DateTimeInterface.format
name: object
type: DateTimeInterface
description:
<p class="para">Procedural style only: A <span class="classname">DateTime</span> object
returned by <span class="function">date_create</span></p>


function_name: DateTimeZone.__construct
name: timezone
type: string
description:
<p class="para">
       One of the supported <a href="timezones.html" class="link">timezone names</a>,
       an offset value (+0200), or a timezone abbreviation (BST).
      </p>


function_name: DateTimeZone.getLocation
name: object
type: DateTimeZone
description:
<p class="para">Procedural style only: A <span class="classname">DateTimeZone</span> object
returned by <span class="function">timezone_open</span></p>


function_name: DateTimeZone.getName
name: object
type: DateTimeZone
description:
<p class="para">
      The <span class="classname">DateTimeZone</span> for which to get a name.
     </p>


function_name: DateTimeZone.getOffset
name: datetime
type: DateTimeInterface
description:
<p class="para">
       DateTime that contains the date/time to compute the offset from. 
      </p>


function_name: DateTimeZone.listIdentifiers
name: timezoneGroup
type: int
initializer: DateTimeZone::ALL
description:
<p class="para">
       One of the <span class="classname">DateTimeZone</span> class constants (or a combination).
      </p>


function_name: DateTimeZone.listIdentifiers
name: countryCode
type: null
description:
<p class="para">
       A two-letter (uppercase) ISO 3166-1 compatible country code.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        This option is only used when <code class="parameter">timezoneGroup</code> is set to
        <strong><code><a href="class.datetimezone.html#datetimezone.constants.per-country">DateTimeZone::PER_COUNTRY</a></code></strong>.
       </span>
      </p></blockquote>


function_name: DateInterval.__construct
name: duration
type: string
description:
<p class="para">
       An interval specification.
      </p>
      <p class="para">
       The format starts with the letter <code class="literal">P</code>,
       for <q class="quote">period.</q>
       Each duration period is represented by an integer value
       followed by a period designator.
       If the duration contains time elements, that portion
       of the specification is preceded by the letter
       <code class="literal">T</code>.
      </p>
      <p class="para">
       <table class="doctable table">
        <caption><strong>
         <code class="parameter">duration</code> Period Designators
        </strong></caption>
        
         <thead>
          <tr>
           <th>Period Designator</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><code class="literal">Y</code></td>
           <td>years</td>
          </tr>

          <tr>
           <td><code class="literal">M</code></td>
           <td>months</td>
          </tr>

          <tr>
           <td><code class="literal">D</code></td>
           <td>days</td>
          </tr>

          <tr>
           <td><code class="literal">W</code></td>
           <td>
            weeks. Converted into days.
            Prior to PHP 8.0.0, can not be combined with <code class="literal">D</code>.
           </td>
          </tr>

          <tr>
           <td><code class="literal">H</code></td>
           <td>hours</td>
          </tr>

          <tr>
           <td><code class="literal">M</code></td>
           <td>minutes</td>
          </tr>

          <tr>
           <td><code class="literal">S</code></td>
           <td>seconds</td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       Here are some simple examples.
       Two days is <code class="literal">P2D</code>.
       Two seconds is <code class="literal">PT2S</code>.
       Six years and five minutes is <code class="literal">P6YT5M</code>.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        The unit types must be entered from the largest
        scale unit on the left to the smallest scale unit
        on the right.
        So years before months, months before days,
        days before minutes, etc.
        Thus one year and four days must be represented as
        <code class="literal">P1Y4D</code>, not <code class="literal">P4D1Y</code>.
       </p>
      </p></blockquote>
      <p class="para">
       The specification can also be represented as a date time.
       A sample of one year and four days would be
       <code class="literal">P0001-00-04T00:00:00</code>.
       But the values in this format can not exceed a given period&#039;s
       roll-over-point (e.g. <code class="literal">25</code> hours is invalid).
      </p>
      <p class="para">
       These formats are based on the <a href="http://en.wikipedia.org/wiki/Iso8601#Durations" class="link external">&raquo;&nbsp;ISO 8601 duration
       specification</a>.
      </p>


function_name: DateInterval.createFromDateString
name: datetime
type: string
description:
<p class="para">
       A date with relative parts. Specifically, the <a href="datetime.formats.html#datetime.formats.relative" class="link">relative formats</a> supported
       by the parser used for <span class="classname">DateTimeImmutable</span>,
       <span class="classname">DateTime</span>, and <span class="function">strtotime</span>
       will be used to construct the DateInterval.
      </p>
      <p class="para">
       To use an ISO-8601 format string like <code class="literal">P7D</code>, you must
       use the constructor.
      </p>


function_name: DateInterval.format
name: format
type: string
description:
<p class="para">
       <table class="doctable table">
        <caption><strong>
         The following characters are recognized in the
         <code class="parameter">format</code> parameter string.
         Each format character must be prefixed by a percent sign
         (<code class="literal">%</code>).
        </strong></caption>
        
         <thead>
          <tr>
           <th><code class="parameter">format</code> character</th>
           <th>Description</th>
           <th>Example values</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><code class="literal">%</code></td>
           <td>Literal <code class="literal">%</code></td>
           <td><code class="literal">%</code></td>
          </tr>

          <tr>
           <td><code class="literal">Y</code></td>
           <td>Years, numeric, at least 2 digits with leading 0</td>
           <td><code class="literal">01</code>, <code class="literal">03</code></td>
          </tr>

          <tr>
           <td><code class="literal">y</code></td>
           <td>Years, numeric</td>
           <td><code class="literal">1</code>, <code class="literal">3</code></td>
          </tr>

          <tr>
           <td><code class="literal">M</code></td>
           <td>Months, numeric, at least 2 digits with leading 0</td>
           <td><code class="literal">01</code>, <code class="literal">03</code>, <code class="literal">12</code></td>
          </tr>

          <tr>
           <td><code class="literal">m</code></td>
           <td>Months, numeric</td>
           <td><code class="literal">1</code>, <code class="literal">3</code>, <code class="literal">12</code></td>
          </tr>

          <tr>
           <td><code class="literal">D</code></td>
           <td>Days, numeric, at least 2 digits with leading 0</td>
           <td><code class="literal">01</code>, <code class="literal">03</code>, <code class="literal">31</code></td>
          </tr>

          <tr>
           <td><code class="literal">d</code></td>
           <td>Days, numeric</td>
           <td><code class="literal">1</code>, <code class="literal">3</code>, <code class="literal">31</code></td>
          </tr>

          <tr>
           <td><code class="literal">a</code></td>
           <td>Total number of days as a result of a  <span class="methodname">DateTime::diff</span> or <code class="literal">(unknown)</code> otherwise</td>
           <td><code class="literal">4</code>, <code class="literal">18</code>, <code class="literal">8123</code></td>
          </tr>

          <tr>
           <td><code class="literal">H</code></td>
           <td>Hours, numeric, at least 2 digits with leading 0</td>
           <td><code class="literal">01</code>, <code class="literal">03</code>, <code class="literal">23</code></td>
          </tr>

          <tr>
           <td><code class="literal">h</code></td>
           <td>Hours, numeric</td>
           <td><code class="literal">1</code>, <code class="literal">3</code>, <code class="literal">23</code></td>
          </tr>

          <tr>
           <td><code class="literal">I</code></td>
           <td>Minutes, numeric, at least 2 digits with leading 0</td>
           <td><code class="literal">01</code>, <code class="literal">03</code>, <code class="literal">59</code></td>
          </tr>

          <tr>
           <td><code class="literal">i</code></td>
           <td>Minutes, numeric</td>
           <td><code class="literal">1</code>, <code class="literal">3</code>, <code class="literal">59</code></td>
          </tr>

          <tr>
           <td><code class="literal">S</code></td>
           <td>Seconds, numeric, at least 2 digits with leading 0</td>
           <td><code class="literal">01</code>, <code class="literal">03</code>, <code class="literal">57</code></td>
          </tr>

          <tr>
           <td><code class="literal">s</code></td>
           <td>Seconds, numeric</td>
           <td><code class="literal">1</code>, <code class="literal">3</code>, <code class="literal">57</code></td>
          </tr>

          <tr>
           <td><code class="literal">F</code></td>
           <td>Microseconds, numeric, at least 6 digits with leading
           0</td>
           <td><code class="literal">007701</code>, <code class="literal">052738</code>, <code class="literal">428291</code></td>
          </tr>

          <tr>
           <td><code class="literal">f</code></td>
           <td>Microseconds, numeric</td>
           <td><code class="literal">7701</code>, <code class="literal">52738</code>, <code class="literal">428291</code></td>
          </tr>

          <tr>
           <td><code class="literal">R</code></td>
           <td>Sign &quot;<code class="literal">-</code>&quot; when negative, &quot;<code class="literal">+</code>&quot; when positive</td>
           <td><code class="literal">-</code>, <code class="literal">+</code></td>
          </tr>

          <tr>
           <td><code class="literal">r</code></td>
           <td>Sign &quot;<code class="literal">-</code>&quot; when negative, empty when positive</td>
           <td><code class="literal">-</code>, <code class="literal"></td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: DatePeriod.__construct
name: start
type: DateTimeInterface
description:
<p class="para">
       The start date of the period. Included by default in the result set.
      </p>


function_name: DatePeriod.__construct
name: recurrences
type: int
description:
<p class="para">
       The number of recurrences. The number of returned results is
       one higher than this, as the start date is included in the result set
       by default. Must be greater than <code class="literal">0</code>.
      </p>


function_name: DatePeriod.__construct
name: options
type: int
description:
<p class="para">
       A bit field which can be used to control certain behaviour with start-
       and end- dates.
      </p>
      <p class="para">
       With <strong><code><a href="class.dateperiod.html#dateperiod.constants.exclude-start-date">DatePeriod::EXCLUDE_START_DATE</a></code></strong> you
       exclude the start date from the set of recurring dates within the
       period.
      </p>
      <p class="para">
       With <strong><code><a href="class.dateperiod.html#dateperiod.constants.include-end-date">DatePeriod::INCLUDE_END_DATE</a></code></strong> you
       include the end date in the set of recurring dates within the
       period.
      </p>


function_name: DatePeriod.__construct
name: end
type: DateTimeInterface
description:
<p class="para">
       The end date of the period. Excluded by default from the result set.
      </p>


function_name: DatePeriod.__construct
name: isostr
type: string
description:
<p class="simpara">
         time offsets other than UTC (<code class="literal">Z</code>), such as <code class="literal">+02:00</code>.
        </p>


function_name: DatePeriod.createFromISO8601String
name: specification
type: string
description:
<p class="simpara">
        time offsets other than UTC (<code class="literal">Z</code>), such as <code class="literal">+02:00</code>.
       </p>


function_name: DatePeriod.createFromISO8601String
name: options
type: int
description:
<p class="para">
      A bit field which can be used to control certain behaviour with start-
      and end- dates.
     </p>
     <p class="para">
      With <strong><code><a href="class.dateperiod.html#dateperiod.constants.exclude-start-date">DatePeriod::EXCLUDE_START_DATE</a></code></strong> you
      exclude the start date from the set of recurring dates within the
      period.
     </p>
     <p class="para">
      With <strong><code><a href="class.dateperiod.html#dateperiod.constants.include-end-date">DatePeriod::INCLUDE_END_DATE</a></code></strong> you
      include the end date in the set of recurring dates within the
      period.
     </p>


function_name: checkdate
name: day
type: int
description:
<p class="para">
       The day is within the allowed number of days for the given 
       <code class="parameter">month</code>.  Leap <code class="parameter">year</code>s 
       are taken into consideration.
      </p>


function_name: date_default_timezone_set
name: timezoneId
type: string
description:
<p class="para">
       The timezone identifier, like <code class="literal">UTC</code>,
       <code class="literal">Africa/Lagos</code>, <code class="literal">Asia/Hong_Kong</code>, or
       <code class="literal">Europe/Lisbon</code>. The list of valid identifiers is
       available in the <a href="timezones.html" class="xref">List of Supported Timezones</a>.
      </p>


function_name: date_parse_from_format
name: format
type: string
description:
<p class="para">
       Documentation on how the <code class="parameter">format</code> is used, please
       refer to the documentation of
       <span class="function">DateTimeImmutable::createFromFormat</span>. The same
       rules apply.
      </p>


function_name: date_parse
name: datetime
type: string
description:
<p class="para">
       Date/time in format accepted by
       <span class="function">DateTimeImmutable::__construct</span>.
      </p>


function_name: date_sunrise
name: timestamp
type: int
description:
<p class="para">
       The <code class="parameter">timestamp</code> of the day from which the sunrise
       time is taken.
      </p>


function_name: date_sunrise
name: returnFormat
type: int
description:
<p class="para">
       <table class="doctable table">
        <caption><strong><code class="parameter">returnFormat</code> constants</strong></caption>
        
         <thead>
          <tr>
           <th>constant</th>
           <th>description</th>
           <th>example</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>SUNFUNCS_RET_STRING</td>
           <td>returns the result as <span class="type">string</span></td>
           <td>16:46</td>
          </tr>

          <tr>
           <td>SUNFUNCS_RET_DOUBLE</td>
           <td>returns the result as <span class="type">float</span></td>
           <td>16.78243132</td>
          </tr>

          <tr>
           <td>SUNFUNCS_RET_TIMESTAMP</td>
           <td>returns the result as <span class="type">int</span> (timestamp)</td>
           <td>1095034606</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: date_sunrise
name: latitude
type: null
description:
<p class="para">
       Defaults to North, pass in a negative value for South.
       See also: <a href="datetime.configuration.html#ini.date.default-latitude" class="link">date.default_latitude</a>
      </p>


function_name: date_sunrise
name: longitude
type: null
description:
<p class="para">
       Defaults to East, pass in a negative value for West.
       See also: <a href="datetime.configuration.html#ini.date.default-longitude" class="link">date.default_longitude</a>
      </p>


function_name: date_sunrise
name: zenith
type: null
description:
<p class="para">
       <code class="parameter">zenith</code> is the angle between the center of the sun
       and a line perpendicular to earth&#039;s surface. It defaults to
       <a href="datetime.configuration.html#ini.date.sunrise-zenith" class="link">date.sunrise_zenith</a>
       <table class="doctable table">
        <caption><strong>Common <code class="parameter">zenith</code> angles</strong></caption>
        
         <thead>
          <tr>
           <th>Angle</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>90°50&#039;</td>
           <td>Sunrise: the point where the sun becomes visible.</td>
          </tr>

          <tr>
           <td>96°</td>
           <td>Civil twilight: conventionally used to signify the start of dawn.</td>
          </tr>

          <tr>
           <td>102°</td>
           <td>Nautical twilight: the point at which the horizon starts being visible at sea.</td>
          </tr>

          <tr>
           <td>108°</td>
           <td>Astronomical twilight: the point at which the sun starts being the source of any illumination.</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: date_sunrise
name: utcOffset
type: null
description:
<p class="para">
       Specified in hours.
       The <code class="parameter">utcOffset</code> is ignored, if
       <code class="parameter">returnFormat</code> is
       <strong><code><a href="datetime.constants.html#constant.sunfuncs-ret-timestamp">SUNFUNCS_RET_TIMESTAMP</a></code></strong>.
      </p>


function_name: date_sunset
name: timestamp
type: int
description:
<p class="para">
       The <code class="parameter">timestamp</code> of the day from which the sunset
       time is taken.
      </p>


function_name: date_sunset
name: zenith
type: null
description:
<p class="para">
       <code class="parameter">zenith</code> is the angle between the center of the sun
       and a line perpendicular to earth&#039;s surface. It defaults to
       <a href="datetime.configuration.html#ini.date.sunset-zenith" class="link">date.sunset_zenith</a>
       <table class="doctable table">
        <caption><strong>Common <code class="parameter">zenith</code> angles</strong></caption>
        
         <thead>
          <tr>
           <th>Angle</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>90°50&#039;</td>
           <td>Sunset: the point where the sun becomes invisible.</td>
          </tr>

          <tr>
           <td>96°</td>
           <td>Civil twilight: conventionally used to signify the end of dusk.</td>
          </tr>

          <tr>
           <td>102°</td>
           <td>Nautical twilight: the point at which the horizon ends being visible at sea.</td>
          </tr>

          <tr>
           <td>108°</td>
           <td>Astronomical twilight: the point at which the sun ends being the source of any illumination.</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: date
name: format
type: string
description:
<p class="para">
      Format accepted by  <span class="methodname">DateTimeInterface::format</span>.
     </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        <span class="function">date</span> will always generate
        <code class="literal">000000</code> as microseconds since it takes an <span class="type">int</span>
        parameter, whereas  <span class="methodname">DateTime::format</span> does
        support microseconds if <span class="classname">DateTime</span> was
        created with microseconds.
       </span>
      </p></blockquote>


function_name: date
name: timestamp
type: null
description:
<p class="para">
The optional <code class="parameter">timestamp</code> parameter is an
<span class="type">int</span> Unix timestamp that defaults to the current
local time if <code class="parameter">timestamp</code> is omitted or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>. In other
words, it defaults to the value of <span class="function">time</span>.
</p>


function_name: gettimeofday
name: as_float
type: bool
description:
<p class="para">
       When set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, a float instead of an array is returned.
      </p>


function_name: gmdate
name: format
type: string
description:
<p class="para">
       The format of the outputted date <span class="type">string</span>. See the formatting
       options for the <span class="function">date</span> function.
      </p>


function_name: gmmktime
name: hour
type: int
description:
<p class="para">
       The number of the hour relative to the start of the day determined by
       <code class="parameter">month</code>, <code class="parameter">day</code> and <code class="parameter">year</code>.
       Negative values reference the hour before midnight of the day in question.
       Values greater than 23 reference the appropriate hour in the following day(s).
      </p>


function_name: gmmktime
name: minute
type: null
description:
<p class="para">
       The number of the minute relative to the start of the <code class="parameter">hour</code>.
       Negative values reference the minute in the previous hour.
       Values greater than 59 reference the appropriate minute in the following hour(s).
      </p>


function_name: gmmktime
name: second
type: null
description:
<p class="para">
       The number of seconds relative to the start of the <code class="parameter">minute</code>.
       Negative values reference the second in the previous minute.
       Values greater than 59 reference the appropriate second in the following minute(s).
      </p>


function_name: gmmktime
name: month
type: null
description:
<p class="para">
       The number of the month relative to the end of the previous year.
       Values 1 to 12 reference the normal calendar months of the year in question.
       Values less than 1 (including negative values) reference the months in the previous year in reverse order, so 0 is December, -1 is November, etc.
       Values greater than 12 reference the appropriate month in the following year(s).
      </p>


function_name: gmmktime
name: day
type: null
description:
<p class="para">
       The number of the day relative to the end of the previous month.
       Values 1 to 28, 29, 30 or 31 (depending upon the month) reference the normal days in the relevant month.
       Values less than 1 (including negative values) reference the days in the previous month, so 0 is the last day of the previous month, -1 is the day before that, etc.
       Values greater than the number of days in the relevant month reference the appropriate day in the following month(s).
      </p>


function_name: idate
name: format
type: string
description:
<p class="para">
       <table class="doctable table">
        <caption><strong>The following characters are recognized in the
        <code class="parameter">format</code> parameter string</strong></caption>
        
         <thead>
          <tr>
           <th><code class="parameter">format</code> character</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><code class="literal">B</code></td>
           <td>Swatch Beat/Internet Time</td>
          </tr>

          <tr>
           <td><code class="literal">d</code></td>
           <td>Day of the month</td>
          </tr>

          <tr>
           <td><code class="literal">h</code></td>
           <td>Hour (12 hour format)</td>
          </tr>

          <tr>
           <td><code class="literal">H</code></td>
           <td>Hour (24 hour format)</td>
          </tr>

          <tr>
           <td><code class="literal">i</code></td>
           <td>Minutes</td>
          </tr>

          <tr>
           <td><code class="literal">I</code> (uppercase i)</td>
           <td>returns <code class="literal">1</code> if DST is activated,
            <code class="literal">0</code> otherwise</td>
          </tr>

          <tr>
           <td><code class="literal">L</code> (uppercase l)</td>
           <td>returns <code class="literal">1</code> for leap year,
            <code class="literal">0</code> otherwise</td>
          </tr>

          <tr>
           <td><code class="literal">m</code></td>
           <td>Month number</td>
          </tr>

          <tr>
           <td><code class="literal">N</code></td>
           <td>ISO-8601 day of the week (<code class="literal">1</code> for Monday
            through <code class="literal">7</code> for Sunday)</td>
          </tr>

          <tr>
           <td><code class="literal">o</code></td>
           <td>ISO-8601 year (4 digits)</td>
          </tr>

          <tr>
           <td><code class="literal">s</code></td>
           <td>Seconds</td>
          </tr>

          <tr>
           <td><code class="literal">t</code></td>
           <td>Days in current month</td>
          </tr>

          <tr>
           <td><code class="literal">U</code></td>
           <td>Seconds since the Unix Epoch - January 1 1970 00:00:00 UTC -
            this is the same as <span class="function">time</span></td>
          </tr>

          <tr>
           <td><code class="literal">w</code></td>
           <td>Day of the week (<code class="literal">0</code> on Sunday)</td>
          </tr>

          <tr>
           <td><code class="literal">W</code></td>
           <td>ISO-8601 week number of year, weeks starting on
            Monday</td>
          </tr>

          <tr>
           <td><code class="literal">y</code></td>
           <td>Year (1 or 2 digits - check note below)</td>
          </tr>

          <tr>
           <td><code class="literal">Y</code></td>
           <td>Year (4 digits)</td>
          </tr>

          <tr>
           <td><code class="literal">z</code></td>
           <td>Day of the year</td>
          </tr>

          <tr>
           <td><code class="literal">Z</code></td>
           <td>Timezone offset in seconds</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: localtime
name: associative
type: bool
description:
<p class="para">
       Determines whether the function should return a regular, numerically indexed array, 
       or an associative one.
      </p>


function_name: microtime
name: as_float
type: bool
description:
<p class="para">
       If used and set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, <span class="function">microtime</span> will return a
       <span class="type">float</span> instead of a <span class="type">string</span>, as described in
       the return values section below.
      </p>


function_name: mktime
name: year
type: null
description:
<p class="para">
       The number of the year, may be a two or four digit value,
       with values between 0-69 mapping to 2000-2069 and 70-100 to
       1970-2000. On systems where time_t is a 32bit signed integer, as
       most common today, the valid range for <code class="parameter">year</code> 
       is somewhere between 1901 and 2038.
      </p>


function_name: strftime
name: format
type: string
description:
<p class="para">
       <table class="doctable table">
        <caption><strong>The following characters are recognized in the
        <code class="parameter">format</code> parameter string</strong></caption>
        
         <thead>
          <tr>
           <th><code class="parameter">format</code></th>
           <th>Description</th>
           <th>Example returned values</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td style="text-align: center;"><em>Day</em></td>
           <td>---</td>
           <td>---</td>
          </tr>

          <tr>
           <td><code class="literal">%a</code></td>
           <td>An abbreviated textual representation of the day</td>
           <td><code class="literal">Sun</code> through <code class="literal">Sat</code></td>
          </tr>

          <tr>
           <td><code class="literal">%A</code></td>
           <td>A full textual representation of the day</td>
           <td><code class="literal">Sunday</code> through <code class="literal">Saturday</code></td>
          </tr>

          <tr>
           <td><code class="literal">%d</code></td>
           <td>Two-digit day of the month (with leading zeros)</td>
           <td><code class="literal">01</code> to <code class="literal">31</code></td>
          </tr>

          <tr>
           <td><code class="literal">%e</code></td>
           <td>
            Day of the month, with a space preceding single digits. Not 
            implemented as described on Windows. See below for more information.
           </td>
           <td><code class="literal"> 1</code> to <code class="literal">31</code></td>
          </tr>

          <tr>
           <td><code class="literal">%j</code></td>
           <td>Day of the year, 3 digits with leading zeros</td>
           <td><code class="literal">001</code> to <code class="literal">366</code></td>
          </tr>

          <tr>
           <td><code class="literal">%u</code></td>
           <td>ISO-8601 numeric representation of the day of the week</td>
           <td><code class="literal">1</code> (for Monday) through <code class="literal">7</code> (for Sunday)</td>
          </tr>

          <tr>
           <td><code class="literal">%w</code></td>
           <td>Numeric representation of the day of the week</td>
           <td><code class="literal">0</code> (for Sunday) through <code class="literal">6</code> (for Saturday)</td>
          </tr>

          <tr>
           <td style="text-align: center;"><em>Week</em></td>
           <td>---</td>
           <td>---</td>
          </tr>

          <tr>
           <td><code class="literal">%U</code></td>
           <td>Week number of the given year, starting with the first
           Sunday as the first week</td>
           <td><code class="literal">13</code> (for the 13th full week of the year)</td>
          </tr>

          <tr>
           <td><code class="literal">%V</code></td>
           <td>ISO-8601:1988 week number of the given year, starting with
           the first week of the year with at least 4 weekdays, with Monday
           being the start of the week</td>
           <td><code class="literal">01</code> through <code class="literal">53</code> (where 53
           accounts for an overlapping week)</td>
          </tr>

          <tr>
           <td><code class="literal">%W</code></td>
           <td>A numeric representation of the week of the year, starting
           with the first Monday as the first week</td>
           <td><code class="literal">46</code> (for the 46th week of the year beginning
           with a Monday)</td>
          </tr>

          <tr>
           <td style="text-align: center;"><em>Month</em></td>
           <td>---</td>
           <td>---</td>
          </tr>

          <tr>
           <td><code class="literal">%b</code></td>
           <td>Abbreviated month name, based on the locale</td>
           <td><code class="literal">Jan</code> through <code class="literal">Dec</code></td>
          </tr>

          <tr>
           <td><code class="literal">%B</code></td>
           <td>Full month name, based on the locale</td>
           <td><code class="literal">January</code> through <code class="literal">December</code></td>
          </tr>

          <tr>
           <td><code class="literal">%h</code></td>
           <td>Abbreviated month name, based on the locale (an alias of %b)</td>
           <td><code class="literal">Jan</code> through <code class="literal">Dec</code></td>
          </tr>

          <tr>
           <td><code class="literal">%m</code></td>
           <td>Two digit representation of the month</td>
           <td><code class="literal">01</code> (for January) through <code class="literal">12</code> (for December)</td>
          </tr>

          <tr>
           <td style="text-align: center;"><em>Year</em></td>
           <td>---</td>
           <td>---</td>
          </tr>

          <tr>
           <td><code class="literal">%C</code></td>
           <td>Two digit representation of the century (year divided by 100, truncated to an integer)</td>
           <td><code class="literal">19</code> for the 20th Century</td>
          </tr>

          <tr>
           <td><code class="literal">%g</code></td>
           <td>Two digit representation of the year going by ISO-8601:1988 standards (see %V)</td>
           <td>Example: <code class="literal">09</code> for the week of January 6, 2009</td>
          </tr>

          <tr>
           <td><code class="literal">%G</code></td>
           <td>The full four-digit version of %g</td>
           <td>Example: <code class="literal">2008</code> for the week of January 3, 2009</td>
          </tr>

          <tr>
           <td><code class="literal">%y</code></td>
           <td>Two digit representation of the year</td>
           <td>Example: <code class="literal">09</code> for 2009, <code class="literal">79</code> for 1979</td>
          </tr>

          <tr>
           <td><code class="literal">%Y</code></td>
           <td>Four digit representation for the year</td>
           <td>Example: <code class="literal">2038</code></td>
          </tr>

          <tr>
           <td style="text-align: center;"><em>Time</em></td>
           <td>---</td>
           <td>---</td>
          </tr>

          <tr>
           <td><code class="literal">%H</code></td>
           <td>Two digit representation of the hour in 24-hour format</td>
           <td><code class="literal">00</code> through <code class="literal">23</code></td>
          </tr>

          <tr>
           <td><code class="literal">%k</code></td>
           <td>Hour in 24-hour format, with a space preceding single digits</td>
           <td><code class="literal"> 0</code> through <code class="literal">23</code></td>
          </tr>

          <tr>
           <td><code class="literal">%I</code></td>
           <td>Two digit representation of the hour in 12-hour format</td>
           <td><code class="literal">01</code> through <code class="literal">12</code></td>
          </tr>

          <tr>
           <td><code class="literal">%l (lower-case &#039;L&#039;)</code></td>
           <td>Hour in 12-hour format, with a space preceding single digits</td>
           <td><code class="literal"> 1</code> through <code class="literal">12</code></td>
          </tr>

          <tr>
           <td><code class="literal">%M</code></td>
           <td>Two digit representation of the minute</td>
           <td><code class="literal">00</code> through <code class="literal">59</code></td>
          </tr>

          <tr>
           <td><code class="literal">%p</code></td>
           <td>UPPER-CASE &#039;AM&#039; or &#039;PM&#039; based on the given time</td>
           <td>Example: <code class="literal">AM</code> for 00:31,
           <code class="literal">PM</code> for 22:23. The exact result depends on the
           Operating System, and they can also return lower-case variants, or
           variants with dots (such as <code class="literal">a.m.</code>).</td>
          </tr>

          <tr>
           <td><code class="literal">%P</code></td>
           <td>lower-case &#039;am&#039; or &#039;pm&#039; based on the given time</td>
           <td>Example: <code class="literal">am</code> for 00:31,
           <code class="literal">pm</code> for 22:23. Not supported by all Operating
           Systems.</td>
          </tr>

          <tr>
           <td><code class="literal">%r</code></td>
           <td>Same as &quot;%I:%M:%S %p&quot;</td>
           <td>Example: <code class="literal">09:34:17 PM</code> for 21:34:17</td>
          </tr>

          <tr>
           <td><code class="literal">%R</code></td>
           <td>Same as &quot;%H:%M&quot;</td>
           <td>Example: <code class="literal">00:35</code> for 12:35 AM, <code class="literal">16:44</code> for 4:44 PM</td>
          </tr>

          <tr>
           <td><code class="literal">%S</code></td>
           <td>Two digit representation of the second</td>
           <td><code class="literal">00</code> through <code class="literal">59</code></td>
          </tr>

          <tr>
           <td><code class="literal">%T</code></td>
           <td>Same as &quot;%H:%M:%S&quot;</td>
           <td>Example: <code class="literal">21:34:17</code> for 09:34:17 PM</td>
          </tr>

          <tr>
           <td><code class="literal">%X</code></td>
           <td>Preferred time representation based on locale, without the date</td>
           <td>Example: <code class="literal">03:59:16</code> or <code class="literal">15:59:16</code></td>
          </tr>

          <tr>
           <td><code class="literal">%z</code></td>
           <td>The time zone offset. Not implemented as described on
           Windows. See below for more information.</td>
           <td>Example: <code class="literal">-0500</code> for US Eastern Time</td>
          </tr>

          <tr>
           <td><code class="literal">%Z</code></td>
           <td>The time zone abbreviation. Not implemented as described on
           Windows. See below for more information.</td>
           <td>Example: <code class="literal">EST</code> for Eastern Time</td>
          </tr>

          <tr>
           <td style="text-align: center;"><em>Time and Date Stamps</em></td>
           <td>---</td>
           <td>---</td>
          </tr>

          <tr>
           <td><code class="literal">%c</code></td>
           <td>Preferred date and time stamp based on locale</td>
           <td>Example: <code class="literal">Tue Feb  5 00:45:10 2009</code> for
           February 5, 2009 at 12:45:10 AM</td>
          </tr>

          <tr>
           <td><code class="literal">%D</code></td>
           <td>Same as &quot;%m/%d/%y&quot;</td>
           <td>Example: <code class="literal">02/05/09</code> for February 5, 2009</td>
          </tr>

          <tr>
           <td><code class="literal">%F</code></td>
           <td>Same as &quot;%Y-%m-%d&quot; (commonly used in database datestamps)</td>
           <td>Example: <code class="literal">2009-02-05</code> for February 5, 2009</td>
          </tr>

          <tr>
           <td><code class="literal">%s</code></td>
           <td>Unix Epoch Time timestamp (same as the <span class="function">time</span>
           function)</td>
           <td>Example: <code class="literal">305815200</code> for September 10, 1979 08:40:00 AM</td>
          </tr>

          <tr>
           <td><code class="literal">%x</code></td>
           <td>Preferred date representation based on locale, without the time</td>
           <td>Example: <code class="literal">02/05/09</code> for February 5, 2009</td>
          </tr>

          <tr>
           <td style="text-align: center;"><em>Miscellaneous</em></td>
           <td>---</td>
           <td>---</td>
          </tr>

          <tr>
           <td><code class="literal">%n</code></td>
           <td>A newline character (&quot;\n&quot;)</td>
           <td>---</td>
          </tr>

          <tr>
           <td><code class="literal">%t</code></td>
           <td>A Tab character (&quot;\t&quot;)</td>
           <td>---</td>
          </tr>

          <tr>
           <td><code class="literal">%%</code></td>
           <td>A literal percentage character (&quot;%&quot;)</td>
           <td>---</td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <div class="warning"><strong class="warning">Warning</strong>
       <p class="simpara">
        Contrary to ISO-9899:1999, Sun Solaris starts with Sunday as 1.  As a
        result, <code class="literal">%u</code> may not function as described in this
        manual.
       </p>
      </div>
      <div class="warning"><strong class="warning">Warning</strong>
       <p class="para">
        <em>Windows only:</em>
       </p>
       <p class="para">
        The <code class="literal">%e</code> modifier is not supported in the Windows
        implementation of this function. To achieve this value, the
        <code class="literal">%#d</code> modifier can be used instead. The example below
        illustrates how to write a cross platform compatible function.
       </p>
       <p class="para">
        The <code class="literal">%z</code> and <code class="literal">%Z</code> modifiers both
        return the time zone name instead of the offset or abbreviation.
       </p>
      </div>
      <div class="warning"><strong class="warning">Warning</strong>
       <p class="simpara">
        <em>macOS and musl only:</em> The <code class="literal">%P</code> modifier 
        is not supported in the macOS implementation of this function.
       </p>
      </div>


function_name: strptime
name: timestamp
type: string
description:
<p class="para">
        The string to parse (e.g. returned from <span class="function">strftime</span>).
       </p>


function_name: strptime
name: format
type: string
description:
<p class="para">
        The format used in <code class="parameter">timestamp</code> (e.g. the same as
        used in <span class="function">strftime</span>). Note that some of the format
        options available to <span class="function">strftime</span> may not have any
        effect within <span class="function">strptime</span>; the exact subset that are
        supported will vary based on the operating system and C library in
        use.
       </p>
       <p class="para">
        For more information about the format options, read the
        <span class="function">strftime</span> page.
       </p>


function_name: strtotime
name: baseTimestamp
type: null
description:
<p class="para">
       The timestamp which is used as a base for the calculation of relative
       dates.
      </p>


function_name: timezone_name_from_abbr
name: utcOffset
type: int
initializer: -1
description:
<p class="para">
       Offset from GMT in seconds. Defaults to -1 which means that first found
       time zone corresponding to <code class="parameter">abbr</code> is returned.
       Otherwise exact offset is searched and only if not found then the first
       time zone with any offset is returned.
      </p>


function_name: timezone_name_from_abbr
name: isDST
type: int
initializer: -1
description:
<p class="para">
       Daylight saving time indicator. Defaults to -1, which means that
       whether the time zone has daylight saving or not is not taken into
       consideration when searching. If this is set to 1, then the
       <code class="parameter">utcOffset</code> is assumed to be an offset with
       daylight saving in effect; if 0, then <code class="parameter">utcOffset</code>
       is assumed to be an offset without daylight saving in effect. If
       <code class="parameter">abbr</code> doesn&#039;t exist then the time zone is
       searched solely by the <code class="parameter">utcOffset</code> and
       <code class="parameter">isDST</code>.
      </p>


function_name: HRTime\StopWatch.getElapsedTime
name: unit
type: int
description:
<p class="para">
         Time unit represented by a HRTime\Unit constant. Default is
         HRTime\Unit::SECOND.
       </p>


function_name: dio_close
name: fd
type: resource
description:
<p class="para">
       The file descriptor returned by <span class="function">dio_open</span>.
      </p>


function_name: dio_fcntl
name: cmd
type: int
description:
<p class="para">
          <code class="literal">type</code> - type of lock: can be
          <strong><code><a href="dio.constants.html#constant.f-rdlck">F_RDLCK</a></code></strong> (read lock),
          <strong><code><a href="dio.constants.html#constant.f-wrlck">F_WRLCK</a></code></strong> (write lock) or
          <strong><code><a href="dio.constants.html#constant.f-unlck">F_UNLCK</a></code></strong> (unlock)
         </p>


function_name: dio_fcntl
name: args
type: mixed
description:
<p class="para">
       <code class="parameter">args</code> is an associative array, when
       <code class="parameter">cmd</code> is <strong><code><a href="dio.constants.html#constant.f-setlk">F_SETLK</a></code></strong> or
       <strong><code>F_SETLLW</code></strong>, with the following keys:
       <ul class="itemizedlist">
        <li class="listitem">
         <p class="para">
          <code class="literal">start</code> - offset where lock begins
         </p>
        </li>
        <li class="listitem">
         <p class="para">
          <code class="literal">length</code> - size of locked area. zero means to end
          of file
         </p>
        </li>
        <li class="listitem">
         <p class="para">
          <code class="literal">whence</code> - Where l_start is relative to: can be 
          <strong><code><a href="filesystem.constants.html#constant.seek-set">SEEK_SET</a></code></strong>,
          <strong><code><a href="filesystem.constants.html#constant.seek-end">SEEK_END</a></code></strong> and <strong><code><a href="filesystem.constants.html#constant.seek-cur">SEEK_CUR</a></code></strong>
         </p>
        </li>
        <li class="listitem">
         <p class="para">
          <code class="literal">type</code> - type of lock: can be
          <strong><code><a href="dio.constants.html#constant.f-rdlck">F_RDLCK</a></code></strong> (read lock),
          <strong><code><a href="dio.constants.html#constant.f-wrlck">F_WRLCK</a></code></strong> (write lock) or
          <strong><code><a href="dio.constants.html#constant.f-unlck">F_UNLCK</a></code></strong> (unlock)
         </p>
        </li>
       </ul>
      </p>


function_name: dio_open
name: flags
type: int
description:
<p class="para">
          <strong><code><a href="dio.constants.html#constant.o-noctty">O_NOCTTY</a></code></strong> - prevent the OS from
          assigning the opened file as the process&#039;s controlling
          terminal when opening a TTY device file.
         </p>


function_name: dio_open
name: mode
type: int
description:
<p class="para">
       If <code class="parameter">flags</code> contains
       <strong><code><a href="dio.constants.html#constant.o-creat">O_CREAT</a></code></strong>, <code class="parameter">mode</code> will
       set the permissions of the file (creation
       permissions). <code class="parameter">mode</code> is required for
       correct operation when <strong><code><a href="dio.constants.html#constant.o-creat">O_CREAT</a></code></strong> is
       specified in <code class="parameter">flags</code> and is ignored
       otherwise.
      </p>
      <p class="para">
       The actual permissions assigned to the created file will be
       affected by the process&#039;s <em>umask</em> setting as
       per usual.
      </p>


function_name: dio_read
name: len
type: int
initializer: 1024
description:
<p class="para">
       The number of bytes to read. If not specified,
       <span class="function">dio_read</span> reads 1K sized block.
      </p>


function_name: dio_seek
name: pos
type: int
description:
<p class="para">
          <strong><code><a href="filesystem.constants.html#constant.seek-end">SEEK_END</a></code></strong> - Specifies that 
          <code class="parameter">pos</code> is a count of characters from the end of
          the file. A negative count specifies a position within the current 
          extent of the file; a positive count specifies a position past the 
          current end. If you set the position past the current end, and 
          actually write data, you will extend the file with zeros up to that
          position.
         </p>


function_name: dio_seek
name: whence
type: int
initializer: SEEK_SET
description:
<p class="para">
       Specifies how the position <code class="parameter">pos</code> should be 
       interpreted:
       <ul class="itemizedlist">
        <li class="listitem">
         <p class="para">
          <strong><code><a href="filesystem.constants.html#constant.seek-set">SEEK_SET</a></code></strong> (default) - specifies that 
          <code class="parameter">pos</code> is specified from the beginning of the 
          file.
         </p>
        </li>
        <li class="listitem">
         <p class="para">
          <strong><code><a href="filesystem.constants.html#constant.seek-cur">SEEK_CUR</a></code></strong> - Specifies that 
          <code class="parameter">pos</code> is a count of characters from the current
          file position. This count may be positive or negative.
         </p>
        </li>
        <li class="listitem">
         <p class="para">
          <strong><code><a href="filesystem.constants.html#constant.seek-end">SEEK_END</a></code></strong> - Specifies that 
          <code class="parameter">pos</code> is a count of characters from the end of
          the file. A negative count specifies a position within the current 
          extent of the file; a positive count specifies a position past the 
          current end. If you set the position past the current end, and 
          actually write data, you will extend the file with zeros up to that
          position.
         </p>
        </li>
       </ul>
      </p>


function_name: dio_write
name: len
type: int
description:
<p class="para">
       The length of data to write in bytes. If not specified, the 
       function writes all the data to the specified file.
      </p>


function_name: closedir
name: dir_handle
type: null
description:
<p class="para">
       The directory handle <span class="type">resource</span> previously opened
       with <span class="function">opendir</span>. If the directory handle is 
       not specified, the last link opened by <span class="function">opendir</span> 
       is assumed.
      </p>


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


function_name: opendir
name: context
type: null
description:
<p class="para">
       For a description of the <code class="parameter">context</code> parameter, 
       refer to <a href="ref.stream.html" class="link">the streams section</a> of
       the manual.
      </p>


function_name: scandir
name: sorting_order
type: int
description:
<p class="para">
       By default, the sorted order is alphabetical in ascending order.  If
       the optional <code class="parameter">sorting_order</code> is set to
       <strong><code><a href="dir.constants.html#constant.scandir-sort-descending">SCANDIR_SORT_DESCENDING</a></code></strong>, then the sort order is
       alphabetical in descending order. If it is set to
       <strong><code><a href="dir.constants.html#constant.scandir-sort-none">SCANDIR_SORT_NONE</a></code></strong> then the result is unsorted.
      </p>


function_name: finfo_buffer
name: finfo
type: finfo
description:
<p class="para">An <span class="classname">finfo</span> instance, returned by <span class="function">finfo_open</span>.</p>


function_name: finfo_buffer
name: flags
type: int
description:
<p class="para">
       One or disjunction of more <a href="fileinfo.constants.html" class="link">Fileinfo
       constants</a>.
      </p>


function_name: finfo_file
name: context
type: null
description:
<p class="para">
       For a description of <code class="literal">contexts</code>, refer to <a href="ref.stream.html" class="xref">Stream Functions</a>.
      </p>


function_name: finfo_open
name: magic_database
type: null
description:
<p class="para">
       Name of a magic database file, usually something like
       <var class="filename">/path/to/magic.mime</var>. If not specified, the
       <code class="literal">MAGIC</code> environment variable is used. If the
       environment variable isn&#039;t set, then PHP&#039;s bundled magic database will
       be used.
      </p>
      <p class="para">
       Passing <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> or an empty string will be equivalent to the default
       value.
      </p>


function_name: basename
name: path
type: string
description:
<p class="para">
       A path.
      </p>
      <p class="para">
       On Windows, both slash (<code class="literal">/</code>) and backslash
       (<code class="literal">\</code>) are used as directory separator character. In
       other environments, it is the forward slash (<code class="literal">/</code>).
      </p>


function_name: basename
name: suffix
type: string
initializer: ""
description:
<p class="para">
       If the name component ends in <code class="parameter">suffix</code> this will also
       be cut off.
      </p>


function_name: chmod
name: permissions
type: int
description:
<p class="para">
       Note that <code class="parameter">permissions</code> is not automatically
       assumed to be an octal value, so to ensure the expected operation,
       you need to prefix <code class="parameter">permissions</code> with a zero (0). 
       Strings such as &quot;g+w&quot; will not work properly.
      </p>
      <p class="para">
       <div class="informalexample">
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />chmod</span><span style="color: #007700">(</span><span style="color: #DD0000">"/somedir/somefile"</span><span style="color: #007700">, </span><span style="color: #0000BB">755</span><span style="color: #007700">);   </span><span style="color: #FF8000">// decimal; probably incorrect<br /></span><span style="color: #0000BB">chmod</span><span style="color: #007700">(</span><span style="color: #DD0000">"/somedir/somefile"</span><span style="color: #007700">, </span><span style="color: #DD0000">"u+rwx,go+rx"</span><span style="color: #007700">); </span><span style="color: #FF8000">// string; incorrect<br /></span><span style="color: #0000BB">chmod</span><span style="color: #007700">(</span><span style="color: #DD0000">"/somedir/somefile"</span><span style="color: #007700">, </span><span style="color: #0000BB">0755</span><span style="color: #007700">);  </span><span style="color: #FF8000">// octal; correct value of mode<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p>
      <p class="para">
       The <code class="parameter">permissions</code> parameter consists of three octal
       number components specifying access restrictions for the owner,
       the user group in which the owner is in, and to everybody else in
       this order. One component can be computed by adding up the needed
       permissions for that target user base. Number 1 means that you
       grant execute rights, number 2 means that you make the file
       writeable, number 4 means that you make the file readable. Add
       up these numbers to specify needed rights. You can also read more
       about modes on Unix systems with &#039;<strong class="command">man 1 chmod</strong>&#039;
       and &#039;<strong class="command">man 2 chmod</strong>&#039;.
      </p>
      <p class="para">
       <div class="informalexample">
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Read and write for owner, nothing for everybody else<br /></span><span style="color: #0000BB">chmod</span><span style="color: #007700">(</span><span style="color: #DD0000">"/somedir/somefile"</span><span style="color: #007700">, </span><span style="color: #0000BB">0600</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Read and write for owner, read for everybody else<br /></span><span style="color: #0000BB">chmod</span><span style="color: #007700">(</span><span style="color: #DD0000">"/somedir/somefile"</span><span style="color: #007700">, </span><span style="color: #0000BB">0644</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Everything for owner, read and execute for others<br /></span><span style="color: #0000BB">chmod</span><span style="color: #007700">(</span><span style="color: #DD0000">"/somedir/somefile"</span><span style="color: #007700">, </span><span style="color: #0000BB">0755</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Everything for owner, read and execute for owner's group<br /></span><span style="color: #0000BB">chmod</span><span style="color: #007700">(</span><span style="color: #DD0000">"/somedir/somefile"</span><span style="color: #007700">, </span><span style="color: #0000BB">0750</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p>


function_name: clearstatcache
name: filename
type: string
initializer: ""
description:
<p class="para">
       Clear the realpath cache for a specific filename only; only
       used if <code class="parameter">clear_realpath_cache</code> is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>.
      </p>


function_name: copy
name: to
type: string
description:
<p class="para">
       The destination path. If <code class="parameter">to</code> is a URL, the
       copy operation may fail if the wrapper does not support overwriting of
       existing files.
      </p>
      <div class="warning"><strong class="warning">Warning</strong>
       <p class="para">
        If the destination file already exists, it will be overwritten.
       </p>
      </div>


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


function_name: dirname
name: levels
type: int
initializer: 1
description:
<p class="para">
       The number of parent directories to go up.
      </p>
      <p class="para">
       This must be an integer greater than 0.
      </p>


function_name: disk_free_space
name: directory
type: string
description:
<p class="para">
       A directory of the filesystem or disk partition.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Given a file name instead of a directory, the behaviour of the
        function is unspecified and may differ between operating systems and
        PHP versions.
       </p>
      </p></blockquote>


function_name: fclose
name: stream
type: resource
description:
<p class="para">
       The file pointer must be valid, and must point to a file successfully
       opened by <span class="function">fopen</span> or <span class="function">fsockopen</span>.
      </p>


function_name: fdatasync
name: stream
type: resource
description:
<p class="para">The file pointer must be valid, and must point to
a file successfully opened by <span class="function">fopen</span> or
<span class="function">fsockopen</span> (and not yet closed by
<span class="function">fclose</span>).</p>


function_name: fgetcsv
name: stream
type: resource
description:
<p class="para">
       A valid file pointer to a file successfully opened by
       <span class="function">fopen</span>, <span class="function">popen</span>, or
       <span class="function">fsockopen</span>.
      </p>


function_name: fgetcsv
name: length
type: null
description:
<p class="para">
       Must be greater than the longest line (in characters) to be found in
       the CSV file (allowing for trailing line-end characters). Otherwise the
       line is split in chunks of <code class="parameter">length</code> characters,
       unless the split would occur inside an enclosure.
      </p>
      <p class="para">
       Omitting this parameter (or setting it to 0,
       or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> in PHP 8.0.0 or later) the maximum line length is not limited,
       which is slightly slower.
      </p>


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


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


function_name: fgetcsv
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>
      <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: fgets
name: length
type: null
description:
<p class="para">
       Reading ends when <code class="parameter">length</code> - 1 bytes have been
       read, or a newline (which is included in the return value), or an EOF
       (whichever comes first). If no length is specified, it will keep
       reading from the stream until it reaches the end of the line.
      </p>


function_name: fgetss
name: allowable_tags
type: string
description:
<p class="para">
       You can use the optional third parameter to specify tags which should
       not be stripped.
       See <span class="function">strip_tags</span> for details regarding
       <code class="parameter">allowable_tags</code>.
      </p>


function_name: file_exists
name: filename
type: string
description:
<p class="para">
       Path to the file or directory.
      </p>
      <p class="para">
       On windows, use <var class="filename">//computername/share/filename</var> or
       <var class="filename">\\computername\share\filename</var> to check files on
       network shares.
      </p>


function_name: file_get_contents
name: use_include_path
type: bool
description:
<blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        The <strong><code><a href="filesystem.constants.html#constant.file-use-include-path">FILE_USE_INCLUDE_PATH</a></code></strong> constant can be used
        to trigger <a href="ini.core.html#ini.include-path" class="link">include path</a>
        search.
        This is not possible if <a href="language.types.declarations.html#language.types.declarations.strict" class="link">strict typing</a>
        is enabled, since <strong><code><a href="filesystem.constants.html#constant.file-use-include-path">FILE_USE_INCLUDE_PATH</a></code></strong> is an
        <span class="type">int</span>. Use <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> instead.
       </p>
      </p></blockquote>


function_name: file_get_contents
name: context
type: null
description:
<p class="para">
       A valid context resource created with 
       <span class="function">stream_context_create</span>. If you don&#039;t need to use a
       custom context, you can skip this parameter by <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
      </p>


function_name: file_get_contents
name: offset
type: int
description:
<p class="para">
       The offset where the reading starts on the original stream.
       Negative offsets count from the end of the stream.
      </p>
      <p class="para">
       Seeking (<code class="parameter">offset</code>) is not supported with remote files.
       Attempting to seek on non-local files may work with small offsets, but this
       is unpredictable because it works on the buffered stream.
      </p>


function_name: file_get_contents
name: length
type: null
description:
<p class="para">
       Maximum length of data read. The default is to read until end
       of file is reached. Note that this parameter is applied to the 
       stream processed by the filters.
      </p>


function_name: file_put_contents
name: data
type: mixed
description:
<p class="para">
       The data to write. Can be either a <span class="type">string</span>, an
       <span class="type">array</span> or a <span class="type">stream</span> resource.
      </p>
      <p class="para">
       If <code class="parameter">data</code> is a <span class="type">stream</span> resource, the
       remaining buffer of that stream will be copied to the specified file.
       This is similar with using <span class="function">stream_copy_to_stream</span>.
      </p>
      <p class="para">
       You can also specify the <code class="parameter">data</code> parameter as a single
       dimension array. This is equivalent to
       <code class="literal">file_put_contents($filename, implode(&#039;&#039;, $array))</code>.
      </p>


function_name: file_put_contents
name: flags
type: int
description:
<p class="para">
       The value of <code class="parameter">flags</code> can be any combination of 
       the following flags, joined with the binary OR (<code class="literal">|</code>)
       operator.
      </p>
      <p class="para">
       <table class="doctable table">
        <caption><strong>Available flags</strong></caption>
        
         <thead>
          <tr>
           <th>Flag</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>
            <strong><code><a href="filesystem.constants.html#constant.file-use-include-path">FILE_USE_INCLUDE_PATH</a></code></strong>
           </td>
           <td>
            Search for <code class="parameter">filename</code> in the include directory.
            See <a href="ini.core.html#ini.include-path" class="link">include_path</a> for more
            information.
           </td>
          </tr>

          <tr>
           <td>
            <strong><code><a href="filesystem.constants.html#constant.file-append">FILE_APPEND</a></code></strong>
           </td>
           <td>
            If file <code class="parameter">filename</code> already exists, append 
            the data to the file instead of overwriting it.
           </td>
          </tr>

          <tr>
           <td>
            <strong><code><a href="filesystem.constants.html#constant.lock-ex">LOCK_EX</a></code></strong>
           </td>
           <td>
            Acquire an exclusive lock on the file while proceeding to the 
            writing. In other words, a <span class="function">flock</span> call happens
            between the <span class="function">fopen</span> call and the 
            <span class="function">fwrite</span> call. This is not identical to an 
            <span class="function">fopen</span> call with mode &quot;x&quot;.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: file
name: filename
type: string
description:
<p class="para">
       Path to the file.
      </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: flock
name: stream
type: resource
description:
<p class="para">A file system pointer <span class="type">resource</span>
that is typically created using <span class="function">fopen</span>.</p>


function_name: flock
name: operation
type: int
description:
<p class="simpara">
          <strong><code><a href="filesystem.constants.html#constant.lock-un">LOCK_UN</a></code></strong> to release a lock (shared or exclusive).
         </p>


function_name: flock
name: would_block
type: int
description:
<p class="para">
       The optional third argument is set to 1 if the lock would block
       (EWOULDBLOCK errno condition).
      </p>


function_name: fnmatch
name: pattern
type: string
description:
<p class="para">
       The <code class="parameter">pattern</code> to match against. Usually, the <code class="parameter">pattern</code> will contain
       wildcards like <code class="literal">&#039;?&#039;</code> and <code class="literal">&#039;*&#039;</code>.
       <table class="doctable table">
        <caption><strong>
         Wildcards to be used in <code class="parameter">pattern</code> parameter
        </strong></caption>
        
         <thead>
          <tr>
           <th>Wildcard</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>
            <code class="literal">?</code>
           </td>
           <td>
            Question mark will match any single character.
            For example, pattern <code class="literal">&quot;file?.txt&quot;</code> will match <code class="literal">&quot;file1.txt&quot;</code> and
            <code class="literal">&quot;fileA.txt&quot;</code>, but will not match <code class="literal">&quot;file10.txt&quot;</code>.
           </td>
          </tr>

          <tr>
           <td>
            <code class="literal">*</code>
           </td>
           <td>
            Asterisk will match zero or more characters.
            For example, pattern <code class="literal">&quot;foo*.xml&quot;</code> will match <code class="literal">&quot;foo.xml&quot;</code> and
            <code class="literal">&quot;foobar.xml&quot;</code>.
           </td>
          </tr>

          <tr>
           <td>
            <code class="literal">[ ]</code>
           </td>
           <td>
            Square brackets are used to create ranges of ASCII codepoints or sets of characters.
            For example, pattern <code class="literal">&quot;index.php[45]&quot;</code> will match <code class="literal">&quot;index.php4&quot;</code> and
            <code class="literal">&quot;index.php5&quot;</code>, but will not match <code class="literal">&quot;index.phpt&quot;</code>.
            Well known ranges are <code class="literal">[0-9]</code>, <code class="literal">[a-z]</code>, and <code class="literal">[A-Z]</code>.
            Multiple sets and ranges can be used at the same time, for example <code class="literal">[0-9a-zABC]</code>.
           </td>
          </tr>

          <tr>
           <td>
            <code class="literal">!</code>
           </td>
           <td>
            Exclamation mark is used to negate characters within square brackets.
            For example, <code class="literal">&quot;[!A-Z]*.html&quot;</code> will match <code class="literal">&quot;demo.html&quot;</code>, but will not match
            <code class="literal">&quot;Demo.html&quot;</code>.
           </td>
          </tr>

          <tr>
           <td>
            <code class="literal">\</code>
           </td>
           <td>
            Backslash is used to escape special characters.
            For example, <code class="literal">&quot;Name\?&quot;</code> will match <code class="literal">&quot;Name?&quot;</code>, but will not match
            <code class="literal">&quot;Names&quot;</code>.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: fnmatch
name: filename
type: string
description:
<p class="para">
       The tested string. This function is especially useful for filenames,
       but may also be used on regular strings.
      </p>
      <p class="para">
       The average user may be used to shell patterns or at least in their
       simplest form to <code class="literal">&#039;?&#039;</code> and <code class="literal">&#039;*&#039;</code>
       wildcards so using <span class="function">fnmatch</span> instead of
       <span class="function">preg_match</span> for
       frontend search expression input may be way more convenient for
       non-programming users.
      </p>


function_name: fnmatch
name: flags
type: int
description:
<p class="para">
       The value of <code class="parameter">flags</code> can be any combination of 
       the following flags, joined with the
       <a href="language.operators.bitwise.html" class="link">binary OR (|) operator</a>.
       <table class="doctable table">
        <caption><strong>
         A list of possible flags for <span class="function">fnmatch</span>
        </strong></caption>
        
         <thead>
          <tr>
           <th><code class="parameter">Flag</code></th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="filesystem.constants.html#constant.fnm-noescape">FNM_NOESCAPE</a></code></strong></td>
           <td>
            Disable backslash escaping.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="filesystem.constants.html#constant.fnm-pathname">FNM_PATHNAME</a></code></strong></td>
           <td>
            Slash in string only matches slash in the given pattern.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="filesystem.constants.html#constant.fnm-period">FNM_PERIOD</a></code></strong></td>
           <td>
            Leading period in string must be exactly matched by period in the given pattern.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="filesystem.constants.html#constant.fnm-casefold">FNM_CASEFOLD</a></code></strong></td>
           <td>
            Caseless match. Part of the GNU extension.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: fopen
name: filename
type: string
description:
<p class="para">
       If <code class="parameter">filename</code> is of the form &quot;scheme://...&quot;, it
       is assumed to be a URL and 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
       <code class="parameter">filename</code> specifies a regular file.
      </p>
      <p class="para">
       If PHP has decided that <code class="parameter">filename</code> specifies
       a local file, then it will try to open a stream on that file.
       The file must be accessible to PHP, so you need to ensure that
       the file access permissions allow this access.
       If you have enabled
       <a href="ini.core.html#ini.open-basedir" class="link">open_basedir</a> further
       restrictions may apply.
      </p>
      <p class="para">
       If PHP has decided that <code class="parameter">filename</code> specifies
       a registered protocol, and that protocol is registered as a
       network URL, PHP will check to make sure that
       <a href="filesystem.configuration.html#ini.allow-url-fopen" class="link">allow_url_fopen</a> is
       enabled. If it is switched off, PHP will emit a warning and
       the fopen call will fail.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        The list of supported protocols can be found in <a href="wrappers.html" class="xref">Supported Protocols and Wrappers</a>. Some protocols (also referred to as
        <code class="literal">wrappers</code>) support <code class="literal">context</code>
        and/or <var class="filename">php.ini</var> options. Refer to the specific page for the
        protocol in use for a list of options which can be set. (e.g.
        <var class="filename">php.ini</var> value <code class="literal">user_agent</code> used by the
        <code class="literal">http</code> wrapper).
       </p>
      </p></blockquote>
      <p class="para">
       On the Windows platform, be careful to escape any backslashes
       used in the path to the file, or use forward slashes.
       <div class="informalexample">
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$handle </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"c:\\folder\\resource.txt"</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p>


function_name: fopen
name: mode
type: string
description:
<p class="para">
       The <code class="parameter">mode</code> parameter specifies the type of access
       you require to the stream.  It may be any of the following:
       <table class="doctable table">
        <caption><strong>
         A list of possible modes for <span class="function">fopen</span>
         using <code class="parameter">mode</code>
        </strong></caption>
        
         <thead>
          <tr>
           <th><code class="parameter">mode</code></th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><code class="literal">&#039;r&#039;</code></td>
           <td>
            Open for reading only; place the file pointer at the
            beginning of the file.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;r+&#039;</code></td>
           <td>
            Open for reading and writing; place the file pointer at
            the beginning of the file.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;w&#039;</code></td>
           <td>
            Open for writing only; place the file pointer at the
            beginning of the file and truncate the file to zero length.
            If the file does not exist, attempt to create it.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;w+&#039;</code></td>
           <td>
            Open for reading and writing; otherwise it has the
            same behavior as <code class="literal">&#039;w&#039;</code>.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;a&#039;</code></td>
           <td>
            Open for writing only; place the file pointer at the end of
            the file. If the file does not exist, attempt to create it.
            In this mode, <span class="function">fseek</span> has no effect, writes are always appended.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;a+&#039;</code></td>
           <td>
            Open for reading and writing; place the file pointer at
            the end of the file. If the file does not exist, attempt to
            create it. In this mode, <span class="function">fseek</span> only affects
            the reading position, writes are always appended.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;x&#039;</code></td>
           <td>
            Create and open for writing only; place the file pointer at the
            beginning of the file.  If the file already exists, the
            <span class="function">fopen</span> call will fail by returning <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> and
            generating an error of level <strong><code><a href="errorfunc.constants.html#constant.e-warning">E_WARNING</a></code></strong>.  If
            the file does not exist, attempt to create it.  This is equivalent
            to specifying <code class="literal">O_EXCL|O_CREAT</code> flags for the
            underlying <code class="literal">open(2)</code> system call. 
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;x+&#039;</code></td>
           <td>
            Create and open for reading and writing; otherwise it has the
            same behavior as <code class="literal">&#039;x&#039;</code>.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;c&#039;</code></td>
           <td>
            Open the file for writing only. If the file does not exist, it is
            created. If it exists, it is neither truncated (as opposed to
            <code class="literal">&#039;w&#039;</code>), nor the call to this function fails (as is
            the case with <code class="literal">&#039;x&#039;</code>). The file pointer is
            positioned on the beginning of the file. This may be useful if it&#039;s
            desired to get an advisory lock (see <span class="function">flock</span>)
            before attempting to modify the file, as using
            <code class="literal">&#039;w&#039;</code> could truncate the file before the lock
            was obtained (if truncation is desired,
            <span class="function">ftruncate</span> can be used after the lock is
            requested).
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;c+&#039;</code></td>
           <td>
            Open the file for reading and writing; otherwise it has the same
            behavior as <code class="literal">&#039;c&#039;</code>.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;e&#039;</code></td>
           <td>
            Set close-on-exec flag on the opened file descriptor. Only
            available in PHP compiled on POSIX.1-2008 conform systems.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Different operating system families have different line-ending
        conventions.  When you write a text file and want to insert a line
        break, you need to use the correct line-ending character(s) for your
        operating system.  Unix based systems use <code class="literal">\n</code> as the
        line ending character, Windows based systems use <code class="literal">\r\n</code>
        as the line ending characters and Macintosh based systems (Mac OS Classic) used
        <code class="literal">\r</code> as the line ending character.
       </p>
       <p class="para">
        If you use the wrong line ending characters when writing your files, you
        might find that other applications that open those files will &quot;look
        funny&quot;.
       </p>
       <p class="para">
        Windows offers a text-mode translation flag (<code class="literal">&#039;t&#039;</code>)
        which will transparently translate <code class="literal">\n</code> to
        <code class="literal">\r\n</code> when working with the file.  In contrast, you
        can also use <code class="literal">&#039;b&#039;</code> to force binary mode, which will not
        translate your data.  To use these flags, specify either
        <code class="literal">&#039;b&#039;</code> or <code class="literal">&#039;t&#039;</code> as the last character
        of the <code class="parameter">mode</code> parameter.
       </p>
       <p class="para">
        The default translation mode is <code class="literal">&#039;b&#039;</code>.
        You can use the <code class="literal">&#039;t&#039;</code>
        mode if you are working with plain-text files and you use
        <code class="literal">\n</code> to delimit your line endings in your script, but
        expect your files to be readable with applications such as old versions of notepad.  You
        should use the <code class="literal">&#039;b&#039;</code> in all other cases.
       </p>
       <p class="para">
        If you specify the &#039;t&#039; flag when working with binary files, you
        may experience strange problems with your data, including broken image
        files and strange problems with <code class="literal">\r\n</code> characters.
       </p>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        For portability, it is also strongly recommended that
        you re-write code that uses or relies upon the <code class="literal">&#039;t&#039;</code>
        mode so that it uses the correct line endings and
        <code class="literal">&#039;b&#039;</code> mode instead.
       </p>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        The <code class="parameter">mode</code> is ignored for <var class="filename">php://output</var>,
        <var class="filename">php://input</var>, <var class="filename">php://stdin</var>,
        <var class="filename">php://stdout</var>, <var class="filename">php://stderr</var> and
        <var class="filename">php://fd</var> stream wrappers.
       </span>
      </p></blockquote>


function_name: fopen
name: use_include_path
type: bool
description:
<p class="para">
       The optional third <code class="parameter">use_include_path</code> parameter
       can be set to &#039;1&#039; or <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> if you want to search for the file in the
       <a href="ini.core.html#ini.include-path" class="link">include_path</a>, too.
      </p>


function_name: 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: 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: 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: 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: fread
name: length
type: int
description:
<p class="para">
       Up to <code class="parameter">length</code> number of bytes read.
      </p>


function_name: fscanf
name: format
type: string
description:
<p class="para">
       The interpreted format for <code class="parameter">string</code>, which is
       described in the documentation for <span class="function">sprintf</span> with
       following differences:
       <ul class="simplelist">
        <li>
         Function is not locale-aware.
        </li>
        <li>
         <code class="literal">F</code>, <code class="literal">g</code>, <code class="literal">G</code> and
         <code class="literal">b</code> are not supported.
        </li>
        <li>
         <code class="literal">D</code> stands for decimal number.
        </li>
        <li>
         <code class="literal">i</code> stands for integer with base detection.
        </li>
        <li>
         <code class="literal">n</code> stands for number of characters processed so far.
        </li>
        <li>
         <code class="literal">s</code> stops reading at any whitespace character.
        </li>
        <li>
         <code class="literal">*</code> instead of <code class="literal">argnum$</code> suppresses
         the assignment of this conversion specification.
        </li>
       </ul>
      </p>


function_name: fseek
name: offset
type: int
description:
<p class="para">
       The offset.
      </p>
      <p class="para">
       To move to a position before the end-of-file, you need to pass
       a negative value in <code class="parameter">offset</code> and
       set <code class="parameter">whence</code>
       to <strong><code><a href="filesystem.constants.html#constant.seek-end">SEEK_END</a></code></strong>.
      </p>


function_name: 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>


function_name: ftell
name: stream
type: resource
description:
<p class="para">
       The file pointer must be valid, and must point to a file successfully
       opened by <span class="function">fopen</span> or <span class="function">popen</span>.
       <span class="function">ftell</span> gives undefined results for append-only streams
       (opened with &quot;a&quot; flag).
      </p>


function_name: ftruncate
name: stream
type: resource
description:
<p class="para">
       The file pointer.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        The <code class="parameter">stream</code> must be open for writing.
       </p>
      </p></blockquote>


function_name: 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 then the file
        is extended with null bytes.
       </p>
       <p class="para">
        If <code class="parameter">size</code> is smaller than the file then the file
        is truncated to that size.
       </p>
      </p></blockquote>


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


function_name: glob
name: pattern
type: string
description:
<p class="simpara">
          <code class="literal">\</code> - Escapes the following character,
          except when the <strong><code>GLOB_NOESCAPE</code></strong> flag is used.
         </p>


function_name: glob
name: flags
type: int
description:
<p class="simpara">
     All <strong><code>GLOB_<span class="replaceable">*</span></code></strong> flags combined.
     Equivalent to <code class="literal">0</code> | <strong><code>GLOB_BRACE</code></strong> |
     <strong><code>GLOB_MARK</code></strong> | <strong><code>GLOB_NOSORT</code></strong> |
     <strong><code>GLOB_NOCHECK</code></strong> | <strong><code>GLOB_NOESCAPE</code></strong> |
     <strong><code>GLOB_ERR</code></strong> | <strong><code>GLOB_ONLYDIR</code></strong>
    </p>


function_name: is_dir
name: filename
type: string
description:
<p class="para">
       Path to the file. If <code class="parameter">filename</code> is a relative
       filename, it will be checked relative to the current working
       directory. If <code class="parameter">filename</code> is a symbolic or hard link 
       then the link will be resolved and checked. If you have enabled
       <a href="ini.core.html#ini.open-basedir" class="link">open_basedir</a> further
       restrictions may apply.
      </p>


function_name: mkdir
name: directory
type: string
description:
<p class="para">
       The directory path.
       <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>
      </p>


function_name: mkdir
name: permissions
type: int
initializer: 0777
description:
<p class="para">
       The permissions are 0777 by default, which means the widest possible
       access. For more information on permissions, read the details
       on the <span class="function">chmod</span> page.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        <code class="parameter">permissions</code> is ignored on Windows.
       </p>
      </p></blockquote>
      <p class="para">
       Note that you probably want to specify the <code class="parameter">permissions</code> as an octal number,
       which means it should have a leading zero. The <code class="parameter">permissions</code> is also modified
       by the current umask, which you can change using
       <span class="function">umask</span>.
      </p>


function_name: mkdir
name: recursive
type: bool
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, then any parent directories to the <code class="parameter">directory</code> specified will
       also be created, with the same permissions.
      </p>


function_name: parse_ini_file
name: filename
type: string
description:
<p class="para">
       The filename of the ini file being parsed. If a relative path is used,
       it is evaluated relative to the current working directory, then the
       <a href="ini.core.html#ini.include-path" class="link">include_path</a>.
      </p>


function_name: parse_ini_file
name: process_sections
type: bool
description:
<p class="para">
       By setting the <code class="parameter">process_sections</code>
       parameter to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, you get a multidimensional array, with
       the section names and settings included. The default
       for <code class="parameter">process_sections</code> is <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>      
      </p>


function_name: parse_ini_file
name: scanner_mode
type: int
description:
<p class="para">
       Can either be <strong><code><a href="filesystem.constants.html#constant.ini-scanner-normal">INI_SCANNER_NORMAL</a></code></strong> (default) or 
       <strong><code><a href="filesystem.constants.html#constant.ini-scanner-raw">INI_SCANNER_RAW</a></code></strong>. If <strong><code><a href="filesystem.constants.html#constant.ini-scanner-raw">INI_SCANNER_RAW</a></code></strong> 
       is supplied, then option values will not be parsed.
      </p>
      <p class="para">
    As of PHP 5.6.1 can also be specified as <strong><code><a href="filesystem.constants.html#constant.ini-scanner-typed">INI_SCANNER_TYPED</a></code></strong>.
    In this mode boolean, null and integer types are preserved when possible.
    String values <code class="literal">&quot;true&quot;</code>, <code class="literal">&quot;on&quot;</code> and <code class="literal">&quot;yes&quot;</code>
    are converted to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>. <code class="literal">&quot;false&quot;</code>, <code class="literal">&quot;off&quot;</code>, <code class="literal">&quot;no&quot;</code>
    and <code class="literal">&quot;none&quot;</code> are considered <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>. <code class="literal">&quot;null&quot;</code> is converted to <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>
    in typed mode. Also, all numeric strings are converted to integer type if it is possible.
   </p>


function_name: pathinfo
name: flags
type: int
description:
<p class="para">
       If present, specifies a specific element to be returned; one of
       <strong><code><a href="filesystem.constants.html#constant.pathinfo-dirname">PATHINFO_DIRNAME</a></code></strong>,
       <strong><code><a href="filesystem.constants.html#constant.pathinfo-basename">PATHINFO_BASENAME</a></code></strong>,
       <strong><code><a href="filesystem.constants.html#constant.pathinfo-extension">PATHINFO_EXTENSION</a></code></strong> or
       <strong><code><a href="filesystem.constants.html#constant.pathinfo-filename">PATHINFO_FILENAME</a></code></strong>.
      </p>
      <p class="para">If <code class="parameter">flags</code> is not specified, returns all
       available elements.
      </p>


function_name: pclose
name: handle
type: resource
description:
<p class="para">
       The file pointer must be valid, and must have been returned by a
       successful call to <span class="function">popen</span>.
      </p>


function_name: popen
name: mode
type: string
description:
<p class="para">
       The mode. Either <code class="literal">&#039;r&#039;</code> for reading, or <code class="literal">&#039;w&#039;</code>
       for writing.
      </p>
      <p class="para">
       On Windows, <span class="function">popen</span> defaults to text mode, i.e. any <code class="literal">\n</code>
       characters written to or read from the pipe will be translated to <code class="literal">\r\n</code>.
       If this is not desired, binary mode can be enforced by setting <code class="parameter">mode</code>
       to <code class="literal">&#039;rb&#039;</code> and <code class="literal">&#039;wb&#039;</code>, respectively.
      </p>


function_name: readfile
name: use_include_path
type: bool
description:
<p class="para">
       You can use the optional second parameter and set it to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, if
       you want to search for the file in the <a href="ini.core.html#ini.include-path" class="link">include_path</a>, too.
      </p>


function_name: realpath
name: path
type: string
description:
<p class="para">
       The path being checked.
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
         Whilst a path must be supplied, the value can be an empty string.
         In this case, the value is interpreted as the current directory.
        </p>
       </p></blockquote>
      </p>


function_name: rename
name: from
type: string
description:
<p class="para">
       The old name.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        The wrapper used in <code class="parameter">from</code>
        <em>must</em> match the wrapper used in
        <code class="parameter">to</code>.
       </p>
      </p></blockquote>


function_name: rename
name: to
type: string
description:
<p class="para">
       The new name.
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <span class="simpara">
         On Windows, if <code class="parameter">to</code> already exists, it must be writable.
         Otherwise <span class="function">rename</span> fails and issues <strong><code><a href="errorfunc.constants.html#constant.e-warning">E_WARNING</a></code></strong>.
        </span>
       </p></blockquote>
      </p>


function_name: rewind
name: stream
type: resource
description:
<p class="para">
       The file pointer must be valid, and must point to a file
       successfully opened by <span class="function">fopen</span>.
      </p>


function_name: tempnam
name: prefix
type: string
description:
<p class="para">
       The prefix of the generated temporary filename.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        Only the first 63 characters of the prefix are used, the rest are ignored.
        Windows uses only the first three characters of the prefix.
       </span>
      </p></blockquote>


function_name: touch
name: mtime
type: null
description:
<p class="para">
       The touch time. If <code class="parameter">mtime</code> is <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, 
       the current system <span class="function">time</span> is used.
      </p>


function_name: touch
name: atime
type: null
description:
<p class="para">
       If not <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the access time of the given filename is set to
       the value of <code class="parameter">atime</code>. Otherwise, it is set to
       the value passed to the <code class="parameter">mtime</code> parameter.
       If both are <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the current system time is used.
      </p>


function_name: unlink
name: filename
type: string
description:
<p class="para">
       Path to the file.
      </p>
      <p class="para">
       If the file is a symlink, the symlink will be deleted. On Windows, to delete
       a symlink to a directory, <span class="function">rmdir</span> has to be used instead.
      </p>


function_name: inotify_add_watch
name: mask
type: int
description:
<p class="para">
       Events to watch for. See <a href="inotify.constants.html" class="link">Predefined Constants</a>.
      </p>


function_name: xattr_get
name: flags
type: int
description:
<p class="para">
       <table class="doctable table">
        <caption><strong>Supported xattr flags</strong></caption>
        
         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="xattr.constants.html#constant.xattr-dontfollow">XATTR_DONTFOLLOW</a></code></strong></td>
           <td>Do not follow the symbolic link but operate on symbolic link itself.</td>
          </tr>

          <tr>
           <td><strong><code><a href="xattr.constants.html#constant.xattr-root">XATTR_ROOT</a></code></strong></td>
           <td>Set attribute in root (trusted) namespace. Requires root privileges.</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: xattr_set
name: name
type: string
description:
<p class="para">
       The name of the extended attribute. This attribute will be created if 
       it doesn&#039;t exist or replaced otherwise. You can change this behaviour 
       by using the <code class="parameter">flags</code> parameter.
      </p>


function_name: xattr_set
name: flags
type: int
description:
<p class="para">
       <table class="doctable table">
        <caption><strong>Supported xattr flags</strong></caption>
        
         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="xattr.constants.html#constant.xattr-create">XATTR_CREATE</a></code></strong></td>
           <td>Function will fail if extended attribute already exists.</td>
          </tr>

          <tr>
           <td><strong><code><a href="xattr.constants.html#constant.xattr-replace">XATTR_REPLACE</a></code></strong></td>
           <td>Function will fail if extended attribute doesn&#039;t exist.</td>
          </tr>

          <tr>
           <td><strong><code><a href="xattr.constants.html#constant.xattr-dontfollow">XATTR_DONTFOLLOW</a></code></strong></td>
           <td>Do not follow the symbolic link but operate on symbolic link itself.</td>
          </tr>

          <tr>
           <td><strong><code><a href="xattr.constants.html#constant.xattr-root">XATTR_ROOT</a></code></strong></td>
           <td>Set attribute in root (trusted) namespace. Requires root privileges.</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: xattr_supported
name: flags
type: int
description:
<p class="para">
       <table class="doctable table">
        <caption><strong>Supported xattr flags</strong></caption>
        
         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="xattr.constants.html#constant.xattr-dontfollow">XATTR_DONTFOLLOW</a></code></strong></td>
           <td>Do not follow the symbolic link but operate on symbolic link itself.</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: xdiff_file_bdiff_size
name: file
type: string
description:
<p class="para">
       The path to the binary patch created by <span class="function">xdiff_string_bdiff</span> or 
       <span class="function">xdiff_string_rabdiff</span> function.
      </p>


function_name: xdiff_file_bdiff
name: dest
type: string
description:
<p class="para">
       Path of the resulting patch file. Resulting file contains differences
       between &quot;old&quot; and &quot;new&quot; files. It is in binary format and is human-unreadable.
      </p>


function_name: xdiff_file_diff
name: context
type: int
initializer: 3
description:
<p class="para">
       Indicates how many lines of context you want to include in diff
       result.
      </p>


