# php_manual

id: Phar::getStub
type: function
doc:
<comment>Description:</comment>
  Return the PHP loader or bootstrap stub of a Phar archive
  
  Phar archives contain a bootstrap loader, or <return>stub</return> written in PHP that is executed when the archive
  is executed in PHP either via include:  ]]> or by simple execution:

<comment>Return:</comment>
  <info>string</info>  Returns a string containing the contents of the bootstrap loader (stub) of the current
          Phar archive.

<comment>See Also:</comment>
   * <strong>Phar::setStub()</strong>
   * <strong>Phar::createDefaultStub()</strong>


id: Phar::getSupportedCompression
type: function
doc:
<comment>Description:</comment>
  Return array of supported compression algorithms

<comment>Return:</comment>
  <info>array</info>  Returns an array containing any of <return>Phar::GZ</return> or <return>Phar::BZ2</return>, depending on the availability of
         the zlib extension or the bz2 extension.

<comment>See Also:</comment>
   * <strong>PharFileInfo::getCompressedSize()</strong>
   * <strong>PharFileInfo::isCompressed()</strong>
   * <strong>PharFileInfo::compress()</strong>
   * <strong>PharFileInfo::decompress()</strong>
   * <strong>Phar::compress()</strong>
   * <strong>Phar::decompress()</strong>
   * <strong>Phar::canCompress()</strong>
   * <strong>Phar::isCompressed()</strong>
   * <strong>Phar::compressFiles()</strong>
   * <strong>Phar::decompressFiles()</strong>


id: Phar::getSupportedSignatures
type: function
doc:
<comment>Description:</comment>
  Return array of supported signature types
  
  Return array of supported signature types

<comment>Return:</comment>
  <info>array</info>  Returns an array containing any of <return>MD5</return>, <return>SHA-1</return>, <return>SHA-256</return>, <return>SHA-512</return>, or <return>OpenSSL</return>.

<comment>See Also:</comment>
   * <strong>Phar::getSignature()</strong>
   * <strong>Phar::setSignatureAlgorithm()</strong>


id: Phar::getVersion
type: function
doc:
<comment>Description:</comment>
  Return version info of Phar archive
  
  Returns the API version of an opened Phar archive.

<comment>Return:</comment>
  <info>string</info>  The opened archive's API version.  This is not to be confused with the API version that
          the loaded phar extension will use to create new phars.  Each Phar archive has the API
          version hard-coded into its manifest.  See Phar file format documentation for more
          information.

<comment>See Also:</comment>
   * <strong>Phar::apiVersion()</strong>


id: Phar::hasMetadata
type: function
doc:
<comment>Description:</comment>
  Returns whether phar has global meta-data
  
  Returns whether phar has global meta-data set.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if meta-data has been set, and <info>false</info> if not.

<comment>See Also:</comment>
   * <strong>Phar::getMetadata()</strong>
   * <strong>Phar::setMetadata()</strong>
   * <strong>Phar::delMetadata()</strong>


id: Phar::interceptFileFuncs
type: function
doc:
<comment>Description:</comment>
  Instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related
  functions
  
  instructs phar to intercept <strong>fopen()</strong>, <strong>readfile()</strong>, <strong>file_get_contents()</strong>, <strong>opendir()</strong>, and all of the
  stat-related functions.  If any of these functions is called from within a phar archive with a
  relative path, the call is modified to access a file within the phar archive.  Absolute paths are
  assumed to be attempts to load external files from the filesystem.
  
  This function makes it possible to run PHP applications designed to run off of a hard disk as a
  phar application.

<comment>Return:</comment>
  <info>void</info>  


id: Phar::isBuffering
type: function
doc:
<comment>Description:</comment>
  Used to determine whether Phar write operations are being buffered, or are flushing directly to
  disk
  
  This method can be used to determine whether a Phar will save changes to disk immediately, or
  whether a call to <strong>Phar::stopBuffering()</strong> is needed to enable saving changes.
  
  Phar write buffering is per-archive, buffering active for the <return>foo.phar</return> Phar archive does not
  affect changes to the <return>bar.phar</return> Phar archive.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the write operations are being buffer, <info>false</info> otherwise.

<comment>See Also:</comment>
   * <strong>Phar::startBuffering()</strong>
   * <strong>Phar::stopBuffering()</strong>


id: Phar::isCompressed
type: function
doc:
<comment>Description:</comment>
  Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on).
  Zip-based phar archives cannot be compressed as a file, and so this method will always return
  <info>false</info> if a zip-based phar archive is queried.

<comment>Return:</comment>
  <info>int|false</info>  <return>Phar::GZ</return>, <return>Phar::BZ2</return> or <info>false</info>.

<comment>See Also:</comment>
   * <strong>PharFileInfo::getCompressedSize()</strong>
   * <strong>PharFileInfo::isCompressed()</strong>
   * <strong>PharFileInfo::decompress()</strong>
   * <strong>PharFileInfo::compress()</strong>
   * <strong>Phar::decompress()</strong>
   * <strong>Phar::compress()</strong>
   * <strong>Phar::canCompress()</strong>
   * <strong>Phar::compressFiles()</strong>
   * <strong>Phar::decompressFiles()</strong>
   * <strong>Phar::getSupportedCompression()</strong>


id: Phar::isFileFormat
type: function
doc:
<comment>Description:</comment>
  Returns true if the phar archive is based on the tar/phar/zip file format depending on the
  parameter

<comment>Param:</comment>
  <info>int</info>  <strong>$format</strong>  Either <return>Phar::PHAR</return>, <return>Phar::TAR</return>, or <return>Phar::ZIP</return> to test for the format of the archive.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the phar archive matches the file format requested by the parameter

<comment>See Also:</comment>
   * <strong>Phar::convertToExecutable()</strong>
   * <strong>Phar::convertToData()</strong>


id: Phar::isValidPharFilename
type: function
doc:
<comment>Description:</comment>
  Returns whether the given filename is a valid phar filename
  
  Returns whether the given filename is a valid phar filename that will be recognized as a phar
  archive by the phar extension.  This can be used to test a name without having to instantiate a
  phar archive and catch the inevitable Exception that will be thrown if an invalid name is
  specified.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>    The name or full path to a phar archive not yet created
  <info>bool</info>    <strong>$executable</strong>  This parameter determines whether the filename should be treated as a phar
                       executable archive, or a data non-executable archive

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the filename is valid, <info>false</info> if not.


id: Phar::isWritable
type: function
doc:
<comment>Description:</comment>
  Returns true if the phar archive can be modified
  
  This method returns <info>true</info> if <return>phar.readonly</return> is <return>0</return>, and the actual phar archive on disk is not
  read-only.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the phar archive can be modified

<comment>See Also:</comment>
   * <strong>Phar::canWrite()</strong>
   * <strong>PharData::isWritable()</strong>


id: Phar::loadPhar
type: function
doc:
<comment>Description:</comment>
  Loads any phar archive with an alias
  
  This can be used to read the contents of an external Phar archive.  This is most useful for
  assigning an alias to a phar so that subsequent references to the phar can use the shorter alias,
  or for loading Phar archives that only contain data and are not intended for execution/inclusion
  in PHP scripts.

<comment>Param:</comment>
  <info>string</info>       <strong>$filename</strong>  the full or relative path to the phar archive to open
  <info>string|null</info>  <strong>$alias</strong>     The alias that may be used to refer to the phar archive.  Note that many
                          phar archives specify an explicit alias inside the phar archive, and a
                          <class>PharException</class> will be thrown if a new alias is specified in this case.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>Phar::mapPhar()</strong>


id: Phar::mapPhar
type: function
doc:
<comment>Description:</comment>
  Reads the currently executed file (a phar) and registers its manifest
  
  This static method can only be used inside a Phar archive's loader stub in order to initialize the
  phar when it is directly executed, or when it is included in another script.

<comment>Param:</comment>
  <info>string|null</info>  <strong>$alias</strong>   The alias that can be used in <return>phar://</return> URLs to refer to this archive, rather
                        than its full path.
  <info>int</info>          <strong>$offset</strong>  Unused variable, here for compatibility with PEAR's PHP_Archive.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>Phar::loadPhar()</strong>


id: Phar::mount
type: function
doc:
<comment>Description:</comment>
  Mount an external path or file to a virtual location within the phar archive
  
  Much like the unix file system concept of mounting external devices to paths within the directory
  tree, <strong>Phar::mount()</strong> allows referring to external files and directories as if they were inside of
  an archive.  This allows powerful abstraction such as referring to external configuration files as
  if they were inside the archive.

<comment>Param:</comment>
  <info>string</info>  <strong>$pharPath</strong>      The internal path within the phar archive to use as the mounted path
                         location. This must be a relative path within the phar archive, and must
                         not already exist.
  <info>string</info>  <strong>$externalPath</strong>  A path or URL to an external file or directory to mount within the phar
                         archive

<comment>Return:</comment>
  <info>void</info>  No return.  <class>PharException</class> is thrown on failure.


id: Phar::mungServer
type: function
doc:
<comment>Description:</comment>
  Defines a list of up to 4 $_SERVER variables that should be modified for execution
  
  <strong>Phar::mungServer()</strong> should only be called within the stub of a phar archive.
  
  Defines a list of up to 4 $_SERVER variables that should be modified for execution. Variables that
  can be modified to remove traces of phar execution are <return>REQUEST_URI</return>, <return>PHP_SELF</return>, <return>SCRIPT_NAME</return> and
  <return>SCRIPT_FILENAME</return>.
  
  On its own, this method does nothing.  Only when combined with <strong>Phar::webPhar()</strong> does it take
  effect, and only when the requested file is a PHP file to be parsed.  Note that the <return>PATH_INFO</return> and
  <return>PATH_TRANSLATED</return> variables are always modified.
  
  The original values of variables that are modified are stored in the SERVER array with <return>PHAR_</return>
  prepended, so for instance <return>SCRIPT_NAME</return> would be saved as <return>PHAR_SCRIPT_NAME</return>.

<comment>Param:</comment>
  <info>array</info>  <strong>$variables</strong>  An array of any of the strings <return>REQUEST_URI</return>, <return>PHP_SELF</return>, <return>SCRIPT_NAME</return> and
                     <return>SCRIPT_FILENAME</return>. Other values trigger an exception, and <strong>Phar::mungServer()</strong> is
                     case-sensitive.

<comment>Return:</comment>
  <info>void</info>  No return.

<comment>See Also:</comment>
   * <strong>Phar::webPhar()</strong>
   * <strong>Phar::setStub()</strong>


id: Phar::offsetExists
type: function
doc:
<comment>Description:</comment>
  Determines whether a file exists in the phar
  
  This is an implementation of the ArrayAccess interface allowing direct manipulation of the
  contents of a Phar archive using array access brackets.
  
  offsetExists() is called whenever <strong>isset()</strong> is called.

<comment>Param:</comment>
  <info>string</info>  <strong>$localName</strong>  The filename (relative path) to look for in a Phar.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the file exists within the phar, or <info>false</info> if not.

<comment>See Also:</comment>
   * <strong>Phar::offsetGet()</strong>
   * <strong>Phar::offsetSet()</strong>
   * <strong>Phar::offsetUnset()</strong>


id: Phar::offsetGet
type: function
doc:
<comment>Description:</comment>
  Gets a PharFileInfo object for a specific file
  
  This is an implementation of the ArrayAccess interface allowing direct manipulation of the
  contents of a Phar archive using array access brackets. Phar::offsetGet is used  for retrieving
  files from a Phar archive.

<comment>Param:</comment>
  <info>string</info>  <strong>$localName</strong>  The filename (relative path) to look for in a Phar.

<comment>Return:</comment>
  <info>SplFileInfo</info>  A <class>PharFileInfo</class> object is returned that can be used to iterate over a file's contents
               or to retrieve information about the current file.

<comment>See Also:</comment>
   * <strong>Phar::offsetExists()</strong>
   * <strong>Phar::offsetSet()</strong>
   * <strong>Phar::offsetUnset()</strong>


id: Phar::offsetSet
type: function
doc:
<comment>Description:</comment>
  Set the contents of an internal file to those of an external file
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  This is an implementation of the ArrayAccess interface allowing direct manipulation of the
  contents of a Phar archive using array access brackets.  offsetSet is used for modifying an
  existing file, or adding a new file to a Phar archive.

<comment>Param:</comment>
  <info>string</info>           <strong>$localName</strong>  The filename (relative path) to modify in a Phar.
  <info>resource|string</info>  <strong>$value</strong>      Content of the file.

<comment>Return:</comment>
  <info>void</info>  No return values.

<comment>See Also:</comment>
   * <strong>Phar::offsetExists()</strong>
   * <strong>Phar::offsetGet()</strong>
   * <strong>Phar::offsetUnset()</strong>


id: Phar::offsetUnset
type: function
doc:
<comment>Description:</comment>
  Remove a file from a phar
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  This is an implementation of the ArrayAccess interface allowing direct manipulation of the
  contents of a Phar archive using array access brackets.  offsetUnset is used for deleting an
  existing file, and is called by the <strong>unset()</strong> language construct.

<comment>Param:</comment>
  <info>string</info>  <strong>$localName</strong>  The filename (relative path) to modify in a Phar.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>Phar::offsetExists()</strong>
   * <strong>Phar::offsetGet()</strong>
   * <strong>Phar::offsetSet()</strong>
   * <strong>Phar::unlinkArchive()</strong>
   * <strong>Phar::delete()</strong>


id: Phar::running
type: function
doc:
<comment>Description:</comment>
  Returns the full path on disk or full phar URL to the currently executing Phar archive
  
  Returns the full path to the running phar archive.  This is intended for use much like the
  <return>__FILE__</return> magic constant, and only has effect inside an executing phar archive.
  
  Inside the stub of an archive, <strong>Phar::running()</strong> returns <return>""</return>.  Simply use <info>__FILE__</info> to access the
  current running phar inside a stub.

<comment>Param:</comment>
  <info>bool</info>  <strong>$returnPhar</strong>  If <info>false</info>, the full path on disk to the phar archive is returned.  If <info>true</info>, a
                     full phar URL is returned.

<comment>Return:</comment>
  <info>string</info>  Returns the filename if valid, empty string otherwise.


id: Phar::setAlias
type: function
doc:
<comment>Description:</comment>
  Set the alias for the Phar archive
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  Set the alias for the Phar archive, and write it as the permanent alias for this phar archive.  An
  alias can be used internally to a phar archive to ensure that use of the <return>phar</return> stream wrapper to
  access internal files always works regardless of the location of the phar archive on the
  filesystem.  Another alternative is to rely upon Phar's interception of <strong>include()</strong> or to use
  <strong>Phar::interceptFileFuncs()</strong> and use relative paths.

<comment>Param:</comment>
  <info>string</info>  <strong>$alias</strong>  A shorthand string that this archive can be referred to in <return>phar</return> stream wrapper
                  access.

<comment>Return:</comment>
  <info>bool</info>  

<comment>See Also:</comment>
   * <strong>Phar::__construct()</strong>
   * <strong>Phar::interceptFileFuncs()</strong>


id: Phar::setDefaultStub
type: function
doc:
<comment>Description:</comment>
  Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  This method is a convenience method that combines the functionality of <strong>Phar::createDefaultStub()</strong>
  and <strong>Phar::setStub()</strong>.

<comment>Param:</comment>
  <info>string|null</info>  <strong>$index</strong>     Relative path within the phar archive to run if accessed on the
                          command-line
  <info>string|null</info>  <strong>$webIndex</strong>  Relative path within the phar archive to run if accessed through a web
                          browser

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>Phar::setStub()</strong>
   * <strong>Phar::createDefaultStub()</strong>


id: Phar::setMetadata
type: function
doc:
<comment>Description:</comment>
  Sets phar archive meta-data
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  <strong>Phar::setMetadata()</strong> should be used to store customized data that describes something about the
  phar archive as a complete entity. <strong>PharFileInfo::setMetadata()</strong> should be used for file-specific
  meta-data. Meta-data can slow down the performance of loading a phar archive if the data is large.
  
  Some possible uses for meta-data include specifying which file within the archive should be used
  to bootstrap the archive, or the location of a file manifest like PEAR's package.xml file.
  However, any useful data that describes the phar archive may be stored.

<comment>Param:</comment>
  <info>mixed</info>  <strong>$metadata</strong>  Any PHP variable containing information to store that describes the phar archive

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>Phar::getMetadata()</strong>
   * <strong>Phar::delMetadata()</strong>
   * <strong>Phar::hasMetadata()</strong>


id: Phar::setSignatureAlgorithm
type: function
doc:
<comment>Description:</comment>
  Set the signature algorithm for a phar and apply it
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  set the signature algorithm for a phar and apply it.  The signature algorithm must be one of
  <return>Phar::MD5</return>, <return>Phar::SHA1</return>, <return>Phar::SHA256</return>, <return>Phar::SHA512</return>, or <return>Phar::OPENSSL</return>.
  
  Note that all executable phar archives have a signature created automatically, <return>SHA1</return> by default.
  data tar- or zip-based archives (archives created with the <class>PharData</class> class) must have their
  signature created and set explicitly via <strong>Phar::setSignatureAlgorithm()</strong>.

<comment>Param:</comment>
  <info>int</info>          <strong>$algo</strong>        One of <return>Phar::MD5</return>, <return>Phar::SHA1</return>, <return>Phar::SHA256</return>, <return>Phar::SHA512</return>, or
                            <return>Phar::OPENSSL</return>
  <info>string|null</info>  <strong>$privateKey</strong>  The contents of an OpenSSL private key, as extracted from a certificate
                            or OpenSSL key file: setSignatureAlgorithm(Phar::OPENSSL, $pkey);
                            ?> ]]> See phar introduction for instructions on naming and placement of
                            the public key file.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>Phar::getSupportedSignatures()</strong>
   * <strong>Phar::getSignature()</strong>


id: Phar::setStub
type: function
doc:
<comment>Description:</comment>
  Used to set the PHP loader or bootstrap stub of a Phar archive
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  This method is used to add a PHP bootstrap loader stub to a new Phar archive, or to replace the
  loader stub in an existing Phar archive.
  
  The loader stub for a Phar archive is used whenever an archive is included directly as in this
  example:
  
  The loader is not accessed when including a file through the <return>phar</return> stream wrapper like so:

<comment>Param:</comment>
  <info>resource|string</info>  <strong>$stub</strong>    A string or an open stream handle to use as the executable stub for this
                            phar archive.
  <info>int</info>              <strong>$length</strong>  

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>Phar::getStub()</strong>
   * <strong>Phar::createDefaultStub()</strong>


id: Phar::startBuffering
type: function
doc:
<comment>Description:</comment>
  Start buffering Phar write operations, do not modify the Phar object on disk
  
  Although technically unnecessary, the <strong>Phar::startBuffering()</strong> method can provide a significant
  performance boost when creating or modifying a Phar archive with a large number of files.
  Ordinarily, every time a file within a Phar archive is created or modified in any way, the entire
  Phar archive will be recreated with the changes.  In this way, the archive will be up-to-date with
  the activity performed on it.
  
  However, this can be unnecessary when simply creating a new Phar archive, when it would make more
  sense to write the entire archive out at once. Similarly, it is often necessary to make a series
  of changes and to ensure that they all are possible before making any changes on disk, similar to
  the relational database concept of transactions.  the <strong>Phar::startBuffering()</strong>/<strong>Phar::stopBuffering()</strong>
  pair of methods is provided for this purpose.
  
  Phar write buffering is per-archive, buffering active for the <return>foo.phar</return> Phar archive does not
  affect changes to the <return>bar.phar</return> Phar archive.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>Phar::stopBuffering()</strong>
   * <strong>Phar::isBuffering()</strong>


id: Phar::stopBuffering
type: function
doc:
<comment>Description:</comment>
  Stop buffering write requests to the Phar archive, and save changes to disk
  
  <strong>Phar::stopBuffering()</strong> is used in conjunction with the <strong>Phar::startBuffering()</strong> method.
  <strong>Phar::startBuffering()</strong> can provide a significant performance boost when creating or modifying a
  Phar archive with a large number of files.  Ordinarily, every time a file within a Phar archive is
  created or modified in any way, the entire Phar archive will be recreated with the changes.  In
  this way, the archive will be up-to-date with the activity performed on it.
  
  However, this can be unnecessary when simply creating a new Phar archive, when it would make more
  sense to write the entire archive out at once. Similarly, it is often necessary to make a series
  of changes and to ensure that they all are possible before making any changes on disk, similar to
  the relational database concept of transactions.  The <strong>Phar::startBuffering()</strong>/<strong>Phar::stopBuffering()</strong>
  pair of methods is provided for this purpose.
  
  Phar write buffering is per-archive, buffering active for the <return>foo.phar</return> Phar archive does not
  affect changes to the <return>bar.phar</return> Phar archive.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>Phar::startBuffering()</strong>
   * <strong>Phar::isBuffering()</strong>


id: Phar::unlinkArchive
type: function
doc:
<comment>Description:</comment>
  Completely remove a phar archive from disk and from memory
  
  Removes a phar archive from disk and memory.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The path on disk to the phar archive.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>Phar::delete()</strong>
   * <strong>Phar::offsetUnset()</strong>


id: Phar::webPhar
type: function
doc:
<comment>Description:</comment>
  Routes a request from a web browser to an internal file within the phar archive
  
  <strong>Phar::webPhar()</strong> serves as <strong>Phar::mapPhar()</strong> for  web-based phars.  This method parses
  $_SERVER['REQUEST_URI'] and  routes a request from a web browser to an internal file within the
  phar archive.   It simulates a web server, routing requests to the correct file, echoing the
  correct  headers and parsing PHP files as needed.  Combined with <strong>Phar::mungServer()</strong>  and
  <strong>Phar::interceptFileFuncs()</strong>, any web application can be used  unmodified from a phar archive.
  
  <strong>Phar::webPhar()</strong> should only be called from the stub of a phar archive (see here for more
  information on what a stub is).

<comment>Param:</comment>
  <info>string|null</info>    <strong>$alias</strong>               The alias that can be used in <return>phar://</return> URLs to refer to this
                                      archive, rather than its full path.
  <info>string|null</info>    <strong>$index</strong>               The location within the phar of the directory index.
  <info>string|null</info>    <strong>$fileNotFoundScript</strong>  The location of the script to run when a file is not found.
                                      This script should output the proper HTTP 404 headers.
  <info>array</info>          <strong>$mimeTypes</strong>           An array mapping additional file extensions to MIME type. If
                                      the default mapping is sufficient, pass an empty array. By
                                      default, these extensions are mapped to these MIME types:
                                      Phar::PHPS, // pass to highlight_file() 'c' => 'text/plain',
                                      'cc' => 'text/plain', 'cpp' => 'text/plain', 'c++' =>
                                      'text/plain', 'dtd' => 'text/plain', 'h' => 'text/plain',
                                      'log' => 'text/plain', 'rng' => 'text/plain', 'txt' =>
                                      'text/plain', 'xsd' => 'text/plain', 'php' => Phar::PHP, //
                                      parse as PHP 'inc' => Phar::PHP, // parse as PHP 'avi' =>
                                      'video/avi', 'bmp' => 'image/bmp', 'css' => 'text/css', 'gif'
                                      => 'image/gif', 'htm' => 'text/html', 'html' => 'text/html',
                                      'htmls' => 'text/html', 'ico' => 'image/x-ico', 'jpe' =>
                                      'image/jpeg', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg',
                                      'js' => 'application/x-javascript', 'midi' => 'audio/midi',
                                      'mid' => 'audio/midi', 'mod' => 'audio/mod', 'mov' =>
                                      'movie/quicktime', 'mp3' => 'audio/mp3', 'mpg' =>
                                      'video/mpeg', 'mpeg' => 'video/mpeg', 'pdf' =>
                                      'application/pdf', 'png' => 'image/png', 'swf' =>
                                      'application/shockwave-flash', 'tif' => 'image/tiff', 'tiff'
                                      => 'image/tiff', 'wav' => 'audio/wav', 'xbm' => 'image/xbm',
                                      'xml' => 'text/xml',
                                      );
                                      ?> ]]>
  <info>callable|null</info>  <strong>$rewrite</strong>             The rewrites function is passed a string as its only parameter
                                      and must return a <info>string</info> or <info>false</info>.
                                      
                                      If you are using fast-cgi or cgi then the parameter passed to
                                      the function is the value of the  $_SERVER['PATH_INFO']
                                      variable. Otherwise, the parameter passed to the function is
                                      the value of the $_SERVER['REQUEST_URI'] variable.
                                      
                                      If a string is returned it is used as the internal file path.
                                      If <info>false</info> is returned then webPhar() will send a HTTP 403
                                      Denied Code.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>Phar::mungServer()</strong>
   * <strong>Phar::interceptFileFuncs()</strong>


id: PharData
type: class
doc:
<comment>Description:</comment>
  The PharData class provides a high-level interface to accessing and creating non-executable tar
  and zip archives.  Because these archives do not contain a stub and cannot be executed by the phar
  extension, it is possible to create and manipulate regular zip and tar files using the PharData
  class even if <return>phar.readonly</return> php.ini setting is <return>1</return>.


id: PharData::__construct
type: function
doc:
<comment>Description:</comment>
  Construct a non-executable tar or zip archive object

<comment>Param:</comment>
  <info>string</info>       <strong>$filename</strong>  Path to an existing tar/zip archive or to-be-created archive
  <info>int</info>          <strong>$flags</strong>     Flags to pass to <class>Phar</class> parent class <class>RecursiveDirectoryIterator</class>.
  <info>string|null</info>  <strong>$alias</strong>     Alias with which this Phar archive should be referred to in calls to
                          stream functionality.
  <info>int</info>          <strong>$format</strong>    One of the file format constants available within the <class>Phar</class> class.


id: PharData::addEmptyDir
type: function
doc:
<comment>Description:</comment>
  Add an empty directory to the tar/zip archive
  
  With this method, an empty directory is created with path <return>dirname</return>. This method is similar to
  <strong>ZipArchive::addEmptyDir()</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$directory</strong>  The name of the empty directory to create in the phar archive

<comment>Return:</comment>
  <info>void</info>  no return value, exception is thrown on failure.

<comment>See Also:</comment>
   * <strong>Phar::addEmptyDir()</strong>
   * <strong>PharData::addFile()</strong>
   * <strong>PharData::addFromString()</strong>


id: PharData::addFile
type: function
doc:
<comment>Description:</comment>
  Add a file from the filesystem to the tar/zip archive
  
  With this method, any file or URL can be added to the tar/zip archive.  If the optional second
  parameter <return>localname</return> is specified, the file will be stored in the archive with that name, otherwise
  the <return>file</return> parameter is used as the path to store within the archive.  URLs must have a localname or
  an exception is thrown. This method is similar to <strong>ZipArchive::addFile()</strong>.

<comment>Param:</comment>
  <info>string</info>       <strong>$filename</strong>   Full or relative path to a file on disk to be added to the phar archive.
  <info>string|null</info>  <strong>$localName</strong>  Path that the file will be stored in the archive.

<comment>Return:</comment>
  <info>void</info>  no return value, exception is thrown on failure.

<comment>See Also:</comment>
   * <strong>PharData::offsetSet()</strong>
   * <strong>Phar::addFile()</strong>
   * <strong>PharData::addFromString()</strong>
   * <strong>PharData::addEmptyDir()</strong>


id: PharData::addFromString
type: function
doc:
<comment>Description:</comment>
  Add a file from a string to the tar/zip archive
  
  With this method, any string can be added to the tar/zip archive. The file will be stored in the
  archive with <return>localname</return> as its path.  This method is similar to <strong>ZipArchive::addFromString()</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$localName</strong>  Path that the file will be stored in the archive.
  <info>string</info>  <strong>$contents</strong>   The file contents to store

<comment>Return:</comment>
  <info>void</info>  no return value, exception is thrown on failure.

<comment>See Also:</comment>
   * <strong>PharData::offsetSet()</strong>
   * <strong>Phar::addFromString()</strong>
   * <strong>PharData::addFile()</strong>
   * <strong>PharData::addEmptyDir()</strong>


id: PharData::buildFromDirectory
type: function
doc:
<comment>Description:</comment>
  Construct a tar/zip archive from the files within a directory
  
  Populate a tar/zip archive from directory contents.  The optional second parameter is a regular
  expression (pcre) that is used to exclude files. Any filename that matches the regular expression
  will be included, all others will be excluded.  For more fine-grained control, use
  <strong>PharData::buildFromIterator()</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$directory</strong>  The full or relative path to the directory that contains all files to add to
                      the archive.
  <info>string</info>  <strong>$pattern</strong>    An optional pcre regular expression that is used to filter the list of files.
                      Only file paths matching the regular expression will be included in the
                      archive.

<comment>Return:</comment>
  <info>array</info>  <strong>Phar::buildFromDirectory()</strong> returns an associative array mapping internal path of file to
         the full path of the file on the filesystem,  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>Phar::buildFromDirectory()</strong>
   * <strong>PharData::buildFromIterator()</strong>


id: PharData::buildFromIterator
type: function
doc:
<comment>Description:</comment>
  Construct a tar or zip archive from an iterator
  
  Populate a tar or zip archive from an iterator.  Two styles of iterators are supported, iterators
  that map the filename within the tar/zip to the name of a file on disk, and iterators like
  DirectoryIterator that return SplFileInfo objects.  For iterators that return SplFileInfo objects,
  the second parameter is required.

<comment>Param:</comment>
  <info>Traversable</info>  <strong>$iterator</strong>       Any iterator that either associatively maps tar/zip file to location
                               or returns SplFileInfo objects
  <info>string|null</info>  <strong>$baseDirectory</strong>  For iterators that return SplFileInfo objects, the portion of each
                               file's full path to remove when adding to the tar/zip archive

<comment>Return:</comment>
  <info>array</info>  <strong>PharData::buildFromIterator()</strong> returns an associative array mapping internal path of file to
         the full path of the file on the filesystem.

<comment>See Also:</comment>
   * <strong>Phar::buildFromIterator()</strong>


id: PharData::compress
type: function
doc:
<comment>Description:</comment>
  Compresses the entire tar/zip archive using Gzip or Bzip2 compression
  
  For tar archives, this method compresses the entire archive using gzip compression or bzip2
  compression.  The resulting file can be processed with the gunzip command/bunzip command, or
  accessed directly and transparently with the Phar extension.
  
  For zip archives, this method fails with an exception. The zlib extension must be enabled to
  compress with gzip compression, the bzip2 extension must be enabled in order to compress with
  bzip2 compression.
  
  In addition, this method automatically renames the archive, appending <return>.gz</return>, <return>.bz2</return> or removing the
  extension if passed <return>Phar::NONE</return> to remove compression.  Alternatively, a file extension may be
  specified with the second parameter.

<comment>Param:</comment>
  <info>int</info>          <strong>$compression</strong>  Compression must be one of <return>Phar::GZ</return>, <return>Phar::BZ2</return> to add compression, or
                             <return>Phar::NONE</return> to remove compression.
  <info>string|null</info>  <strong>$extension</strong>    By default, the extension is <return>.tar.gz</return> or <return>.tar.bz2</return> for compressing a tar,
                             and <return>.tar</return> for decompressing.

<comment>Return:</comment>
  <info>PharData|null</info>  A <class>PharData</class> object is returned on success, or <info>null</info> on failure.

<comment>See Also:</comment>
   * <strong>Phar::compress()</strong>


id: PharData::compressFiles
type: function
doc:
<comment>Description:</comment>
  Compresses all files in the current tar/zip archive
  
  For tar-based archives, this method throws a <class>BadMethodCallException</class>, as compression of individual
  files within a tar archive is not supported by the file format.  Use <strong>PharData::compress()</strong> to
  compress an entire tar-based archive.
  
  For Zip-based archives, this method compresses all files in the archive using the specified
  compression. The zlib  or bzip2 extensions must be enabled to take advantage of this feature.  In
  addition, if any files are already compressed using bzip2/zlib compression, the respective
  extension must be enabled in order to decompress the files prior to re-compressing.

<comment>Param:</comment>
  <info>int</info>  <strong>$compression</strong>  Compression must be one of <return>Phar::GZ</return>, <return>Phar::BZ2</return> to add compression, or
                     <return>Phar::NONE</return> to remove compression.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>PharFileInfo::getCompressedSize()</strong>
   * <strong>PharFileInfo::isCompressed()</strong>
   * <strong>PharFileInfo::compress()</strong>
   * <strong>PharFileInfo::decompress()</strong>
   * <strong>Phar::canCompress()</strong>
   * <strong>Phar::isCompressed()</strong>
   * <strong>PharData::decompressFiles()</strong>
   * <strong>Phar::getSupportedCompression()</strong>
   * <strong>PharData::compress()</strong>
   * <strong>PharData::decompress()</strong>


id: PharData::convertToData
type: function
doc:
<comment>Description:</comment>
  Convert a phar archive to a non-executable tar or zip file
  
  This method is used to convert a non-executable tar or zip archive to another non-executable
  format.
  
  If no changes are specified, this method throws a <class>BadMethodCallException</class>. This method should be
  used to convert a tar archive to zip format or vice-versa.  Although it is possible to simply
  change the compression of a tar archive using this method, it is better to use the
  <strong>PharData::compress()</strong> method for logical consistency.
  
  If successful, the method creates a new archive on disk and returns a <class>PharData</class> object.  The old
  archive is not removed from disk, and should be done manually after the process has finished.

<comment>Param:</comment>
  <info>int|null</info>     <strong>$format</strong>       This should be one of <return>Phar::TAR</return> or <return>Phar::ZIP</return>.  If set to <info>null</info>, the
                             existing file format will be preserved.
  <info>int|null</info>     <strong>$compression</strong>  This should be one of <return>Phar::NONE</return> for no whole-archive compression,
                             <return>Phar::GZ</return> for zlib-based compression, and <return>Phar::BZ2</return> for bzip-based
                             compression.
  <info>string|null</info>  <strong>$extension</strong>    This parameter is used to override the default file extension for a
                             converted archive.  Note that <return>.phar</return> cannot be used anywhere in the
                             filename for a non-executable tar or zip archive.
                             
                             If converting to a tar-based phar archive, the default extensions are
                             <return>.tar</return>, <return>.tar.gz</return>, and <return>.tar.bz2</return> depending on specified compression. For
                             zip-based archives, the default extension is <return>.zip</return>.

<comment>Return:</comment>
  <info>PharData|null</info>  The method returns a <class>PharData</class> object on success, or <info>null</info> on failure.

<comment>See Also:</comment>
   * <strong>Phar::convertToExecutable()</strong>
   * <strong>Phar::convertToData()</strong>
   * <strong>PharData::convertToExecutable()</strong>


id: PharData::convertToExecutable
type: function
doc:
<comment>Description:</comment>
  Convert a non-executable tar/zip archive to an executable phar archive
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  This method is used to convert a non-executable tar or zip archive to an executable phar archive.
  Any of the three executable file formats (phar, tar or zip) can be used, and whole-archive
  compression can also be performed.
  
  If no changes are specified, this method throws a <class>BadMethodCallException</class>.
  
  If successful, the method creates a new archive on disk and returns a <class>Phar</class> object.  The old
  archive is not removed from disk, and should be done manually after the process has finished.

<comment>Param:</comment>
  <info>int|null</info>     <strong>$format</strong>       This should be one of <return>Phar::PHAR</return>, <return>Phar::TAR</return>, or <return>Phar::ZIP</return>.  If set to
                             <info>null</info>, the existing file format will be preserved.
  <info>int|null</info>     <strong>$compression</strong>  This should be one of <return>Phar::NONE</return> for no whole-archive compression,
                             <return>Phar::GZ</return> for zlib-based compression, and <return>Phar::BZ2</return> for bzip-based
                             compression.
  <info>string|null</info>  <strong>$extension</strong>    This parameter is used to override the default file extension for a
                             converted archive.  Note that all zip- and tar-based phar archives must
                             contain <return>.phar</return> in their file extension in order to be processed as a
                             phar archive.
                             
                             If converting to a phar-based archive, the default extensions are
                             <return>.phar</return>, <return>.phar.gz</return>, or <return>.phar.bz2</return> depending on the specified compression.
                             For tar-based phar archives, the default extensions are <return>.phar.tar</return>,
                             <return>.phar.tar.gz</return>, and <return>.phar.tar.bz2</return>.  For zip-based phar archives, the
                             default extension is <return>.phar.zip</return>.

<comment>Return:</comment>
  <info>Phar|null</info>  The method returns a <class>Phar</class> object on success, or <info>null</info> on failure.

<comment>See Also:</comment>
   * <strong>Phar::convertToExecutable()</strong>
   * <strong>Phar::convertToData()</strong>
   * <strong>PharData::convertToData()</strong>


id: PharData::copy
type: function
doc:
<comment>Description:</comment>
  Copy a file internal to the phar archive to another new file within the phar
  
  Copy a file internal to the tar/zip archive to another new file within the same archive. This is
  an object-oriented alternative to using <strong>copy()</strong> with the phar stream wrapper.

<comment>Param:</comment>
  <info>string</info>  <strong>$from</strong>  
  <info>string</info>  <strong>$to</strong>    

<comment>Return:</comment>
  <info>bool</info>  returns <info>true</info> on success, but it is safer to encase method call in a try/catch block and
        assume success if no exception is thrown.


id: PharData::decompress
type: function
doc:
<comment>Description:</comment>
  Decompresses the entire Phar archive
  
  For tar-based archives, this method decompresses the entire archive.
  
  For Zip-based archives, this method fails with an exception. The zlib extension must be enabled to
  decompress an archive compressed with gzip compression, and the bzip2 extension must be enabled in
  order to decompress an archive compressed with bzip2 compression.
  
  In addition, this method automatically renames the file extension of the archive, <return>.tar</return> by default.
  Alternatively, a file extension may be specified with the <strong>$extension</strong> parameter.

<comment>Param:</comment>
  <info>string|null</info>  <strong>$extension</strong>  For decompressing, the default file extension is <return>.tar</return>. Use this parameter
                           to specify another file extension. Be aware that only executable archives
                           can contain <return>.phar</return> in their filename.

<comment>Return:</comment>
  <info>PharData|null</info>  A <class>PharData</class> object is returned on success, or <info>null</info> on failure.

<comment>See Also:</comment>
   * <strong>PharFileInfo::getCompressedSize()</strong>
   * <strong>PharFileInfo::isCompressed()</strong>
   * <strong>PharFileInfo::compress()</strong>
   * <strong>PharFileInfo::decompress()</strong>
   * <strong>PharData::compress()</strong>
   * <strong>Phar::canCompress()</strong>
   * <strong>Phar::isCompressed()</strong>
   * <strong>PharData::compress()</strong>
   * <strong>Phar::getSupportedCompression()</strong>
   * <strong>PharData::compressFiles()</strong>
   * <strong>PharData::decompressFiles()</strong>


id: PharData::decompressFiles
type: function
doc:
<comment>Description:</comment>
  Decompresses all files in the current zip archive
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  For tar-based archives, this method throws a <class>BadMethodCallException</class>, as compression of individual
  files within a tar archive is not supported by the file format.  Use <strong>PharData::compress()</strong> to
  compress an entire tar-based archive.
  
  For Zip-based archives, this method decompresses all files in the archive. The zlib  or bzip2
  extensions must be enabled to take advantage of this feature if any files are compressed using
  bzip2/zlib compression.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>PharFileInfo::getCompressedSize()</strong>
   * <strong>PharFileInfo::isCompressed()</strong>
   * <strong>PharFileInfo::compress()</strong>
   * <strong>PharFileInfo::decompress()</strong>
   * <strong>Phar::canCompress()</strong>
   * <strong>Phar::isCompressed()</strong>
   * <strong>PharData::compressFiles()</strong>
   * <strong>Phar::getSupportedCompression()</strong>
   * <strong>PharData::compress()</strong>
   * <strong>PharData::decompress()</strong>


id: PharData::delMetadata
type: function
doc:
<comment>Description:</comment>
  Deletes the global metadata of a zip archive
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  Deletes the global metadata of the zip archive

<comment>Return:</comment>
  <info>bool</info>  returns <info>true</info> on success, but it is better to check for thrown exception, and assume success
        if none is thrown.

<comment>See Also:</comment>
   * <strong>Phar::delMetadata()</strong>


id: PharData::delete
type: function
doc:
<comment>Description:</comment>
  Delete a file within a tar/zip archive
  
  Delete a file within an archive.  This is the functional equivalent of calling <strong>unlink()</strong> on the
  stream wrapper equivalent, as shown in the example below.

<comment>Param:</comment>
  <info>string</info>  <strong>$localName</strong>  Path within an archive to the file to delete.

<comment>Return:</comment>
  <info>bool</info>  returns <info>true</info> on success, but it is better to check for thrown exception, and assume success
        if none is thrown.

<comment>See Also:</comment>
   * <strong>Phar::delete()</strong>


id: PharData::extractTo
type: function
doc:
<comment>Description:</comment>
  Extract the contents of a tar/zip archive to a directory
  
  Extract all files within a tar/zip archive to disk.  Extracted files and directories preserve
  permissions as stored in the archive.  The optional parameters allow optional control over which
  files are extracted, and whether existing files on disk can be overwritten. The second parameter
  <return>files</return> can be either the name of a file or directory to extract, or an array of names of files and
  directories to extract.  By default, this method will not overwrite existing files, the third
  parameter can be set to true to enable overwriting of files. This method is similar to
  <strong>ZipArchive::extractTo()</strong>.

<comment>Param:</comment>
  <info>string</info>             <strong>$directory</strong>  Path to extract the given <return>files</return> to
  <info>array|string|null</info>  <strong>$files</strong>      The name of a file or directory to extract, or an array of
                                 files/directories to extract
  <info>bool</info>               <strong>$overwrite</strong>  Set to <info>true</info> to enable overwriting existing files

<comment>Return:</comment>
  <info>bool</info>  returns <info>true</info> on success, but it is better to check for thrown exception, and assume success
        if none is thrown.

<comment>See Also:</comment>
   * <strong>Phar::extractTo()</strong>


id: PharData::isWritable
type: function
doc:
<comment>Description:</comment>
  Returns true if the tar/zip archive can be modified
  
  This method returns <info>true</info> if the tar/zip archive on disk is not read-only. Unlike
  <strong>Phar::isWritable()</strong>, data-only tar/zip archives can be modified even if <return>phar.readonly</return> is set to <return>1</return>.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the tar/zip archive can be modified

<comment>See Also:</comment>
   * <strong>Phar::canWrite()</strong>
   * <strong>Phar::isWritable()</strong>


id: PharData::offsetSet
type: function
doc:
<comment>Description:</comment>
  Set the contents of a file within the tar/zip to those of an external file or string
  
  This is an implementation of the ArrayAccess interface allowing direct manipulation of the
  contents of a tar/zip archive using array access brackets.  offsetSet is used for modifying an
  existing file, or adding a new file to a tar/zip archive.

<comment>Param:</comment>
  <info>string</info>           <strong>$localName</strong>  The filename (relative path) to modify in a tar or zip archive.
  <info>resource|string</info>  <strong>$value</strong>      Content of the file.

<comment>Return:</comment>
  <info>void</info>  No return values.

<comment>See Also:</comment>
   * <strong>Phar::offsetSet()</strong>


id: PharData::offsetUnset
type: function
doc:
<comment>Description:</comment>
  Remove a file from a tar/zip archive
  
  This is an implementation of the ArrayAccess interface allowing direct manipulation of the
  contents of a tar/zip archive using array access brackets.  offsetUnset is used for deleting an
  existing file, and is called by the <strong>unset()</strong> language construct.

<comment>Param:</comment>
  <info>string</info>  <strong>$localName</strong>  The filename (relative path) to modify in the tar/zip archive.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>Phar::offsetUnset()</strong>


id: PharData::setAlias
type: function
doc:
<comment>Description:</comment>
  Dummy function (Phar::setAlias is not valid for PharData)
  
  Non-executable tar/zip archives cannot have an alias, so this method simply throws an exception.

<comment>Param:</comment>
  <info>string</info>  <strong>$alias</strong>  A shorthand string that this archive can be referred to in <return>phar</return> stream wrapper
                  access.  This parameter is ignored.

<comment>Return:</comment>
  <info>bool</info>  

<comment>See Also:</comment>
   * <strong>Phar::setAlias()</strong>


id: PharData::setDefaultStub
type: function
doc:
<comment>Description:</comment>
  Dummy function (Phar::setDefaultStub is not valid for PharData)
  
  Non-executable tar/zip archives cannot have a stub, so this method simply throws an exception.

<comment>Param:</comment>
  <info>string|null</info>  <strong>$index</strong>     Relative path within the phar archive to run if accessed on the
                          command-line
  <info>string|null</info>  <strong>$webIndex</strong>  Relative path within the phar archive to run if accessed through a web
                          browser

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>Phar::setDefaultStub()</strong>


id: PharData::setSignatureAlgorithm
type: function
doc:
<comment>Description:</comment>
  Set the signature algorithm for a phar and apply it
  
  此方法需要
  将 php.ini 中的 <return>phar.readonly</return> 设为
  <return>0</return> 以适合 <class>Phar</class>
  对象.  否则, 将抛出<class>PharException</class>.
  
  Set the signature algorithm for a phar and apply it.  The signature algorithm must be one of
  <return>Phar::MD5</return>, <return>Phar::SHA1</return>, <return>Phar::SHA256</return>, <return>Phar::SHA512</return>, or <return>Phar::OPENSSL</return>.

<comment>Param:</comment>
  <info>int</info>  <strong>$algo</strong>  One of <return>Phar::MD5</return>, <return>Phar::SHA1</return>, <return>Phar::SHA256</return>, <return>Phar::SHA512</return>, or <return>Phar::OPENSSL</return>

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>Phar::getSupportedSignatures()</strong>
   * <strong>Phar::getSignature()</strong>


id: PharData::setStub
type: function
doc:
<comment>Description:</comment>
  Dummy function (Phar::setStub is not valid for PharData)
  
  Non-executable tar/zip archives cannot have a stub, so this method simply throws an exception.

<comment>Param:</comment>
  <info>string</info>  <strong>$stub</strong>  A string or an open stream handle to use as the executable stub for this phar
                 archive.  This parameter is ignored.
  <info>int</info>     <strong>$len</strong>   

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>Phar::setStub()</strong>


id: PharFileInfo
type: class
doc:
<comment>Description:</comment>
  The PharFileInfo class provides a high-level interface to the contents and attributes of a single
  file within a phar archive.


id: PharFileInfo::__construct
type: function
doc:
<comment>Description:</comment>
  Construct a Phar entry object
  
  This should not be called directly.  Instead, a PharFileInfo object is initialized by calling
  <strong>Phar::offsetGet()</strong> through array access.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The full url to retrieve a file.  If you wish to retrieve the information for
                     the file <return>my/file.php</return> from the phar <return>boo.phar</return>, the entry should be
                     <return>phar://boo.phar/my/file.php</return>.


id: PharFileInfo::chmod
type: function
doc:
<comment>Description:</comment>
  Sets file-specific permission bits
  
  <strong>PharFileInfo::chmod()</strong> allows setting of the executable file permissions bit, as well as read-only
  bits.  Writeable bits are ignored, and set at runtime based on the phar.readonly INI variable. As
  with all functionality that modifies the contents of a phar, the phar.readonly INI variable must
  be off in order to succeed if the file is within a <class>Phar</class> archive.  Files within <class>PharData</class> archives
  do not have this restriction.

<comment>Param:</comment>
  <info>int</info>  <strong>$perms</strong>  permissions (see <strong>chmod()</strong>)

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: PharFileInfo::compress
type: function
doc:
<comment>Description:</comment>
  Compresses the current Phar entry with either zlib or bzip2 compression
  
  This method compresses the file inside the Phar archive using either bzip2 compression or zlib
  compression. The bzip2 or zlib extension must be enabled to take advantage of this feature.  In
  addition, if the file is already compressed, the respective extension must be enabled in order to
  decompress the file.  As with all functionality that modifies the contents of a phar, the
  phar.readonly INI variable must be off in order to succeed if the file is within a <class>Phar</class> archive.
  Files within <class>PharData</class> archives do not have this restriction.

<comment>Param:</comment>
  <info>int</info>  <strong>$compression</strong>  Compression must be <info>Phar::GZ</info> or <info>Phar::BZ2</info>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>PharFileInfo::getCompressedSize()</strong>
   * <strong>PharFileInfo::isCompressed()</strong>
   * <strong>PharFileInfo::decompress()</strong>
   * <strong>Phar::canCompress()</strong>
   * <strong>Phar::isCompressed()</strong>
   * <strong>Phar::compressFiles()</strong>
   * <strong>Phar::decompressFiles()</strong>
   * <strong>Phar::compress()</strong>
   * <strong>Phar::decompress()</strong>
   * <strong>Phar::getSupportedCompression()</strong>


id: PharFileInfo::decompress
type: function
doc:
<comment>Description:</comment>
  Decompresses the current Phar entry within the phar
  
  This method decompresses the file inside the Phar archive. Depending on how the file is
  compressed, the bzip2 or zlib extensions must be enabled to take advantage of this feature.  As
  with all functionality that modifies the contents of a phar, the phar.readonly INI variable must
  be off in order to succeed if the file is within a <class>Phar</class> archive.  Files within <class>PharData</class> archives
  do not have this restriction.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>PharFileInfo::getCompressedSize()</strong>
   * <strong>PharFileInfo::isCompressed()</strong>
   * <strong>PharFileInfo::compress()</strong>
   * <strong>Phar::canCompress()</strong>
   * <strong>Phar::isCompressed()</strong>
   * <strong>Phar::compressFiles()</strong>
   * <strong>Phar::decompressFiles()</strong>
   * <strong>Phar::compress()</strong>
   * <strong>Phar::decompress()</strong>
   * <strong>Phar::getSupportedCompression()</strong>


id: PharFileInfo::delMetadata
type: function
doc:
<comment>Description:</comment>
  Deletes the metadata of the entry
  
  Deletes the metadata of the entry, if any.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if successful, <info>false</info> if the entry had no metadata. As with all functionality
        that modifies the contents of a phar, the phar.readonly INI variable must be off in order to
        succeed if the file is within a <class>Phar</class> archive.  Files within <class>PharData</class> archives do not have
        this restriction.

<comment>See Also:</comment>
   * <strong>PharFileInfo::setMetadata()</strong>
   * <strong>PharFileInfo::hasMetadata()</strong>
   * <strong>PharFileInfo::getMetadata()</strong>
   * <strong>Phar::setMetadata()</strong>
   * <strong>Phar::hasMetadata()</strong>
   * <strong>Phar::getMetadata()</strong>


id: PharFileInfo::getCRC32
type: function
doc:
<comment>Description:</comment>
  Returns CRC32 code or throws an exception if CRC has not been verified
  
  This returns the <strong>crc32()</strong> checksum of the file within the Phar archive.

<comment>Return:</comment>
  <info>int</info>  The <strong>crc32()</strong> checksum of the file within the Phar archive.


id: PharFileInfo::getCompressedSize
type: function
doc:
<comment>Description:</comment>
  Returns the actual size of the file (with compression) inside the Phar archive
  
  This returns the size of the file within the Phar archive.  Uncompressed files will return the
  same value for getCompressedSize as they will with <strong>filesize()</strong>

<comment>Return:</comment>
  <info>int</info>  The size in bytes of the file within the Phar archive on disk.

<comment>See Also:</comment>
   * <strong>PharFileInfo::isCompressed()</strong>
   * <strong>PharFileInfo::decompress()</strong>
   * <strong>PharFileInfo::compress()</strong>
   * <strong>Phar::canCompress()</strong>
   * <strong>Phar::isCompressed()</strong>
   * <strong>Phar::compress()</strong>
   * <strong>Phar::decompress()</strong>
   * <strong>Phar::getSupportedCompression()</strong>
   * <strong>Phar::decompressFiles()</strong>
   * <strong>Phar::compressFiles()</strong>


id: PharFileInfo::getContent
type: function
doc:
<comment>Description:</comment>
  Get the complete file contents of the entry
  
  This function behaves like <strong>file_get_contents()</strong> but for Phar.

<comment>Return:</comment>
  <info>string</info>  Returns the file contents.


id: PharFileInfo::getMetadata
type: function
doc:
<comment>Description:</comment>
  Returns file-specific meta-data saved with a file
  
  Return meta-data that was saved in the Phar archive's manifest for this file.

<comment>Return:</comment>
  <info>mixed</info>  any PHP variable that can be serialized and is stored as meta-data for the file, or <info>null</info> if
         no meta-data is stored.

<comment>See Also:</comment>
   * <strong>PharFileInfo::setMetadata()</strong>
   * <strong>PharFileInfo::hasMetadata()</strong>
   * <strong>PharFileInfo::delMetadata()</strong>
   * <strong>Phar::setMetadata()</strong>
   * <strong>Phar::hasMetadata()</strong>
   * <strong>Phar::getMetadata()</strong>


id: PharFileInfo::getPharFlags
type: function
doc:
<comment>Description:</comment>
  Returns the Phar file entry flags
  
  This returns the flags set in the manifest for a Phar.  This will always return <return>0</return> in the current
  implementation.

<comment>Return:</comment>
  <info>int</info>  The Phar flags (always <return>0</return> in the current implementation)


id: PharFileInfo::hasMetadata
type: function
doc:
<comment>Description:</comment>
  Returns the metadata of the entry
  
  Returns the metadata of a file within a phar archive.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>false</info> if no metadata is set or is <info>null</info>, <info>true</info> if metadata is not <info>null</info>

<comment>See Also:</comment>
   * <strong>PharFileInfo::setMetadata()</strong>
   * <strong>PharFileInfo::getMetadata()</strong>
   * <strong>PharFileInfo::delMetadata()</strong>
   * <strong>Phar::setMetadata()</strong>
   * <strong>Phar::hasMetadata()</strong>
   * <strong>Phar::getMetadata()</strong>


id: PharFileInfo::isCRCChecked
type: function
doc:
<comment>Description:</comment>
  Returns whether file entry has had its CRC verified
  
  This returns whether a file within a Phar archive has had its CRC verified.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the file has had its CRC verified, <info>false</info> if not.


id: PharFileInfo::isCompressed
type: function
doc:
<comment>Description:</comment>
  Returns whether the entry is compressed
  
  This returns whether a file is compressed within a Phar archive with either Gzip or Bzip2
  compression.

<comment>Param:</comment>
  <info>int|null</info>  <strong>$compression</strong>  One of <info>Phar::GZ</info> or <info>Phar::BZ2</info>, defaults to any compression.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the file is compressed within the Phar archive, <info>false</info> if not.

<comment>See Also:</comment>
   * <strong>PharFileInfo::getCompressedSize()</strong>
   * <strong>PharFileInfo::decompress()</strong>
   * <strong>PharFileInfo::compress()</strong>
   * <strong>Phar::decompress()</strong>
   * <strong>Phar::compress()</strong>
   * <strong>Phar::canCompress()</strong>
   * <strong>Phar::isCompressed()</strong>
   * <strong>Phar::getSupportedCompression()</strong>
   * <strong>Phar::decompressFiles()</strong>
   * <strong>Phar::compressFiles()</strong>


id: PharFileInfo::setMetadata
type: function
doc:
<comment>Description:</comment>
  Sets file-specific meta-data saved with a file
  
  <strong>PharFileInfo::setMetadata()</strong> should only be used to store customized data in a file that cannot be
  represented with existing information stored with a file. Meta-data can significantly slow down
  the performance of loading a phar archive if the data is large, or if there are many files
  containing meta-data. It is important to note that file permissions are natively supported inside
  a phar; it is possible to set them with the <strong>PharFileInfo::chmod()</strong> method.  As with all
  functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in
  order to succeed if the file is within a <class>Phar</class> archive.  Files within <class>PharData</class> archives do not have
  this restriction.
  
  Some possible uses for meta-data include passing a user/group that should be set when a file is
  extracted from the phar to disk.  Other uses could include explicitly specifying a MIME type to
  return.  However, any useful data that describes a file, but should not be contained inside of it
  may be stored.

<comment>Param:</comment>
  <info>mixed</info>  <strong>$metadata</strong>  Any PHP variable containing information to store alongside a file

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>PharFileInfo::hasMetadata()</strong>
   * <strong>PharFileInfo::getMetadata()</strong>
   * <strong>PharFileInfo::delMetadata()</strong>
   * <strong>Phar::setMetadata()</strong>
   * <strong>Phar::hasMetadata()</strong>
   * <strong>Phar::getMetadata()</strong>


id: PhpToken
type: class
doc:
<comment>Description:</comment>
  This class provides an alternative to <strong>token_get_all()</strong>. While the function returns tokens either as
  a single-character string, or an array with a token ID, token text and line number,
  <strong>PhpToken::tokenize()</strong> normalizes all tokens into PhpToken objects, which makes code operating on
  tokens more memory efficient and readable.


id: PhpToken::__construct
type: function
doc:
<comment>Description:</comment>
  Returns a new PhpToken object
  
  Returns a new PhpToken object

<comment>Param:</comment>
  <info>int</info>     <strong>$id</strong>    One of the T_* constants (see ), or an ASCII codepoint representing a single-char
                 token.
  <info>string</info>  <strong>$text</strong>  The textual content of the token.
  <info>int</info>     <strong>$line</strong>  The starting line number (1-based) of the token.
  <info>int</info>     <strong>$pos</strong>   The starting position (0-based) in the tokenized string (the number of bytes).

<comment>See Also:</comment>
   * <strong>PhpToken::tokenize()</strong>


id: PhpToken::__toString
type: function
doc:
<comment>Description:</comment>
  Returns the textual content of the token.
  
  Returns the textual content of the token.

<comment>Return:</comment>
  <info>string</info>  A textual content of the token.

<comment>See Also:</comment>
   * <strong>token_name()</strong>


id: PhpToken::getTokenName
type: function
doc:
<comment>Description:</comment>
  Returns the name of the token.
  
  Returns the name of the token.

<comment>Return:</comment>
  <info>string|null</info>  An ASCII character for single-char tokens, or one of T_* constant names for known
               tokens (see ), or <info>null</info> for unknown tokens.

<comment>See Also:</comment>
   * <strong>PhpToken::tokenize()</strong>
   * <strong>token_name()</strong>


id: PhpToken::is
type: function
doc:
<comment>Description:</comment>
  Tells whether the token is of given kind.
  
  Tells whether the token is of given <strong>$kind</strong>.

<comment>Param:</comment>
  <info>int|string|array</info>  <strong>$kind</strong>  Either a single value to match the token's id or textual content, or an
                           array thereof.

<comment>Return:</comment>
  <info>bool</info>  A boolean value whether the token is of given kind.

<comment>See Also:</comment>
   * <strong>token_name()</strong>


id: PhpToken::isIgnorable
type: function
doc:
<comment>Description:</comment>
  Tells whether the token would be ignored by the PHP parser.
  
  Tells whether the token would be ignored by the PHP parser.

<comment>Return:</comment>
  <info>bool</info>  A boolean value whether the token would be ignored by the PHP parser (such as whitespace or
        comments).

<comment>See Also:</comment>
   * <strong>PhpToken::tokenize()</strong>


id: PhpToken::tokenize
type: function
doc:
<comment>Description:</comment>
  Splits given source into PHP tokens, represented by PhpToken objects.
  
  Returns an array of PhpToken objects representing given <strong>$code</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$code</strong>   The PHP source to parse.
  <info>int</info>     <strong>$flags</strong>  Valid flags: <info>TOKEN_PARSE</info> - Recognises the ability to use reserved words in
                  specific contexts.
                  
                  <info>TOKEN_PARSE</info> - Recognises the ability to use reserved words in specific contexts.

<comment>Return:</comment>
  <info>array</info>  An array of PHP tokens represented by instances of PhpToken or its descendants. This method
         returns <info>static[]</info> so that PhpToken can be seamlessly extended.

<comment>See Also:</comment>
   * <strong>token_get_all()</strong>


id: Pool
type: class
doc:
<comment>Description:</comment>
  Pool 对象是多个 Worker 对象的容器，同时也是它们的控制器。
  
  线程池是对 Worker 功能的高层抽象，包括按照 pthreads 需要的方式来管理应用的功能。


id: Pool::__construct
type: function
doc:
<comment>Description:</comment>
  创建新的 Worker 对象池
  
  创建新的 Worker 对象池，但是所对应的线程是延迟创建的的，也就是说， 直到需要执行任务的时候 才会创建
  对应的线程。

<comment>Param:</comment>
  <info>int</info>     <strong>$size</strong>   此 Pool 对象可创建的 Worker 对象的最大数量
  <info>string</info>  <strong>$class</strong>  新创建的 Worker 对象的类。 如果不指定类，那么会使用默认的 <class>Worker</class> 类。
  <info>array</info>   <strong>$ctor</strong>   创建 Worker 对象时所用到的参数，以数组方式传入


id: Pool::collect
type: function
doc:
<comment>Description:</comment>
  回收已完成任务的引用
  
  对于视为垃圾的引用，使用给定的垃圾收集器进行收集

<comment>Param:</comment>
  <info>Callable</info>  <strong>$collector</strong>  垃圾收集器，它返回一个布尔值表示这个任务是否可以被进行垃圾收集。 仅在极少的
                        情况下需要一个自定义的垃圾收集器。

<comment>Return:</comment>
  <info>int</info>  池中剩余的待收集的任务数量。


id: Pool::resize
type: function
doc:
<comment>Description:</comment>
  改变 Pool 对象的可容纳 Worker 对象的数量
  
  改变 Pool 对象的可容纳 Worker 对象的数量

<comment>Param:</comment>
  <info>int</info>  <strong>$size</strong>  此 Pool 对象可创建 Worker 对象的最大数量

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: Pool::shutdown
type: function
doc:
<comment>Description:</comment>
  停止所有的 Worker 对象
  
  停止此 Pool 中所有的 Worker 对象。此方法调用会进入阻塞状态， 直到所有已经提交到这个 Pool 中的任务
  都执行完毕。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: Pool::submit
type: function
doc:
<comment>Description:</comment>
  提交对象以执行
  
  将任务提交到 Pool 中的下一个 Worker 对象

<comment>Param:</comment>
  <info>Threaded</info>  <strong>$task</strong>  要执行的任务

<comment>Return:</comment>
  <info>int</info>  执行新加入对象的 Worker 对象 ID


id: Pool::submitTo
type: function
doc:
<comment>Description:</comment>
  提交一个任务到特定的 Worker 以执行
  
  将对象提交到 Pool 中某个特定的 Worker 对象来执行。Worker 的下标从 0 开始， 由于 Pool 中的线程是懒
  加载机制， 所以 Worker 对象仅在 Pool 需要执行任务的时候才会真正被创建。

<comment>Param:</comment>
  <info>int</info>       <strong>$worker</strong>  用来执行任务的 Worker 对象，下标从 <return>0</return> 开始。
  <info>Threaded</info>  <strong>$task</strong>    要执行的任务

<comment>Return:</comment>
  <info>int</info>  接受新加入对象的 Worker 对象ID


id: QuickHashIntHash
type: class
doc:
<comment>Description:</comment>
  This class wraps around a hash containing integer numbers, where the values are also integer
  numbers. Hashes are also available as implementation of the ArrayAccess interface.
  
  Hashes can also be iterated over with <return>foreach</return> as the Iterator interface is implemented as well.
  The order of which elements are returned in is not guaranteed.


id: QuickHashIntHash::CHECK_FOR_DUPES
type: constant
doc:
<comment>Description:</comment>
  If enabled, adding duplicate elements to a set (through either QuickHashIntHash::add or
  QuickHashIntHash::loadFromFile) will result in those elements to be dropped from the set. This
  will take up extra time, so only used when it is required.


id: QuickHashIntHash::DO_NOT_USE_ZEND_ALLOC
type: constant
doc:
<comment>Description:</comment>
  Disables the use of PHP's internal memory manager for internal set structures. With this option
  enabled, internal allocations will not count towards the memory_limit settings.


id: QuickHashIntHash::HASHER_JENKINS1
type: constant
doc:
<comment>Description:</comment>
  This is the default hashing function to turn the integer hashes into bucket list indexes.


id: QuickHashIntHash::HASHER_NO_HASH
type: constant
doc:
<comment>Description:</comment>
  Selects to not use a hashing function, but merely use a modulo to find the bucket list index. This
  is not faster than normal hashing, and gives more collisions.


id: QuickHashIntHash::__construct
type: function
doc:
<comment>Description:</comment>
  Creates a new QuickHashIntHash object
  
  This constructor creates a new <class>QuickHashIntHash</class>. The size is the amount of bucket lists to create.
  The more lists there are, the less collisions you will have. Options are also supported.

<comment>Param:</comment>
  <info>int</info>  <strong>$size</strong>     The amount of bucket lists to configure. The number you pass in will be
                 automatically rounded up to the next power of two. It is also automatically limited
                 from <return>64</return> to <return>4194304</return>.
  <info>int</info>  <strong>$options</strong>  The options that you can pass in are: <info>QuickHashIntHash::CHECK_FOR_DUPES</info>, which
                 makes sure no duplicate entries are added to the hash;
                 <info>QuickHashIntHash::DO_NOT_USE_ZEND_ALLOC</info> to not use PHP's internal memory manager as
                 well as one of <info>QuickHashIntHash::HASHER_NO_HASH</info>, <info>QuickHashIntHash::HASHER_JENKINS1</info>
                 or <info>QuickHashIntHash::HASHER_JENKINS2</info>. These last three configure which hashing
                 algorithm to use. All options can be combined using bitmasks.

<comment>Return:</comment>
  <info>unknown</info>  Returns a new <class>QuickHashIntHash</class> object.


id: QuickHashIntHash::add
type: function
doc:
<comment>Description:</comment>
  This method adds a new entry to the hash
  
  This method adds a new entry to the hash, and returns whether the entry was added. Entries are by
  default always added unless <info>QuickHashIntHash::CHECK_FOR_DUPES</info> has been passed when the hash was
  created.

<comment>Param:</comment>
  <info>int</info>  <strong>$key</strong>    The key of the entry to add.
  <info>int</info>  <strong>$value</strong>  The optional value of the entry to add. If no value is specified, <return>1</return> will be used.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> when the entry was added, and <info>false</info> if the entry was not added.


id: QuickHashIntHash::delete
type: function
doc:
<comment>Description:</comment>
  This method deletes an entry from the hash
  
  This method deletes an entry from the hash, and returns whether the entry was deleted or not.
  Associated memory structures will not be freed immediately, but rather when the hash itself is
  freed.
  
  Elements can not be deleted when the hash is used in an iterator. The method will not throw an
  exception, but simply return <info>false</info> like would happen with any other deletion failure.

<comment>Param:</comment>
  <info>int</info>  <strong>$key</strong>  The key of the entry to delete.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> when the entry was deleted, and <info>false</info> if the entry was not deleted.


id: QuickHashIntHash::exists
type: function
doc:
<comment>Description:</comment>
  This method checks whether a key is part of the hash
  
  This method checks whether an entry with the provided key exists in the hash.

<comment>Param:</comment>
  <info>int</info>  <strong>$key</strong>  The key of the entry to check for whether it exists in the hash.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> when the entry was found, or <info>false</info> when the entry is not found.


id: QuickHashIntHash::get
type: function
doc:
<comment>Description:</comment>
  This method retrieves a value from the hash by its key
  
  This method retrieves a value from the hash by its key.

<comment>Param:</comment>
  <info>int</info>  <strong>$key</strong>  The key of the entry to retrieve.

<comment>Return:</comment>
  <info>int</info>  The value if the key exists, or <info>null</info> if the key wasn't part of the hash.


id: QuickHashIntHash::getSize
type: function
doc:
<comment>Description:</comment>
  Returns the number of elements in the hash
  
  Returns the number of elements in the hash.

<comment>Return:</comment>
  <info>int</info>  The number of elements in the hash.


id: QuickHashIntHash::loadFromFile
type: function
doc:
<comment>Description:</comment>
  This factory method creates a hash from a file
  
  This factory method creates a new hash from a definition file on disk. The file format consists of
  a signature <return>'QH\0x11\0'</return>, the number of elements as a 32 bit signed integer in system Endianness,
  followed by 32 bit signed integers packed together in the Endianness that the system that the code
  runs on uses. For each hash element there are two 32 bit signed integers stored. The first of each
  element is the key, and the second is the value belonging to the key. An example could be:
  
  QuickHash IntHash file format
  
  QuickHash IntHash file format

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The filename of the file to read the hash from.
  <info>int</info>     <strong>$options</strong>   The same options that the class' constructor takes; except that the size option
                     is ignored. It is automatically calculated to be the same as the number of
                     entries in the hash, rounded up to the nearest power of two with a maximum
                     limit of <return>4194304</return>.

<comment>Return:</comment>
  <info>QuickHashIntHash</info>  Returns a new <class>QuickHashIntHash</class>.


id: QuickHashIntHash::loadFromString
type: function
doc:
<comment>Description:</comment>
  This factory method creates a hash from a string
  
  This factory method creates a new hash from a definition in a string. The file format consists of
  32 bit signed integers packed together in the Endianness that the system that the code runs on
  uses. For each element there are two 32 bit signed integers stored. The first of each element is
  the key, and the second is the value belonging to the key.

<comment>Param:</comment>
  <info>string</info>  <strong>$contents</strong>  The string containing a serialized format of the hash.
  <info>int</info>     <strong>$options</strong>   The same options that the class' constructor takes; except that the size option
                     is ignored. It is automatically calculated to be the same as the number of
                     entries in the hash, rounded up to the nearest power of two with a maximum
                     limit of <return>4194304</return>.

<comment>Return:</comment>
  <info>QuickHashIntHash</info>  Returns a new <class>QuickHashIntHash</class>.


id: QuickHashIntHash::saveToFile
type: function
doc:
<comment>Description:</comment>
  This method stores an in-memory hash to disk
  
  This method stores an existing hash to a file on disk, in the same format that
  QuickHashIntHash::loadFromFile can read.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The filename of the file to store the hash in.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: QuickHashIntHash::saveToString
type: function
doc:
<comment>Description:</comment>
  This method returns a serialized version of the hash
  
  This method returns a serialized version of the hash in the same format that
  QuickHashIntHash::loadFromString can read.

<comment>Return:</comment>
  <info>string</info>  This method returns a string containing a serialized format of the hash. Each element is
          stored as a four byte value in the Endianness that the current system uses.


id: QuickHashIntHash::set
type: function
doc:
<comment>Description:</comment>
  This method updates an entry in the hash with a new value, or
    adds a new one if the entry doesn't exist
  
  This method tries to update an entry with a new value. In case the entry did not yet exist, it
  will instead add a new entry. It returns whether the entry was added or update. If there are
  duplicate keys, only the first found element will get an updated value. Use
  <info>QuickHashIntHash::CHECK_FOR_DUPES</info> during hash creation to prevent duplicate keys from being part
  of the hash.

<comment>Param:</comment>
  <info>int</info>  <strong>$key</strong>    The key of the entry to add or update.
  <info>int</info>  <strong>$value</strong>  The new value to set the entry with.

<comment>Return:</comment>
  <info>bool</info>  2 if the entry was found and updated, 1 if the entry was newly added or 0 if there was an
        error.


id: QuickHashIntHash::update
type: function
doc:
<comment>Description:</comment>
  This method updates an entry in the hash with a new value
  
  This method updates an entry with a new value, and returns whether the entry was update. If there
  are duplicate keys, only the first found element will get an updated value. Use
  <info>QuickHashIntHash::CHECK_FOR_DUPES</info> during hash creation to prevent duplicate keys from being part
  of the hash.

<comment>Param:</comment>
  <info>int</info>  <strong>$key</strong>    The key of the entry to update.
  <info>int</info>  <strong>$value</strong>  The new value to update the entry with.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> when the entry was found and updated, and <info>false</info> if the entry was not part of the hash
        already.


id: QuickHashIntSet
type: class
doc:
<comment>Description:</comment>
  This class wraps around a set containing integer numbers.
  
  Sets can also be iterated over with <return>foreach</return> as the Iterator interface is implemented as well. The
  order of which elements are returned in is not guaranteed.


id: QuickHashIntSet::CHECK_FOR_DUPES
type: constant
doc:
<comment>Description:</comment>
  If enabled, adding duplicate elements to a set (through either QuickHashIntSet::add or
  QuickHashIntSet::loadFromFile) will result in those elements to be dropped from the set. This will
  take up extra time, so only used when it is required.


id: QuickHashIntSet::__construct
type: function
doc:
<comment>Description:</comment>
  Creates a new QuickHashIntSet object
  
  This constructor creates a new <class>QuickHashIntSet</class>. The size is the amount of bucket lists to create.
  The more lists there are, the less collisions you will have. Options are also supported.

<comment>Param:</comment>
  <info>int</info>  <strong>$size</strong>     The amount of bucket lists to configure. The number you pass in will be
                 automatically rounded up to the next power of two. It is also automatically limited
                 from <return>4</return> to <return>4194304</return>.
  <info>int</info>  <strong>$options</strong>  The options that you can pass in are: <info>QuickHashIntSet::CHECK_FOR_DUPES</info>, which makes
                 sure no duplicate entries are added to the set;
                 <info>QuickHashIntSet::DO_NOT_USE_ZEND_ALLOC</info> to not use PHP's internal memory manager as
                 well as one of <info>QuickHashIntSet::HASHER_NO_HASH</info>, <info>QuickHashIntSet::HASHER_JENKINS1</info> or
                 <info>QuickHashIntSet::HASHER_JENKINS2</info>. These last three configure which hashing
                 algorithm to use. All options can be combined using bitmasks.

<comment>Return:</comment>
  <info>unknown</info>  Returns a new <class>QuickHashIntSet</class> object.


id: QuickHashIntSet::add
type: function
doc:
<comment>Description:</comment>
  This method adds a new entry to the set
  
  This method adds a new entry to the set, and returns whether the entry was added. Entries are by
  default always added unless <info>QuickHashIntSet::CHECK_FOR_DUPES</info> has been passed when the set was
  created.

<comment>Param:</comment>
  <info>int</info>  <strong>$key</strong>  The key of the entry to add.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> when the entry was added, and <info>false</info> if the entry was not added.


id: QuickHashIntSet::delete
type: function
doc:
<comment>Description:</comment>
  This method deletes an entry from the set
  
  This method deletes an entry from the set, and returns whether the entry was deleted or not.
  Associated memory structures will not be freed immediately, but rather when the set itself is
  freed.

<comment>Param:</comment>
  <info>int</info>  <strong>$key</strong>  The key of the entry to delete.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> when the entry was deleted, and <info>false</info> if the entry was not deleted.


id: QuickHashIntSet::exists
type: function
doc:
<comment>Description:</comment>
  This method checks whether a key is part of the set
  
  This method checks whether an entry with the provided key exists in the set.

<comment>Param:</comment>
  <info>int</info>  <strong>$key</strong>  The key of the entry to check for whether it exists in the set.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> when the entry was found, or <info>false</info> when the entry is not found.


id: QuickHashIntSet::getSize
type: function
doc:
<comment>Description:</comment>
  Returns the number of elements in the set
  
  Returns the number of elements in the set.

<comment>Return:</comment>
  <info>int</info>  The number of elements in the set.


id: QuickHashIntSet::loadFromFile
type: function
doc:
<comment>Description:</comment>
  This factory method creates a set from a file
  
  This factory method creates a new set from a definition file on disk. The file format consists of
  32 bit signed integers packed together in the Endianness that the system that the code runs on
  uses.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The filename of the file to read the set from.
  <info>int</info>     <strong>$size</strong>      The amount of bucket lists to configure. The number you pass in will be
                     automatically rounded up to the next power of two. It is also automatically
                     limited from <return>4</return> to <return>4194304</return>.
  <info>int</info>     <strong>$options</strong>   The same options that the class' constructor takes; except that the size option
                     is ignored. It is automatically calculated to be the same as the number of
                     entries in the set, rounded up to the nearest power of two with a maximum limit
                     of <return>4194304</return>.

<comment>Return:</comment>
  <info>QuickHashIntSet</info>  Returns a new <class>QuickHashIntSet</class>.


id: QuickHashIntSet::loadFromString
type: function
doc:
<comment>Description:</comment>
  This factory method creates a set from a string
  
  This factory method creates a new set from a definition in a string. The file format consists of
  32 bit signed integers packed together in the Endianness that the system that the code runs on
  uses.

<comment>Param:</comment>
  <info>string</info>  <strong>$contents</strong>  The string containing a serialized format of the set.
  <info>int</info>     <strong>$size</strong>      The amount of bucket lists to configure. The number you pass in will be
                     automatically rounded up to the next power of two. It is also automatically
                     limited from <return>4</return> to <return>4194304</return>.
  <info>int</info>     <strong>$options</strong>   The same options that the class' constructor takes; except that the size option
                     is ignored. It is automatically calculated to be the same as the number of
                     entries in the set, rounded up to the nearest power of two automatically
                     limited from <return>64</return> to <return>4194304</return>.

<comment>Return:</comment>
  <info>QuickHashIntSet</info>  Returns a new <class>QuickHashIntSet</class>.


id: QuickHashIntSet::saveToFile
type: function
doc:
<comment>Description:</comment>
  This method stores an in-memory set to disk
  
  This method stores an existing set to a file on disk, in the same format that
  QuickHashIntSet::loadFromFile can read.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The filename of the file to store the hash in.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: QuickHashIntSet::saveToString
type: function
doc:
<comment>Description:</comment>
  This method returns a serialized version of the set
  
  This method returns a serialized version of the set in the same format that
  QuickHashIntSet::loadFromString can read.

<comment>Return:</comment>
  <info>string</info>  This method returns a string containing a serialized format of the set. Each element is
          stored as a four byte value in the Endianness that the current system uses.


id: QuickHashIntStringHash
type: class
doc:
<comment>Description:</comment>
  This class wraps around a hash containing integer numbers, where the values are strings. Hashes
  are also available as implementation of the ArrayAccess interface.
  
  Hashes can also be iterated over with <return>foreach</return> as the Iterator interface is implemented as well.
  The order of which elements are returned in is not guaranteed.


id: QuickHashIntStringHash::CHECK_FOR_DUPES
type: constant
doc:
<comment>Description:</comment>
  If enabled, adding duplicate elements to a set (through either QuickHashIntStringHash::add or
  QuickHashIntStringHash::loadFromFile) will result in those elements to be dropped from the set.
  This will take up extra time, so only used when it is required.


id: QuickHashIntStringHash::__construct
type: function
doc:
<comment>Description:</comment>
  Creates a new QuickHashIntStringHash object
  
  This constructor creates a new <class>QuickHashIntStringHash</class>. The size is the amount of bucket lists to
  create. The more lists there are, the less collisions you will have. Options are also supported.

<comment>Param:</comment>
  <info>int</info>  <strong>$size</strong>     The amount of bucket lists to configure. The number you pass in will be
                 automatically rounded up to the next power of two. It is also automatically limited
                 from <return>64</return> to <return>4194304</return>.
  <info>int</info>  <strong>$options</strong>  The options that you can pass in are: <info>QuickHashIntStringHash::CHECK_FOR_DUPES</info>,
                 which makes sure no duplicate entries are added to the hash;
                 <info>QuickHashIntStringHash::DO_NOT_USE_ZEND_ALLOC</info> to not use PHP's internal memory
                 manager as well as one of <info>QuickHashIntStringHash::HASHER_NO_HASH</info>,
                 <info>QuickHashIntStringHash::HASHER_JENKINS1</info> or <info>QuickHashIntStringHash::HASHER_JENKINS2</info>.
                 These last three configure which hashing algorithm to use. All options can be
                 combined using bitmasks.

<comment>Return:</comment>
  <info>unknown</info>  Returns a new <class>QuickHashIntStringHash</class> object.


id: QuickHashIntStringHash::add
type: function
doc:
<comment>Description:</comment>
  This method adds a new entry to the hash
  
  This method adds a new entry to the hash, and returns whether the entry was added. Entries are by
  default always added unless <info>QuickHashIntStringHash::CHECK_FOR_DUPES</info> has been passed when the hash
  was created.

<comment>Param:</comment>
  <info>int</info>     <strong>$key</strong>    The key of the entry to add.
  <info>string</info>  <strong>$value</strong>  The value of the entry to add. If a non-string is passed, it will be converted to
                  a string automatically if possible.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> when the entry was added, and <info>false</info> if the entry was not added.


id: QuickHashIntStringHash::get
type: function
doc:
<comment>Description:</comment>
  This method retrieves a value from the hash by its key
  
  This method retrieves a value from the hash by its key.

<comment>Param:</comment>
  <info>int</info>  <strong>$key</strong>  The key of the entry to retrieve.

<comment>Return:</comment>
  <info>mixed</info>  The value if the key exists, or <info>null</info> if the key wasn't part of the hash.


id: QuickHashIntStringHash::loadFromFile
type: function
doc:
<comment>Description:</comment>
  This factory method creates a hash from a file
  
  This factory method creates a new hash from a definition file on disk. The file format consists of
  a signature <return>'QH\0x12\0'</return>, the number of elements as a 32 bit signed integer in system Endianness,
  an unsigned 32 bit integer containing the number of element data to follow in characters. This
  element data contains all the strings. After the header and the strings, the elements follow in
  pairs of two unsigned 32 bit integers where the first one is the key, and the second one the index
  in the element data string. An example could be:
  
  QuickHash IntString file format
  
  QuickHash IntString file format

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The filename of the file to read the hash from.
  <info>int</info>     <strong>$size</strong>      The amount of bucket lists to configure. The number you pass in will be
                     automatically rounded up to the next power of two. It is also automatically
                     limited from <return>4</return> to <return>4194304</return>.
  <info>int</info>     <strong>$options</strong>   The same options that the class' constructor takes; except that the size option
                     is ignored. It is automatically calculated to be the same as the number of
                     entries in the hash, rounded up to the nearest power of two with a maximum
                     limit of <return>4194304</return>.

<comment>Return:</comment>
  <info>QuickHashIntStringHash</info>  Returns a new <class>QuickHashIntStringHash</class>.


id: QuickHashIntStringHash::loadFromString
type: function
doc:
<comment>Description:</comment>
  This factory method creates a hash from a string
  
  This factory method creates a new hash from a definition in a string. The format is the same as
  the one used in "loadFromFile".

<comment>Param:</comment>
  <info>string</info>  <strong>$contents</strong>  The string containing a serialized format of the hash.
  <info>int</info>     <strong>$size</strong>      The amount of bucket lists to configure. The number you pass in will be
                     automatically rounded up to the next power of two. It is also automatically
                     limited from 4 to 4194304.
  <info>int</info>     <strong>$options</strong>   The same options that the class' constructor takes; except that the size option
                     is ignored. It is automatically calculated to be the same as the number of
                     entries in the hash, rounded up to the nearest power of two with a maximum
                     limit of 4194304.

<comment>Return:</comment>
  <info>QuickHashIntStringHash</info>  Returns a new QuickHashIntStringHash.


id: QuickHashIntStringHash::saveToFile
type: function
doc:
<comment>Description:</comment>
  This method stores an in-memory hash to disk
  
  This method stores an existing hash to a file on disk, in the same format that loadFromFile() can
  read.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The filename of the file to store the hash in.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: QuickHashIntStringHash::saveToString
type: function
doc:
<comment>Description:</comment>
  This method returns a serialized version of the hash
  
  This method returns a serialized version of the hash in the same format that
  QuickHashIntStringHash::loadFromString can read.

<comment>Return:</comment>
  <info>string</info>  This method returns a string containing a serialized format of the hash. Each element is
          stored as a four byte value in the Endianness that the current system uses.


id: QuickHashIntStringHash::set
type: function
doc:
<comment>Description:</comment>
  This method updates an entry in the hash with a new value, or
    adds a new one if the entry doesn't exist
  
  This method tries to update an entry with a new value. In case the entry did not yet exist, it
  will instead add a new entry. It returns whether the entry was added or update. If there are
  duplicate keys, only the first found element will get an updated value. Use
  QuickHashIntStringHash::CHECK_FOR_DUPES during hash creation to prevent duplicate keys from being
  part of the hash.

<comment>Param:</comment>
  <info>int</info>     <strong>$key</strong>    The key of the entry to add or update.
  <info>string</info>  <strong>$value</strong>  The value of the entry to add. If a non-string is passed, it will be converted to
                  a string automatically if possible.

<comment>Return:</comment>
  <info>int</info>  2 if the entry was found and updated, 1 if the entry was newly added or 0 if there was an
       error.


id: QuickHashIntStringHash::update
type: function
doc:
<comment>Description:</comment>
  This method updates an entry in the hash with a new value
  
  This method updates an entry with a new value, and returns whether the entry was update. If there
  are duplicate keys, only the first found element will get an updated value. Use
  QuickHashIntStringHash::CHECK_FOR_DUPES during hash creation to prevent duplicate keys from being
  part of the hash.

<comment>Param:</comment>
  <info>int</info>     <strong>$key</strong>    The key of the entry to update.
  <info>string</info>  <strong>$value</strong>  The new value for the entry. If a non-string is passed, it will be converted to a
                  string automatically if possible.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> when the entry was found and updated, and <info>false</info> if the entry was not part of the hash
        already.


id: QuickHashStringIntHash
type: class
doc:
<comment>Description:</comment>
  This class wraps around a hash containing strings, where the values are integer numbers. Hashes
  are also available as implementation of the ArrayAccess interface.
  
  Hashes can also be iterated over with <return>foreach</return> as the Iterator interface is implemented as well.
  The order of which elements are returned in is not guaranteed.


id: QuickHashStringIntHash::CHECK_FOR_DUPES
type: constant
doc:
<comment>Description:</comment>
  If enabled, adding duplicate elements to a set (through either QuickHashStringIntHash::add or
  QuickHashStringIntHash::loadFromFile) will result in those elements to be dropped from the set.
  This will take up extra time, so only used when it is required.


id: QuickHashStringIntHash::__construct
type: function
doc:
<comment>Description:</comment>
  Creates a new QuickHashStringIntHash object
  
  This constructor creates a new <class>QuickHashStringIntHash</class>. The size is the amount of bucket lists to
  create. The more lists there are, the less collisions you will have. Options are also supported.

<comment>Param:</comment>
  <info>int</info>  <strong>$size</strong>     The amount of bucket lists to configure. The number you pass in will be
                 automatically rounded up to the next power of two. It is also automatically limited
                 from <return>64</return> to <return>4194304</return>.
  <info>int</info>  <strong>$options</strong>  The options that you can pass in are: <info>QuickHashStringIntHash::CHECK_FOR_DUPES</info>,
                 which makes sure no duplicate entries are added to the hash and
                 <info>QuickHashStringIntHash::DO_NOT_USE_ZEND_ALLOC</info> to not use PHP's internal memory
                 manager.

<comment>Return:</comment>
  <info>unknown</info>  Returns a new <class>QuickHashStringIntHash</class> object.


id: QuickHashStringIntHash::add
type: function
doc:
<comment>Description:</comment>
  This method adds a new entry to the hash
  
  This method adds a new entry to the hash, and returns whether the entry was added. Entries are by
  default always added unless <info>QuickHashStringIntHash::CHECK_FOR_DUPES</info> has been passed when the hash
  was created.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>    The key of the entry to add.
  <info>int</info>     <strong>$value</strong>  The value of the entry to add.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> when the entry was added, and <info>false</info> if the entry was not added.


id: QuickHashStringIntHash::delete
type: function
doc:
<comment>Description:</comment>
  This method deletes an entry from the hash
  
  This method deletes an entry from the hash, and returns whether the entry was deleted or not.
  Associated memory structures will not be freed immediately, but rather when the hash itself is
  freed.
  
  Elements can not be deleted when the hash is used in an iterator. The method will not throw an
  exception, but simply return <info>false</info> like would happen with any other deletion failure.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>  The key of the entry to delete.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> when the entry was deleted, and <info>false</info> if the entry was not deleted.


id: QuickHashStringIntHash::exists
type: function
doc:
<comment>Description:</comment>
  This method checks whether a key is part of the hash
  
  This method checks whether an entry with the provided key exists in the hash.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>  The key of the entry to check for whether it exists in the hash.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> when the entry was found, or <info>false</info> when the entry is not found.


id: QuickHashStringIntHash::get
type: function
doc:
<comment>Description:</comment>
  This method retrieves a value from the hash by its key
  
  This method retrieves a value from the hash by its key.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>  The key of the entry to retrieve.

<comment>Return:</comment>
  <info>mixed</info>  The value if the key exists, or <info>null</info> if the key wasn't part of the hash.


id: QuickHashStringIntHash::loadFromFile
type: function
doc:
<comment>Description:</comment>
  This factory method creates a hash from a file
  
  This factory method creates a new hash from a definition file on disk. The file format consists of
  a signature <return>'QH\0x21\0'</return>, the number of elements as a 32 bit signed integer in system Endianness,
  an unsigned 32 bit integer containing the number of element data to follow in characters. This
  element data contains all the strings. The follows another signed 32 bit integer containing the
  number of bucket lists.  After the header and the strings, the elements follow. They are ordered
  by bucket list so that the keys don't have to be hashed in order to restore the hash. For each
  bucket list, the following information is stored (all as 32 bit integers): the bucket list index,
  the number of elements in that list, and then in pairs of two unsigned 32 bit integers the
  elements, where the first one is the index into the string list containing the keys, and the
  second one the value.  An example could be:
  
  QuickHash StringIntHash file format
  
  QuickHash IntHash file format

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The filename of the file to read the hash from.
  <info>int</info>     <strong>$size</strong>      The amount of bucket lists to configure. The number you pass in will be
                     automatically rounded up to the next power of two. It is also automatically
                     limited from <return>4</return> to <return>4194304</return>.
  <info>int</info>     <strong>$options</strong>   The same options that the class' constructor takes; except that the size option
                     is ignored. It is read from the file format (unlike the <class>QuickHashIntHash</class> and
                     <class>QuickHashIntStringHash</class> classes, where it is automatically calculated from the
                     number of entries in the hash.)

<comment>Return:</comment>
  <info>QuickHashStringIntHash</info>  Returns a new <class>QuickHashStringIntHash</class>.


id: QuickHashStringIntHash::loadFromString
type: function
doc:
<comment>Description:</comment>
  This factory method creates a hash from a string
  
  This factory method creates a new hash from a definition in a string. The format is the same as
  the one used in "loadFromFile".

<comment>Param:</comment>
  <info>string</info>  <strong>$contents</strong>  The string containing a serialized format of the hash.
  <info>int</info>     <strong>$size</strong>      The amount of bucket lists to configure. The number you pass in will be
                     automatically rounded up to the next power of two. It is also automatically
                     limited from 4 to 4194304.
  <info>int</info>     <strong>$options</strong>   The same options that the class' constructor takes; except that the size option
                     is ignored. It is automatically calculated to be the same as the number of
                     entries in the hash, rounded up to the nearest power of two with a maximum
                     limit of 4194304.

<comment>Return:</comment>
  <info>QuickHashStringIntHash</info>  Returns a new QuickHashStringIntHash.


id: QuickHashStringIntHash::saveToString
type: function
doc:
<comment>Description:</comment>
  This method returns a serialized version of the hash
  
  This method returns a serialized version of the hash in the same format that
  QuickHashStringIntHash::loadFromString can read.

<comment>Return:</comment>
  <info>string</info>  This method returns a serialized format of an existing hash, in the same format that
          QuickHashStringIntHash::loadFromString can read.


id: QuickHashStringIntHash::set
type: function
doc:
<comment>Description:</comment>
  This method updates an entry in the hash with a new value, or
    adds a new one if the entry doesn't exist
  
  This method tries to update an entry with a new value. In case the entry did not yet exist, it
  will instead add a new entry. It returns whether the entry was added or update. If there are
  duplicate keys, only the first found element will get an updated value. Use
  QuickHashStringIntHash::CHECK_FOR_DUPES during hash creation to prevent duplicate keys from being
  part of the hash.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>    The key of the entry to add or update.
  <info>int</info>     <strong>$value</strong>  The value of the entry to add. If a non-string is passed, it will be converted to
                  a string automatically if possible.

<comment>Return:</comment>
  <info>int</info>  2 if the entry was found and updated, 1 if the entry was newly added or 0 if there was an
       error.


id: QuickHashStringIntHash::update
type: function
doc:
<comment>Description:</comment>
  This method updates an entry in the hash with a new value
  
  This method updates an entry with a new value, and returns whether the entry was update. If there
  are duplicate keys, only the first found element will get an updated value. Use
  QuickHashStringIntHash::CHECK_FOR_DUPES during hash creation to prevent duplicate keys from being
  part of the hash.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>    The key of the entry to update.
  <info>int</info>     <strong>$value</strong>  The new value for the entry. If a non-string is passed, it will be converted to a
                  string automatically if possible.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> when the entry was found and updated, and <info>false</info> if the entry was not part of the hash
        already.


id: RADIUS_ACCESS_ACCEPT
type: constant
doc:
<comment>Description:</comment>
  An Access-Accept response to an Access-Request indicating that the RADIUS server authenticated the
  user successfully.


id: RADIUS_ACCESS_CHALLENGE
type: constant
doc:
<comment>Description:</comment>
  An Access-Challenge response to an Access-Request indicating that the RADIUS server requires
  further information in another Access-Request before authenticating the user.


id: RADIUS_ACCESS_REJECT
type: constant
doc:
<comment>Description:</comment>
  An Access-Reject response to an Access-Request indicating that the RADIUS server could not
  authenticate the user.


id: RADIUS_ACCESS_REQUEST
type: constant
doc:
<comment>Description:</comment>
  An Access-Request, used to authenticate a user against a RADIUS server. Access request packets
  must include a <info>RADIUS_NAS_IP_ADDRESS</info> or a <info>RADIUS_NAS_IDENTIFIER</info> attribute, must also include a
  <info>RADIUS_USER_PASSWORD</info>, <info>RADIUS_CHAP_PASSWORD</info> or a <info>RADIUS_STATE</info> attribute, and should include a
  <info>RADIUS_USER_NAME</info> attribute.


id: RADIUS_ACCOUNTING_REQUEST
type: constant
doc:
<comment>Description:</comment>
  An Accounting-Request, used to convey accounting information for a service to the RADIUS server.


id: RADIUS_ACCT_AUTHENTIC
type: constant
doc:
<comment>Description:</comment>
  Accounting authentic, one of: <info>RADIUS_AUTH_RADIUS</info><info>RADIUS_AUTH_LOCAL</info><info>RADIUS_AUTH_REMOTE</info>


id: RADIUS_ACCT_STATUS_TYPE
type: constant
doc:
<comment>Description:</comment>
  Accounting status type, one of: <info>RADIUS_START</info><info>RADIUS_STOP</info><info>RADIUS_ACCOUNTING_ON</info><info>RADIUS_ACCOUNTING_OFF</info>


id: RADIUS_ACCT_TERMINATE_CAUSE
type: constant
doc:
<comment>Description:</comment>
  Accounting terminate cause, one of:
  <info>RADIUS_TERM_USER_REQUEST</info><info>RADIUS_TERM_LOST_CARRIER</info><info>RADIUS_TERM_LOST_SERVICE</info><info>RADIUS_TERM_IDLE_TIMEOUT</info><info>RADIUS_TERM_SESSION_TIMEOUT</info><info>RADIUS_TERM_ADMIN_RESET</info><info>RADIUS_TERM_ADMIN_REBOOT</info><info>RADIUS_TERM_PORT_ERROR</info><info>RADIUS_TERM_NAS_ERROR</info><info>RADIUS_TERM_NAS_REQUEST</info><info>RADIUS_TERM_NAS_REBOOT</info><info>RADIUS_TERM_PORT_UNNEEDED</info><info>RADIUS_TERM_PORT_PREEMPTED</info><info>RADIUS_TERM_PORT_SUSPENDED</info><info>RADIUS_TERM_SERVICE_UNAVAILABLE</info><info>RADIUS_TERM_CALLBACK</info><info>RADIUS_TERM_USER_ERROR</info><info>RADIUS_TERM_HOST_REQUEST</info>


id: RADIUS_CALLBACK_ID
type: constant
doc:
<comment>Description:</comment>
  The Callback-Id attribute. The attribute value is a <info>string</info> containing an implementation-specific
  name of the place to be called.


id: RADIUS_CALLBACK_NUMBER
type: constant
doc:
<comment>Description:</comment>
  The Callback-Number attribute. The attribute value is a <info>string</info> containing the dialing string to
  use for callback.


id: RADIUS_CHAP_PASSWORD
type: constant
doc:
<comment>Description:</comment>
  The Chap-Password attribute. The attribute value is expected to be a <info>string</info> with the first byte
  containing the CHAP identifier, and the subsequent 16 bytes containing the MD5 hash of the CHAP
  identifier, the plaintext password and the CHAP challenge value concatenated together. Note that
  the CHAP challenge value should also be sent separately in a <info>RADIUS_CHAP_CHALLENGE</info> attribute.
  
  Using CHAP passwords


id: RADIUS_CLASS
type: constant
doc:
<comment>Description:</comment>
  The Class attribute. The attribute value is an arbitrary <info>string</info> included in an Access-Accept
  message that should then be sent to the accounting server in Accounting-Request messages, and can
  be set using <strong>radius_put_attr()</strong>.


id: RADIUS_COA_ACK
type: constant
doc:
<comment>Description:</comment>
  A CoA-ACK, sent to the RADIUS server to indicate that the user authorisations have been updated.
  
  This constant is available in PECL radius 1.3.0 and later.


id: RADIUS_COA_NAK
type: constant
doc:
<comment>Description:</comment>
  A CoA-NAK, sent to the RADIUS server to indicate that the user authorisations could not be
  updated.
  
  This constant is available in PECL radius 1.3.0 and later.


id: RADIUS_COA_REQUEST
type: constant
doc:
<comment>Description:</comment>
  A CoA-Request, sent from the RADIUS server to indicate that the authorisations within the user
  session have changed. A response must be sent in the form of a CoA-ACK or a CoA-NAK.
  
  This constant is available in PECL radius 1.3.0 and later.


id: RADIUS_DISCONNECT_ACK
type: constant
doc:
<comment>Description:</comment>
  A Disconnect-ACK, sent to the RADIUS server to indicate that the user session has been terminated.
  
  This constant is available in PECL radius 1.3.0 and later.


id: RADIUS_DISCONNECT_NAK
type: constant
doc:
<comment>Description:</comment>
  A Disconnect-NAK, sent to the RADIUS server to indicate that the user session could not be
  terminated.
  
  This constant is available in PECL radius 1.3.0 and later.


id: RADIUS_DISCONNECT_REQUEST
type: constant
doc:
<comment>Description:</comment>
  A Disconnect-Request, sent from the RADIUS server to indicate that the user session must be
  terminated.
  
  This constant is available in PECL radius 1.3.0 and later.


id: RADIUS_FILTER_ID
type: constant
doc:
<comment>Description:</comment>
  The Filter-ID attribute. The attribute value is expected to be an implementation-specific,
  human-readable <info>string</info> of filters, which can be set using <strong>radius_put_attr()</strong>.


id: RADIUS_FRAMED_COMPRESSION
type: constant
doc:
<comment>Description:</comment>
  The Framed-Compression attribute. The attribute value is expected to be an <info>int</info> indicating the
  compression protocol to be used, and can be set using <strong>radius_put_int()</strong>. Possible values include
  these constants: <info>RADIUS_COMP_NONE</info>: No compression<info>RADIUS_COMP_VJ</info>: VJ TCP/IP header
  compression<info>RADIUS_COMP_IPXHDR</info>: IPX header compression<info>RADIUS_COMP_STAC_LZS</info>: Stac-LZS compression
  (added in PECL radius 1.3.0b2)


id: RADIUS_FRAMED_IPX_NETWORK
type: constant
doc:
<comment>Description:</comment>
  The Framed-IPX-Network attribute. The attribute value is an <info>int</info> containing the IPX network to be
  configured for the user, or <return>0xFFFFFFFE</return> to indicate that the RADIUS client should select the
  network, and can be accessed via <strong>radius_cvt_int()</strong>.


id: RADIUS_FRAMED_IP_ADDRESS
type: constant
doc:
<comment>Description:</comment>
  The Framed-IP-Address attribute. The attribute value is expected to be the address of the user's
  network encoded as an <info>int</info>, which can be set using <strong>radius_put_addr()</strong> and retrieved using
  <strong>radius_cvt_addr()</strong>.


id: RADIUS_FRAMED_IP_NETMASK
type: constant
doc:
<comment>Description:</comment>
  The Framed-IP-Netmask attribute. The attribute value is expected to be the netmask of the user's
  network encoded as an <info>int</info>, which can be set using <strong>radius_put_addr()</strong> and retrieved using
  <strong>radius_cvt_addr()</strong>.


id: RADIUS_FRAMED_MTU
type: constant
doc:
<comment>Description:</comment>
  The Framed-MTU attribute. The attribute value is expected to be an <info>int</info> indicating the MTU to be
  configured for the user, and can be set using <strong>radius_put_int()</strong>.


id: RADIUS_FRAMED_PROTOCOL
type: constant
doc:
<comment>Description:</comment>
  The Framed-Protocol attribute. The attribute value is expected to be an <info>int</info> indicating the framing
  to be used for framed access, and can be set using <strong>radius_put_int()</strong>. The possible attribute values
  include these constants: <info>RADIUS_PPP</info><info>RADIUS_SLIP</info><info>RADIUS_ARAP</info><info>RADIUS_GANDALF</info><info>RADIUS_XYLOGICS</info>


id: RADIUS_FRAMED_ROUTE
type: constant
doc:
<comment>Description:</comment>
  The Framed-Route attribute. The attribute value is a <info>string</info> containing an implementation-specific
  set of routes to be configured for the user.


id: RADIUS_FRAMED_ROUTING
type: constant
doc:
<comment>Description:</comment>
  The Framed-Routing attribute. The attribute value is expected to be an <info>int</info> indicating the routing
  method for the user, which can be set using <strong>radius_put_int()</strong>.
  
  Possible values include: <return>0</return>: No routing<return>1</return>: Send routing packets<return>2</return>: Listen for routing packets<return>3</return>: Send
  and listen


id: RADIUS_LOGIN_IP_HOST
type: constant
doc:
<comment>Description:</comment>
  The Login-IP-Host attribute. The attribute value is expected to the IP address to connect the user
  to, encoded as an <info>int</info>, which can be set using <strong>radius_put_addr()</strong>.


id: RADIUS_LOGIN_SERVICE
type: constant
doc:
<comment>Description:</comment>
  The Login-Service attribute. The attribute value is an <info>int</info> indicating the service to connect the
  user to on the login host. The value can be converted to a PHP integer via <strong>radius_cvt_int()</strong>.


id: RADIUS_LOGIN_TCP_PORT
type: constant
doc:
<comment>Description:</comment>
  The Login-TCP-Port attribute. The attribute value is an <info>int</info> indicating the port to connect the
  user to on the login host. The value can be converted to a PHP integer via <strong>radius_cvt_int()</strong>.


id: RADIUS_NAS_IP_ADDRESS
type: constant
doc:
<comment>Description:</comment>
  The NAS-IP-Address attribute. The attribute value is expected to the IP address of the RADIUS
  client encoded as an <info>int</info>, which can be set using <strong>radius_put_addr()</strong>.


id: RADIUS_NAS_PORT
type: constant
doc:
<comment>Description:</comment>
  The NAS-Port attribute. The attribute value is expected to be the physical port of the user on the
  RADIUS client encoded as an <info>int</info>, which can be set using <strong>radius_put_int()</strong>.


id: RADIUS_NAS_PORT_TYPE
type: constant
doc:
<comment>Description:</comment>
  NAS port type, one of:
  <info>RADIUS_ASYNC</info><info>RADIUS_SYNC</info><info>RADIUS_ISDN_SYNC</info><info>RADIUS_ISDN_ASYNC_V120</info><info>RADIUS_ISDN_ASYNC_V110</info><info>RADIUS_VIRTUAL</info><info>RADIUS_PIAFS</info><info>RADIUS_HDLC_CLEAR_CHANNEL</info><info>RADIUS_X_25</info><info>RADIUS_X_75</info><info>RADIUS_G_3_FAX</info><info>RADIUS_SDSL</info><info>RADIUS_ADSL_CAP</info><info>RADIUS_ADSL_DMT</info><info>RADIUS_IDSL</info><info>RADIUS_ETHERNET</info><info>RADIUS_XDSL</info><info>RADIUS_CABLE</info><info>RADIUS_WIRELESS_OTHER</info><info>RADIUS_WIRELESS_IEEE_802_11</info>


id: RADIUS_OPTION_SALT
type: constant
doc:
<comment>Description:</comment>
  When set, this option will result in the attribute value being salt-encrypted.


id: RADIUS_OPTION_TAGGED
type: constant
doc:
<comment>Description:</comment>
  When set, this option will result in the attribute value being tagged with the value of the tag
  parameter.


id: RADIUS_REPLY_MESSAGE
type: constant
doc:
<comment>Description:</comment>
  The Reply-Message attribute. The attribute value is a <info>string</info> containing text that may be displayed
  to the user in response to an access request.


id: RADIUS_SERVICE_TYPE
type: constant
doc:
<comment>Description:</comment>
  The Service-Type attribute. The attribute value indicates the service type the user is requesting,
  and is expected to be an <info>int</info>, which can be set using <strong>radius_put_int()</strong>.
  
  A number of constants are provided to represent the possible values of this attribute. They
  include:
  <info>RADIUS_LOGIN</info><info>RADIUS_FRAMED</info><info>RADIUS_CALLBACK_LOGIN</info><info>RADIUS_CALLBACK_FRAMED</info><info>RADIUS_OUTBOUND</info><info>RADIUS_ADMINISTRATIVE</info><info>RADIUS_NAS_PROMPT</info><info>RADIUS_AUTHENTICATE_ONLY</info><info>RADIUS_CALLBACK_NAS_PROMPT</info>


id: RADIUS_STATE
type: constant
doc:
<comment>Description:</comment>
  The State attribute. The attribute value is an implementation-defined <info>string</info> included in an
  Access-Challenge from a server that must be included in the subsequent Access-Request, and can be
  set using <strong>radius_put_attr()</strong>.


id: RADIUS_USER_NAME
type: constant
doc:
<comment>Description:</comment>
  The User-Name attribute. The attribute value is expected to be a <info>string</info> containing the name of the
  user being authenticated, and can be set using <strong>radius_put_attr()</strong>.


id: RADIUS_USER_PASSWORD
type: constant
doc:
<comment>Description:</comment>
  The User-Password attribute. The attribute value is expected to be a <info>string</info> containing the user's
  password, and can be set using <strong>radius_put_attr()</strong>. This value will be obfuscated on transmission as
  described in section 5.2 of RFC 2865.


id: RADIUS_VENDOR_MICROSOFT
type: constant
doc:
<comment>Description:</comment>
  Microsoft specific vendor attributes (RFC 2548), one of:
  <info>RADIUS_MICROSOFT_MS_CHAP_RESPONSE</info><info>RADIUS_MICROSOFT_MS_CHAP_ERROR</info><info>RADIUS_MICROSOFT_MS_CHAP_PW_1</info><info>RADIUS_MICROSOFT_MS_CHAP_PW_2</info><info>RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW</info><info>RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW</info><info>RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY</info><info>RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES</info><info>RADIUS_MICROSOFT_MS_RAS_VENDOR</info><info>RADIUS_MICROSOFT_MS_CHAP_DOMAIN</info><info>RADIUS_MICROSOFT_MS_CHAP_CHALLENGE</info><info>RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS</info><info>RADIUS_MICROSOFT_MS_BAP_USAGE</info><info>RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD</info><info>RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT</info><info>RADIUS_MICROSOFT_MS_MPPE_SEND_KEY</info><info>RADIUS_MICROSOFT_MS_MPPE_RECV_KEY</info><info>RADIUS_MICROSOFT_MS_RAS_VERSION</info><info>RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD</info><info>RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD</info><info>RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON</info><info>RADIUS_MICROSOFT_MS_FILTER</info><info>RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE</info><info>RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE</info><info>RADIUS_MICROSOFT_MS_CHAP2_RESPONSE</info><info>RADIUS_MICROSOFT_MS_CHAP2_SUCCESS</info><info>RADIUS_MICROSOFT_MS_CHAP2_PW</info><info>RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER</info><info>RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER</info><info>RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER</info><info>RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER</info><info>RADIUS_MICROSOFT_MS_ARAP_CHALLENGE</info>


id: RADIUS_VENDOR_SPECIFIC
type: constant
doc:
<comment>Description:</comment>
  The Vendor-Specific attribute. In general, vendor attribute values should be set using
  <strong>radius_put_vendor_addr()</strong>, <strong>radius_put_vendor_attr()</strong>, <strong>radius_put_vendor_int()</strong> and
  <strong>radius_put_vendor_string()</strong>, rather than directly.
  
  This constant is mostly useful when interpreting vendor specific attributes in responses from a
  RADIUS server; when a vendor specific attribute is received, the <strong>radius_get_vendor_attr()</strong> function
  should be used to access the vendor ID, attribute type and attribute value.


id: READLINE_LIB
type: constant
doc:
<comment>Description:</comment>
  The library which is used for readline support; currently either <return>readline</return> or <return>libedit</return>.


id: RNP_ENCRYPT_NOWRAP
type: constant
doc:
<comment>Description:</comment>
  Allows encryption of signed message. Message is not wrapped into literal data packet.


id: RNP_KEYSTORE_KBX
type: constant
doc:
<comment>Description:</comment>
  Keystore format "KBX". For public keys only. A keybox is a file format used to store public keys
  along with meta information and indices.


id: RNP_KEY_EXPORT_SUBKEYS
type: constant
doc:
<comment>Description:</comment>
  If primary key is being exported, all subkeys will be exported too.


id: RNP_KEY_REMOVE_SUBKEYS
type: constant
doc:
<comment>Description:</comment>
  If primary key is being deleted, all of its subkeys will be removed too.


id: RNP_LOAD_SAVE_PERMISSIVE
type: constant
doc:
<comment>Description:</comment>
  Allows to ignore bad signature/key/subkey packets during key import.


id: RNP_LOAD_SAVE_PUBLIC_KEYS
type: constant
doc:
<comment>Description:</comment>
  Load or save public keys only. Can be OR-ed with <info>RNP_LOAD_SAVE_SECRET_KEYS</info> to load both public and
  private keys to the FFI context or save them from the context.


id: RNP_LOAD_SAVE_SECRET_KEYS
type: constant
doc:
<comment>Description:</comment>
  Load or save secret keys only. Can be OR-ed with <info>RNP_LOAD_SAVE_PUBLIC_KEYS</info> to load both public and
  private keys to the FFI context or save them from the context.


id: RPMMIRE_DEFAULT
type: constant
doc:
<comment>Description:</comment>
  Search pattern is a regular expression with \., .* and ^...$ added.


id: RPMTAG_ENHANCENAME
type: constant
doc:
<comment>Description:</comment>
  Weak dependencies, with database index, requires librpm &gt;= 4.13.


id: RPMTAG_FILETRIGGERNAME
type: constant
doc:
<comment>Description:</comment>
  File trigger name, with database index, requires librpm &gt;= 4.13.


id: RPMTAG_RECOMMENDNAME
type: constant
doc:
<comment>Description:</comment>
  Recommended weak dependencies, with database index, requires librpm &gt;= 4.13.


id: RPMTAG_SUGGESTNAME
type: constant
doc:
<comment>Description:</comment>
  Suggested weak dependencies, with database index, requires librpm &gt;= 4.13.


id: RPMTAG_TRANSFILETRIGGERNAME
type: constant
doc:
<comment>Description:</comment>
  Transaction file trigger name, with database index, requires librpm &gt;= 4.13.


id: RRDCreator::__construct
type: function
doc:
<comment>Description:</comment>
  Creates new RRDCreator instance
  
  Creates new <class>RRDCreator</class> instance.

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>       Path for newly created RRD database file.
  <info>string</info>  <strong>$startTime</strong>  Time for the first value in RRD database. Parameter supports all formats which
                      are supported by rrd create call.
  <info>int</info>     <strong>$step</strong>       Base interval in seconds with which data will be fed into the RRD database.


id: RRDCreator::addArchive
type: function
doc:
<comment>Description:</comment>
  Adds RRA - archive of data values for each data source
  
  Adds RRA definition by description of archive. Archive consists  of a number of data values or
  statistics for each of the defined data-sources (DS). Data sources are defined by method
  RRDCreator::addDataSource. You need call this method for each requested archive.

<comment>Param:</comment>
  <info>string</info>  <strong>$description</strong>  Definition of archive - RRA. This has same format as RRA definition in rrd
                        create command. See man page of rrd create for more details.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RRDCreator::addDataSource
type: function
doc:
<comment>Description:</comment>
  Adds data source definition for RRD database
  
  RRD can accept input from several data sources (DS), e.g incoming and outgoing traffic. This
  method adds data source by description. You need call this method for each data source.

<comment>Param:</comment>
  <info>string</info>  <strong>$description</strong>  Definition of data source - DS. This has same format as DS definition in rrd
                        create command. See man page of rrd create for more details.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RRDCreator::save
type: function
doc:
<comment>Description:</comment>
  Saves the RRD database to a file
  
  Saves the RRD database into file, which name is defined by RRDCreator::__construct.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: RRDGraph::__construct
type: function
doc:
<comment>Description:</comment>
  Creates new RRDGraph instance
  
  Creates new <class>RRDGraph</class> instance. This instance is responsible for rendering the result of RRD
  database query into image.

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>  Full path for the newly created image.


id: RRDGraph::save
type: function
doc:
<comment>Description:</comment>
  Saves the result of query into image
  
  Saves the result of RRD database query into image defined by RRDGraph::__construct.

<comment>Return:</comment>
  <info>array</info>  Returns array with information about generated image, 或者在失败时返回 <info>false</info>.


id: RRDGraph::saveVerbose
type: function
doc:
<comment>Description:</comment>
  Saves the RRD database query into image and returns the verbose
     information about generated graph
    
  
  Saves the RRD database query into image file defined by method RRDGraph::__construct and returns
  the verbose information about generated graph, if "-" is used as image filename, image data are
  also returned in result array.

<comment>Return:</comment>
  <info>array</info>  Returns array with detailed information about generated image, 或者在失败时返回 <info>false</info>.


id: RRDGraph::setOptions
type: function
doc:
<comment>Description:</comment>
  Sets the options for rrd graph export

<comment>Param:</comment>
  <info>array</info>  <strong>$options</strong>  List of options for the image generation from the RRD database file. It can be
                   list of strings or list of strings with keys for better readability. Read the rrd
                   graph man pages for list of available options.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RRDUpdater::__construct
type: function
doc:
<comment>Description:</comment>
  Creates new RRDUpdater instance
  
  Creates new RRDUpdater instance. This instance is responsible for updating the RRD database file.

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>  Filesystem path for RRD database file, which will be updated.


id: RRDUpdater::update
type: function
doc:
<comment>Description:</comment>
  Update the RRD database file
  
  Updates the RRD file defined via RRDUpdater::__construct. The file is updated with a specific
  values.

<comment>Param:</comment>
  <info>array</info>   <strong>$values</strong>  Data for update. Key is data source name.
  <info>string</info>  <strong>$time</strong>    Time value for updating the RRD with a particular data. Default value is current
                   time.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: RUNKIT7_ACC_PRIVATE
type: constant
doc:
<comment>Description:</comment>
  Flag for <strong>runkit7_method_add()</strong> and <strong>runkit7_method_redefine()</strong> to make the method private.


id: RUNKIT7_ACC_PROTECTED
type: constant
doc:
<comment>Description:</comment>
  Flag for <strong>runkit7_method_add()</strong> and <strong>runkit7_method_redefine()</strong> to make the method protected.


id: RUNKIT7_ACC_PUBLIC
type: constant
doc:
<comment>Description:</comment>
  Flag for <strong>runkit7_method_add()</strong> and <strong>runkit7_method_redefine()</strong> to make the method public.


id: RUNKIT7_ACC_RETURN_REFERENCE
type: constant
doc:
<comment>Description:</comment>
  Include this flag to make the function or method being created or redeclared return a reference.


id: RUNKIT7_ACC_STATIC
type: constant
doc:
<comment>Description:</comment>
  Flag for <strong>runkit7_method_add()</strong> and <strong>runkit7_method_redefine()</strong> to make the method static.


id: RUNKIT7_FEATURE_SANDBOX
type: constant
doc:
<comment>Description:</comment>
  Always 0, it's impractical to implement the sandbox feature in php 7.


id: RUNKIT7_IMPORT_CLASSES
type: constant
doc:
<comment>Description:</comment>
  <strong>runkit7_import()</strong> flag representing a bitwise OR of the <info>RUNKIT7_IMPORT_CLASS_*</info> constants.


id: RUNKIT7_IMPORT_CLASS_CONSTS
type: constant
doc:
<comment>Description:</comment>
  <strong>runkit7_import()</strong> flag indicating that class constants should be imported from the specified file.


id: RUNKIT7_IMPORT_CLASS_METHODS
type: constant
doc:
<comment>Description:</comment>
  <strong>runkit7_import()</strong> flag indicating that class methods should be imported from the specified file.


id: RUNKIT7_IMPORT_CLASS_PROPS
type: constant
doc:
<comment>Description:</comment>
  <strong>runkit7_import()</strong> flag indicating that class standard properties should be imported from the
  specified file.


id: RUNKIT7_IMPORT_CLASS_STATIC_PROPS
type: constant
doc:
<comment>Description:</comment>
  <strong>runkit7_import()</strong> flag indicating that class static properties should be imported from the
  specified file. Available since Runkit 1.0.1.


id: RUNKIT7_IMPORT_FUNCTIONS
type: constant
doc:
<comment>Description:</comment>
  <strong>runkit7_import()</strong> flag indicating that normal functions should be imported from the specified file.


id: RUNKIT7_IMPORT_OVERRIDE
type: constant
doc:
<comment>Description:</comment>
  <strong>runkit7_import()</strong> flag indicating that if any of the imported functions, methods, constants, or
  properties already exist, they should be replaced with the new definitions.  If this flag is not
  set, then any imported definitions which already exist will be discarded.


id: Random\CryptoSafeEngine
type: class
doc:
<comment>Description:</comment>
  A marker interface indicating that the <info>Random\Engine</info> returns cryptographically secure randomness.


id: Random\Engine
type: class
doc:
<comment>Description:</comment>
  A <class>Random\Engine</class> provides a low-level source of randomness by returning random bytes that are
  consumed by high-level APIs to perform their operations. The <class>Random\Engine</class> interface allows
  swapping out the algorithm used to generate randomness, because each algorithm makes different
  tradeoffs to fit specific use-cases. Some algorithms are very fast, but generate lower-quality
  randomness, whereas other algorithms are slower, but generate better randomness, up to
  cryptographically secure randomness as provided by the <class>Random\Engine\Secure</class> engine.
  
  PHP provides several <class>Random\Engine</class>s out of the box to accomodate different use-cases. The
  <class>Random\Engine\Secure</class> engine that is backed by a CSPRNG is the recommended safe default choice,
  unless the application requires either reproducible sequences or very high performance.


id: Random\Engine::generate
type: function
doc:
<comment>Description:</comment>
  Generates randomness
  
  Returns randomness and advances the algorithm’s state by one step.
  
  The randomness is represented by a binary string containing random bytes. This representation
  allows to unambiguously interpret the random bits generated by the algorithm, for example to
  accomodate different output sizes used by different algorithms.
  
  Algorithms that natively operate on integer values should return the integer in little-endian byte
  order, for example by leveraging the <strong>pack()</strong> function with the <return>P</return> format code. The high-level
  interface provided by the <class>Random\Randomizer</class> will interpret the returned random bytes as unsigned
  little-endian integers if a numeric representation is required.
  
  It is strongly recommended that each bit of the returned string is uniformly and independently
  selected, as some applications require randomness based on the bit-level to work correctly. For
  example linear congruential generators often generate lower-quality randomness for the less
  significant bits of the return integer value and thus would not be appropriate for applications
  that require bit-level randomness.

<comment>Return:</comment>
  <info>string</info>  A non-empty string containing random bytes.
          
          The <class>Random\Randomizer</class> works with unsigned 64 bit integers internally. If the returned
          string contains more than 64 bit (8 byte) of randomness the exceeding bytes will be
          ignored. Other applications may be able to process more than 64 bit at once.


id: Random\Engine\Mt19937::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a new Mt19937 engine
  
  由于 Mt19937（“梅森旋转算法”）引擎仅接受 32 位整数作为种子，因此尽管 Mt19937 的范围为 219937-1，但
  可能的随机序列数量仅限于 232（即 4,294,967,296）。
  
  当依赖隐式或显式随机播种时，重复会出现得更早。根据生日问题，在少于 80,000 个随机生成的种子后，预计
  重复种子的概率为 50%。在随机生成大约 30,000 个种子后，重复种子的概率为 10%。
  
  This makes Mt19937 unsuitable for applications where duplicated sequences must not happen with
  more than a negligible probability. 如果需要可重复的种子，<class>Random\Engine\Xoshiro256StarStar</class> 和
  <class>Random\Engine\PcgOneseq128XslRr64</class> 引擎都支持更大的种子，它们不太可能随机碰撞。如果不需要再现性，
  <class>Random\Engine\Secure</class> 引擎提供加密安全随机性。
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>int|null</info>  <strong>$seed</strong>  Fills the state with values generated with a linear congruential generator that
                   was seeded with <strong>$seed</strong> interpreted as an unsigned 32 bit integer.
                   
                   If <strong>$seed</strong> is omitted or <info>null</info>, a random unsigned 32 bit integer will be used.
  <info>int</info>       <strong>$mode</strong>  Use one of the following constants to specify the implementation of the algorithm
                   to use. <info>MT_RAND_MT19937</info>: The correct Mt19937 implementation. <info>MT_RAND_PHP</info>: An
                   incorrect implementation for backwards compatibility with <strong>mt_srand()</strong> prior to PHP
                   7.1.0.
                   
                   本特性已自 PHP 8.3.0
                   起废弃。强烈建议不要使用本特性。


id: Random\Engine\Mt19937::__debugInfo
type: function
doc:
<comment>Description:</comment>
  Returns the internal state of the engine
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>array</info>  


id: Random\Engine\Mt19937::__serialize
type: function
doc:
<comment>Description:</comment>
  Serializes the Mt19937 object
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>array</info>  


id: Random\Engine\Mt19937::__unserialize
type: function
doc:
<comment>Description:</comment>
  Deserializes the data parameter into a Mt19937 object
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>array</info>  <strong>$data</strong>  

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: Random\Engine\Mt19937::generate
type: function
doc:
<comment>Description:</comment>
  Generate 32 bits of randomness
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  A string representing an unsigned 32 bit integer in little-endian order.


id: Random\Engine\PcgOneseq128XslRr64
type: class
doc:
<comment>Description:</comment>
  Implements a Permuted congruential generator (PCG) with 128 bits of state, XSL and RR output
  transformations, and 64 bits of output.


id: Random\Engine\PcgOneseq128XslRr64::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a new PCG Oneseq 128 XSL RR 64 engine
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string|int|null</info>  <strong>$seed</strong>  How the internal 128 bit (16 byte) state consisting of one unsigned 128
                          bit integer is seeded depends on the type used as the <strong>$seed</strong>. Type说明<info>null</info>
                          Fills the state with 16 random bytes generated using the CSPRNG. <info>int</info> Fills
                          the state by setting the state to <return>0</return>, advancing the engine one step, adding
                          the value of <strong>$seed</strong> interpreted as an unsigned 64 bit integer, and
                          advancing the engine another step. <info>string</info> Fills the state by interpreting
                          a 16 byte <info>string</info> as a little-endian unsigned 128 bit integer.


id: Random\Engine\PcgOneseq128XslRr64::__serialize
type: function
doc:
<comment>Description:</comment>
  Serializes the PcgOneseq128XslRr64 object
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>array</info>  


id: Random\Engine\PcgOneseq128XslRr64::__unserialize
type: function
doc:
<comment>Description:</comment>
  Deserializes the data parameter into a PcgOneseq128XslRr64 object
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>array</info>  <strong>$data</strong>  

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: Random\Engine\PcgOneseq128XslRr64::generate
type: function
doc:
<comment>Description:</comment>
  Generate 64 bits of randomness
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  A string representing an unsigned 64 bit integer in little-endian order.


id: Random\Engine\PcgOneseq128XslRr64::jump
type: function
doc:
<comment>Description:</comment>
  Efficiently move the engine ahead multiple steps
  
  Moves the algorithm’s state ahead by the number of steps given by <strong>$advance</strong>, as if
  <strong>Random\Engine\PcgOneseq128XslRr64::generate()</strong> was called that many times.

<comment>Param:</comment>
  <info>int</info>  <strong>$advance</strong>  The number of steps to move ahead; must be <return>0</return> or greater.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: Random\Engine\Secure
type: class
doc:
<comment>Description:</comment>
  Generates cryptographically secure randomness using the operating system’s CSPRNG.
  
  The randomness generated by this <class>Random\Engine</class> is suitable for all applications, including the
  generation of long-term secrets, such as encryption keys.
  
  The <class>Random\Engine\Secure</class> engine is the recommended safe default choice, unless the application
  requires either reproducible sequences or very high performance.


id: Random\Engine\Secure::generate
type: function
doc:
<comment>Description:</comment>
  Generate cryptographically secure randomness
  
  Returns cryptographically secure randomness.
  
  此函数使用的随机性来源先后顺序如下：
  
  Linux：getrandom()、/dev/urandom
  
  FreeBSD &gt;= 12（PHP &gt;= 7.3）：getrandom()、/dev/urandom
  
  Windows（PHP &gt;= 7.2）：CNG-API
  
  Windows：CryptGenRandom
  
  macOS（PHP &gt;= 8.2；&gt;= 8.1.9；&gt;= 8.0.22 如果 CCRandomGenerateBytes 在编译时可用）：
  CCRandomGenerateBytes()
  
  macOS（PHP &gt;= 8.1；&gt;= 8.0.2）：arc4random_buf()、/dev/urandom
  
  NetBSD &gt;= 7（PHP &gt;= 7.1；&gt;= 7.0.1）：arc4random_buf()、/dev/urandom
  
  OpenBSD &gt;= 5.5（PHP &gt;= 7.1；&gt;= 7.0.1）：arc4random_buf()、/dev/urandom
  
  DragonflyBSD（PHP &gt;= 8.1）：getrandom()、/dev/urandom
  
  Solaris（PHP &gt;= 8.1）：getrandom()、/dev/urandom
  
  未提及的 PHP 版本和操作系统的组合：/dev/urandom
  
  如果没有可用的来源或它们都无法生成随机性，则将抛出 <class>Random\RandomException</class>。

<comment>Return:</comment>
  <info>string</info>  A string containing <info>PHP_INT_SIZE</info> cryptographically secure random bytes.


id: Random\Engine\Xoshiro256StarStar::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a new xoshiro256** engine
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string|int|null</info>  <strong>$seed</strong>  How the internal 256 bit (32 byte) state consisting of four unsigned 64
                          bit integers is seeded depends on the type used as the <strong>$seed</strong>. Type说明<info>null</info>
                          Fills the state with 32 random bytes generated using the CSPRNG. <info>int</info> Fills
                          the state with four consecutive values generated with the SplitMix64
                          algorithm that was seeded with <strong>$seed</strong> interpreted as an unsigned 64 bit
                          integer. <info>string</info> Fills the state by interpreting a 32 byte <info>string</info> as four
                          little-endian unsigned 64 bit integers.


id: Random\Engine\Xoshiro256StarStar::__serialize
type: function
doc:
<comment>Description:</comment>
  Serializes the Xoshiro256StarStar object
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>array</info>  


id: Random\Engine\Xoshiro256StarStar::__unserialize
type: function
doc:
<comment>Description:</comment>
  Deserializes the data parameter into a Xoshiro256StarStar object
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>array</info>  <strong>$data</strong>  

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: Random\Engine\Xoshiro256StarStar::jump
type: function
doc:
<comment>Description:</comment>
  Efficiently move the engine ahead by 2^128 steps
  
  Moves the algorithm’s state ahead by 2128 steps, as if
  <strong>Random\Engine\Xoshiro256StarStar::generate()</strong> was called 2128 times.
  
  The purpose of a jump is to facilitate the creation of a new <class>Random\Engine\Xoshiro256StarStar</class>
  engine from an existing seeded <class>Random\Engine\Xoshiro256StarStar</class> engine. The seeded engine acts as
  a blueprint, which can be cloned and repeatedly jumped to create 2128 non-overlapping sequences
  with 2128 values each.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>Random\Engine\Xoshiro256StarStar::jumpLong()</strong>


id: Random\Engine\Xoshiro256StarStar::jumpLong
type: function
doc:
<comment>Description:</comment>
  Efficiently move the engine ahead by 2^192 steps
  
  Moves the algorithm’s state ahead by 2192 steps, as if
  <strong>Random\Engine\Xoshiro256StarStar::generate()</strong> was called 2192 times.
  
  The purpose of a long jump is to facilitate the creation of a new <class>Random\Engine\Xoshiro256StarStar</class>
  engine from an existing seeded <class>Random\Engine\Xoshiro256StarStar</class> engine. The seeded engine acts as
  a blueprint, which can be cloned and repeatedly jumped to create 264 non-overlapping sequences
  with 2192 values each.
  
  Long jumping may be combined with <strong>Random\Engine\Xoshiro256StarStar::jump()</strong>ing to further split
  each of the 264 sequences generated by long jumping, into 264 sequences of 2128 values each.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>Random\Engine\Xoshiro256StarStar::jump()</strong>


id: Random\RandomError
type: class
doc:
<comment>Description:</comment>
  Indicates that the used <class>Random\Engine</class> is broken, e.g. because it is severely biased.


id: Random\Randomizer
type: class
doc:
<comment>Description:</comment>
  Provides a high-level API to the randomness provided by an <class>Random\Engine</class>.


id: Random\Randomizer::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a new Randomizer
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>Random\Engine|null</info>  <strong>$engine</strong>  The <class>Random\Engine</class> to use to generate randomness.
                               
                               If <strong>$engine</strong> is omitted or <info>null</info>, a new <class>Random\Engine\Secure</class> object will
                               be used.


id: Random\Randomizer::__serialize
type: function
doc:
<comment>Description:</comment>
  Serializes the Randomizer object
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>array</info>  


id: Random\Randomizer::__unserialize
type: function
doc:
<comment>Description:</comment>
  Deserializes the data parameter into a Randomizer object
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>array</info>  <strong>$data</strong>  

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: Random\Randomizer::getBytes
type: function
doc:
<comment>Description:</comment>
  Get random bytes
  
  Generates a string containing uniformly selected random bytes with the requested <strong>$length</strong>.
  
  As the returned bytes are selected completely randomly, the resulting string is likely to contain
  unprintable characters or invalid UTF-8 sequences. It may be necessary to encode it before
  transmission or display.

<comment>Param:</comment>
  <info>int</info>  <strong>$length</strong>  The length of the random <info>string</info> that should be returned in bytes; must be <return>1</return> or
                greater.

<comment>Return:</comment>
  <info>string</info>  A <info>string</info> containing the requested number of random bytes.

<comment>See Also:</comment>
   * <strong>random_bytes()</strong>
   * <strong>bin2hex()</strong>
   * <strong>base64_encode()</strong>
   * Random\Randomizer::getBytesFromString


id: Random\Randomizer::getBytesFromString
type: function
doc:
<comment>Description:</comment>
  Get random bytes from a source string
  
  Generates a string containing uniformly selected random bytes from the input <strong>$string</strong> with the
  requested <strong>$length</strong>.
  
  The chance for a byte to be selected is proportional to its share of the input <strong>$string</strong>. If each
  byte occurs the same amount of times, each byte is equally likely to be selected.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  The <info>string</info> from which the returned bytes are selected.
  <info>int</info>     <strong>$length</strong>  The length of the random <info>string</info> that should be returned in bytes; must be <return>1</return> or
                   greater.

<comment>Return:</comment>
  <info>string</info>  A <info>string</info> containing the requested number of random bytes taken from the input <strong>$string</strong>.

<comment>See Also:</comment>
   * Random\Randomizer::getBytes


id: Random\Randomizer::getFloat
type: function
doc:
<comment>Description:</comment>
  Get a uniformly selected float
  
  Returns a uniformly selected, equidistributed float from a requested interval.
  
  Due to the limited precision, not all real numbers can be exactly represented as a floating point
  number.
   If a number cannot be represented exactly, it is rounded to the nearest representable exact
  value.
   Furthermore, floats are not equally dense across the whole number line.
   Because floats use a binary exponent, the distance between two neighboring floats doubles at each
  power of two.
   In other words: There are the same number of representable floats between <return>1.0</return> and <return>2.0</return> as they are
  between <return>2.0</return> and <return>4.0</return>, <return>4.0</return> and <return>8.0</return>, <return>8.0</return> and <return>16.0</return>, and so on.
  
  Randomly sampling an arbitrary number within the requested interval, for example by dividing two
  integers, might result in a biased distribution for this reason.
   The necessary rounding will cause some floats to be returned more often than others, especially
  around powers of two when the density of floats changes.
  
  Random\Randomizer::getFloat implements an algorithm that will return a uniformly selected float
  from the largest possible set of exactly representable and equidistributed floats within the
  requested interval.
   The distance between the selectable floats (“step size”) matches the distance between the floats
  with the lowest density, i.e. the distance between floats at interval boundary with the larger
  absolute value.
   This means that not all representable floats within a given interval may be returned if the
  interval crosses one or more powers of two.
   Stepping will start from the interval boundary with the larger absolute value to ensure the steps
  align with the exactly representable floats.
  
  Closed interval boundaries will always be included in the set of selectable floats.
   Thus, if the size of the interval is not an exact multiple of the step size and the boundary with
  the smaller absolute value is a closed boundary, the distance between that boundary and its
  nearest selectable float will be smaller than the step size.
  
  Post-processing the returned floats is likely going to break the uniform equidistribution, because
  the intermediate floats within a mathematical operation are experiencing implicit rounding.
   The requested interval should match the desired interval as closely as possible and rounding
  should only be performed as an explicit operation right before displaying the selected number to a
  user.
  
  To give an example of how the algorithm works, consider a floating point representation that uses
  a 3-bit mantissa.
   This representation is capable of representing 8 different floating point values between
  consecutive powers of two.
   This means that between <return>1.0</return> and <return>2.0</return> all steps of size <return>0.125</return> are exactly representable and between
  <return>2.0</return> and <return>4.0</return> all steps of size <return>0.25</return> are exactly representable.
   In reality PHP’s floats use a 52-bit mantissa and can represent 252 different values between each
  power of two.
   This means that <return>1.0</return><return>1.125</return><return>1.25</return><return>1.375</return><return>1.5</return><return>1.625</return><return>1.75</return><return>1.875</return><return>2.0</return><return>2.25</return><return>2.5</return><return>2.75</return><return>3.0</return><return>3.25</return><return>3.5</return><return>3.75</return><return>4.0</return> are the exactly
  representable floats between <return>1.0</return> and <return>4.0</return>.
  
  Now consider that $randomizer-&gt;getFloat(1.625, 2.5, IntervalBoundary::ClosedOpen) is called,
  i.e. a random float starting at <return>1.625</return> until, but not including, <return>2.5</return> is requested.
   The algorithm first determines the step size at the boundary with the larger absolute value
  (<return>2.5</return>). The step size at that boundary is <return>0.25</return>.
  
  Note that the size of the requested interval is <return>0.875</return>, which is not an exact multiple of <return>0.25</return>.
   If the algorithm would start stepping at the lower bound <return>1.625</return>, it would encounter <return>2.125</return>, which
  is not exactly representable and would experience implicit rounding.
   Thus the algorithm starts stepping at the upper boundary <return>2.5</return>.
   The selectable values are: <return>2.25</return><return>2.0</return><return>1.75</return><return>1.625</return>
   <return>2.5</return> is not included, because the upper boundary of the requested interval is an open boundary.
   <return>1.625</return> is included, even though its distance to the nearest value <return>1.75</return> is <return>0.125</return>, which is smaller
  than the previously determined step size of <return>0.25</return>.
   The reason for that is that the requested interval is closed at the lower boundary (<return>1.625</return>) and
  closed boundaries are always included.
  
  Finally the algorithm uniformly selects one of the four selectable values at random and returns
  it.
  
  In the previous example, there are eight representable floating point numbers between each
  sub-interval delimited by a power of two.
   To give an example why dividing two integers would not work well to generate a random float,
  consider that there are 16 equidistributed floating point numbers in the right-open interval from
  <return>0.0</return> until, but not including, <return>1.0</return>. Half of them are the eight exactly representable values between
  <return>0.5</return> and <return>1.0</return>, the other half are the values between <return>0.0</return> and <return>1.0</return> that the step size of <return>0.0625</return>.
   These can easily be generated by dividing a random integer between <return>0</return> and <return>15</return> by <return>16</return> to obtain one
  of:
   <return>0.0</return><return>0.0625</return><return>0.125</return><return>0.1875</return><return>0.25</return><return>0.3125</return><return>0.375</return><return>0.4375</return><return>0.5</return><return>0.5625</return><return>0.625</return><return>0.6875</return><return>0.75</return><return>0.8125</return><return>0.875</return><return>0.9375</return>
  
  This random float could be scaled to right-open interval from <return>1.625</return> until, but not including, <return>2.75</return>
  by multiplying it with the size of the interval (<return>0.875</return>) and adding the minimum <return>1.625</return>. This
  so-called affine transformation would result in the values:
   <return>1.625</return> rounded to <return>1.625</return><return>1.679</return> rounded to <return>1.625</return><return>1.734</return> rounded to <return>1.75</return><return>1.789</return> rounded to <return>1.75</return><return>1.843</return>
  rounded to <return>1.875</return><return>1.898</return> rounded to <return>1.875</return><return>1.953</return> rounded to <return>2.0</return><return>2.007</return> rounded to <return>2.0</return><return>2.062</return> rounded to
  <return>2.0</return><return>2.117</return> rounded to <return>2.0</return><return>2.171</return> rounded to <return>2.25</return><return>2.226</return> rounded to <return>2.25</return><return>2.281</return> rounded to <return>2.25</return><return>2.335</return>
  rounded to <return>2.25</return><return>2.390</return> rounded to <return>2.5</return><return>2.445</return> rounded to <return>2.5</return>
   Note how the upper boundary of <return>2.5</return> would be returned, despite being an open boundary and thus
  being excluded.
   Also note how <return>2.0</return> and <return>2.25</return> are twice as likely to be returned compared to the other values.

<comment>Param:</comment>
  <info>float</info>                    <strong>$min</strong>       The lower bound of the interval.
  <info>float</info>                    <strong>$max</strong>       The upper bound of the interval.
  <info>Random\IntervalBoundary</info>  <strong>$boundary</strong>  Specifies whether the interval boundaries are possible return
                                      values.

<comment>Return:</comment>
  <info>float</info>  A uniformly selected, equidistributed float from the interval specified by <strong>$min</strong>, <strong>$max</strong>, and
         <strong>$boundary</strong>.
          Whether <strong>$min</strong> and <strong>$max</strong> are possible return values depends on the value of <strong>$boundary</strong>.

<comment>See Also:</comment>
   * Random\Randomizer::nextFloat
   * Random\Randomizer::getInt


id: Random\Randomizer::getInt
type: function
doc:
<comment>Description:</comment>
  Get a uniformly selected integer
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>int</info>  <strong>$min</strong>  The lowest value to be returned.
  <info>int</info>  <strong>$max</strong>  The highest value to be returned.

<comment>Return:</comment>
  <info>int</info>  A uniformly selected integer from the closed interval [<strong>$min</strong>, <strong>$max</strong>]. Both <strong>$min</strong> and <strong>$max</strong> are
       possible return values.

<comment>See Also:</comment>
   * <strong>random_int()</strong>
   * Random\Randomizer::getFloat


id: Random\Randomizer::nextFloat
type: function
doc:
<comment>Description:</comment>
  Get a float from the right-open interval [0.0, 1.0)
  
  Returns a uniformly selected, equidistributed float from the right-open interval from <return>0.0</return> until,
  but not including, <return>1.0</return>.
  
  The chance for returned float to be within a given right-open sub-interval is proportial to the
  size of the sub-interval.
   This means that the chance for a float to be less than <return>0.5</return> is 50 %, which is equal to the chance
  for a float to be at least <return>0.5</return>.
   Likewise the chance for a float to be within the right-open interval from <return>0.2</return> until, but not
  including, <return>0.25</return> is exactly 5 %.
  
  This property makes it easy to leverage Random\Randomizer::nextFloat to generate a random boolean
  with a given chance by checking if the returned float is less than a given chance.
  
  The domain of the returnable floats of Random\Randomizer::nextFloat is identical to that of
  Randomizer::getFloat(0.0, 1.0, IntervalBoundary::ClosedOpen).
  
  The internal implementation of Random\Randomizer::nextFloat is more efficient.
  
  Scaling the return value to a different interval using multiplication or addition (a so-called
  affine transformation) might result in a bias in the resulting value as floats are not equally
  dense across the number line. As not all values can be exactly represented by a float, the result
  of the affine transformation might also result in values outside of the requested interval due to
  implicit rounding.
   An in-depth explanation of the problems with the affine transformation is given in the
  documentation for Random\Randomizer::getFloat.
  
  Use Random\Randomizer::getFloat to generate a random float within an arbitrary interval. Use
  Random\Randomizer::getInt to generate a random integer within an arbitrary interval.

<comment>Return:</comment>
  <info>float</info>  A uniformly selected, equidistributed float from the right-open
         (<return>IntervalBoundary::ClosedOpen</return>) interval [0.0, 1.0).
          <return>0.0</return> is a possible return value, <return>1.0</return> is not.

<comment>See Also:</comment>
   * Random\Randomizer::getFloat


id: Random\Randomizer::nextInt
type: function
doc:
<comment>Description:</comment>
  Get a positive integer
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>int</info>  A positive integer between 0 and a maximum value depending on the number of bytes returned
       from Random\Engine::generate. The exact maximum can be calculated as 2$engine_bytes * 8 - 1 -
       1.


id: Random\Randomizer::pickArrayKeys
type: function
doc:
<comment>Description:</comment>
  Select random array keys
  
  Uniformly selects <strong>$num</strong> distinct array keys of the input <strong>$array</strong>.
  
  Each key of the input <strong>$array</strong> is equally likely to be returned.
  
  The selection of the array keys depends on the internal structure of the input <strong>$array</strong>. The
  returned array keys might be different for two equal input arrays and two <class>Random\Engine</class>s with
  identical state, depending on how the input arrays have been created.

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  The array whose array keys are selected.
  <info>int</info>    <strong>$num</strong>    The number of array keys to return; must be between <return>1</return> and the number of elements in
                 <strong>$array</strong>.

<comment>Return:</comment>
  <info>array</info>  An <info>array</info> containing <strong>$num</strong> distinct array keys of <strong>$array</strong>.
         
         The returned <info>array</info> will be a list (<strong>array_is_list()</strong>). It will be a subset of the <info>array</info>
         returned by <strong>array_keys()</strong>.

<comment>See Also:</comment>
   * <strong>array_keys()</strong>


id: Random\Randomizer::shuffleArray
type: function
doc:
<comment>Description:</comment>
  Get a permutation of an array
  
  Returns a uniformly selected permutation of the input <strong>$array</strong>.
  
  Each possible permutation of the input <strong>$array</strong> is equally likely to be returned.

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  The <info>array</info> whose values are shuffled.
                 
                 The input <info>array</info> will not be modified.

<comment>Return:</comment>
  <info>array</info>  A permutation of the values of <strong>$array</strong>.
         
         Array keys of the input <strong>$array</strong> will not be preserved; the returned <info>array</info> will be a list
         (<strong>array_is_list()</strong>).


id: Random\Randomizer::shuffleBytes
type: function
doc:
<comment>Description:</comment>
  Get a byte-wise permutation of a string
  
  Returns a uniformly selected permutation of the input <strong>$bytes</strong>.
  
  Each possible permutation of the input <strong>$bytes</strong> is equally likely to be returned.

<comment>Param:</comment>
  <info>string</info>  <strong>$bytes</strong>  The <info>string</info> whose bytes are shuffled.
                  
                  The input <info>string</info> will not be modified.

<comment>Return:</comment>
  <info>string</info>  A permutation of the bytes of <strong>$bytes</strong>.


id: RarArchive
type: class
doc:
<comment>Description:</comment>
  This class represents a RAR archive, which may be formed by several volumes (parts) and which
  contains a number of RAR entries (i.e., files, directories and other special objects such as
  symbolic links).
  
  Objects of this class can be traversed, yielding the entries stored in the respective RAR archive.
  Those entries can also be obtained through RarArchive::getEntry and RarArchive::getEntries.


id: RarArchive::__toString
type: function
doc:
<comment>Description:</comment>
  Get text representation
  
  Provides a string representation for this <info>RarArchive</info> object. It currently shows the full path name
  of the archive volume that was opened and whether the resource is valid or was already closed
  through a call to RarArchive::close.
  
  This method may be used only for debugging purposes, as there are no guarantees as to which
  information the result contains or how it is formatted.

<comment>Return:</comment>
  <info>string</info>  A textual representation of this <info>RarArchive</info> object. The content of this representation is
          unspecified.


id: RarArchive::close
type: function
doc:
<comment>Description:</comment>
  Close RAR archive and free all resources
  
  面向对象风格 (method):
  
  过程化风格:
  
  Close RAR archive and free all allocated resources.

<comment>Param:</comment>
  <info>RarArchive</info>  <strong>$rarfile</strong>  A <info>RarArchive</info> object, opened with <strong>rar_open()</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: RarArchive::getComment
type: function
doc:
<comment>Description:</comment>
  Get comment text from the RAR archive
  
  面向对象风格 (method):
  
  过程化风格:
  
  Get the (global) comment stored in the RAR archive. It may be up to 64 KiB long.
  
  This extension does not support comments at the entry level.

<comment>Param:</comment>
  <info>RarArchive</info>  <strong>$rarfile</strong>  A <info>RarArchive</info> object, opened with <strong>rar_open()</strong>.

<comment>Return:</comment>
  <info>string</info>  Returns the comment or <info>null</info> if there is none.
          
          RAR has currently no support for unicode comments. The encoding of the result of this
          function is not specified, but it will probably be Windows-1252.


id: RarArchive::getEntries
type: function
doc:
<comment>Description:</comment>
  Get full list of entries from the RAR archive
  
  面向对象风格 (method):
  
  过程化风格:
  
  Get entries list (files and directories) from the RAR archive.
  
  If the archive has entries with the same name, this method, together with <info>RarArchive</info> <return>foreach</return>
  iteration and array-like access with numeric indexes, are the only ones to access all the entries
  (i.e., RarArchive::getEntry and the <return>rar://</return> wrapper are insufficient).

<comment>Param:</comment>
  <info>RarArchive</info>  <strong>$rarfile</strong>  A <info>RarArchive</info> object, opened with <strong>rar_open()</strong>.

<comment>Return:</comment>
  <info>array|false</info>  <strong>rar_list()</strong> returns array of <info>RarEntry</info> objects 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * RarArchive::getEntry
   * <return>rar://</return> wrapper


id: RarArchive::getEntry
type: function
doc:
<comment>Description:</comment>
  Get entry object from the RAR archive
  
  面向对象风格 (method):
  
  过程化风格:
  
  Get entry object (file or directory) from the RAR archive.
  
  You can also get entry objects using RarArchive::getEntries.
  
  Note that a RAR archive can have multiple entries with the same name; this method will retrieve
  only the first.

<comment>Param:</comment>
  <info>RarArchive</info>  <strong>$rarfile</strong>    A <info>RarArchive</info> object, opened with <strong>rar_open()</strong>.
  <info>string</info>      <strong>$entryname</strong>  Path to the entry within the RAR archive.
                          
                          The path must be the same returned by RarEntry::getName.

<comment>Return:</comment>
  <info>RarEntry|false</info>  Returns the matching <info>RarEntry</info> object  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * RarArchive::getEntries
   * <return>rar://</return> wrapper


id: RarArchive::isBroken
type: function
doc:
<comment>Description:</comment>
  Test whether an archive is broken (incomplete)
  
  面向对象风格 (method):
  
  过程化风格:
  
  This function determines whether an archive is incomplete, i.e., if a volume is missing or a
  volume is truncated.

<comment>Param:</comment>
  <info>RarArchive</info>  <strong>$rarfile</strong>  A <info>RarArchive</info> object, opened with <strong>rar_open()</strong>.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the archive is broken, <info>false</info> otherwise. This function may also return <info>false</info>
        if the passed file has already been closed. The only way to tell the two cases apart is to
        enable exceptions with RarException::setUsingExceptions; however, this should be unnecessary
        as a program should not operate on closed files.

<comment>See Also:</comment>
   * RarArchive::setAllowBroken


id: RarArchive::isSolid
type: function
doc:
<comment>Description:</comment>
  Check whether the RAR archive is solid
  
  面向对象风格 (method):
  
  过程化风格:
  
  Check whether the RAR archive is solid. Individual file extraction is slower on solid archives.

<comment>Param:</comment>
  <info>RarArchive</info>  <strong>$rarfile</strong>  A <info>RarArchive</info> object, opened with <strong>rar_open()</strong>.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the archive is solid, <info>false</info> otherwise.


id: RarArchive::open
type: function
doc:
<comment>Description:</comment>
  Open RAR archive
  
  面向对象风格 (method):
  
  过程化风格:
  
  Open specified RAR archive and return <info>RarArchive</info> instance representing it.
  
  If opening a multi-volume archive, the path of the first volume should be passed as the first
  parameter. Otherwise, not all files will be shown. This is by design.

<comment>Param:</comment>
  <info>string</info>    <strong>$filename</strong>         Path to the Rar archive.
  <info>string</info>    <strong>$password</strong>         A plain password, if needed to decrypt the headers. It will also be
                              used by default if encrypted files are found. Note that the files may
                              have different passwords in respect to the headers and among them.
  <info>callable</info>  <strong>$volume_callback</strong>  A function that receives one parameter – the path of the volume that
                              was not found – and returns a string with the correct path for such
                              volume or <info>null</info> if such volume does not exist or is not known. The
                              programmer should ensure the passed function doesn't cause loops as
                              this function is called repeatedly if the path returned in a previous
                              call did not correspond to the needed volume. Specifying this
                              parameter omits the notice that would otherwise be emitted whenever a
                              volume is not found; an implementation that only returns <info>null</info> can
                              therefore be used to merely omit such notices.

<comment>Return:</comment>
  <info>RarArchive|false</info>  Returns the requested <info>RarArchive</info> instance  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <return>rar://</return> wrapper


id: RarArchive::setAllowBroken
type: function
doc:
<comment>Description:</comment>
  Whether opening broken archives is allowed
  
  面向对象风格 (method):
  
  过程化风格:
  
  This method defines whether broken archives can be read or all the operations that attempt to
  extract the archive entries will fail. Broken archives are archives for which no error is detected
  when the file is opened but an error occurs when reading the entries.

<comment>Param:</comment>
  <info>RarArchive</info>  <strong>$rarfile</strong>       A <info>RarArchive</info> object, opened with <strong>rar_open()</strong>.
  <info>bool</info>        <strong>$allow_broken</strong>  Whether to allow reading broken files (<info>true</info>) or not (<info>false</info>).

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info>  或者在失败时返回 <info>false</info>. It will only fail if the file has already been closed.

<comment>See Also:</comment>
   * RarArchive::isBroken


id: RarEntry
type: class
doc:
<comment>Description:</comment>
  A RAR entry, representing a directory or a compressed file inside a RAR archive.


id: RarEntry::ATTRIBUTE_UNIX_BLOCK_DEV
type: constant
doc:
<comment>Description:</comment>
  Unix block devices will have attributes whose last four bits have this value. To be used with
  RarEntry::getAttr on entries whose host OS is UNIX and with the constant
  <info>RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET</info>.


id: RarEntry::ATTRIBUTE_UNIX_CHAR_DEV
type: constant
doc:
<comment>Description:</comment>
  Unix character devices will have attributes whose last four bits have this value. To be used with
  RarEntry::getAttr on entries whose host OS is UNIX and with the constant
  <info>RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET</info>.


id: RarEntry::ATTRIBUTE_UNIX_DIRECTORY
type: constant
doc:
<comment>Description:</comment>
  Unix directories will have attributes whose last four bits have this value. To be used with
  RarEntry::getAttr on entries whose host OS is UNIX and with the constant
  <info>RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET</info>. See also RarEntry::isDirectory, which also works with
  entries that were added in other operating systems.


id: RarEntry::ATTRIBUTE_UNIX_FIFO
type: constant
doc:
<comment>Description:</comment>
  Unix FIFOs will have attributes whose last four bits have this value. To be used with
  RarEntry::getAttr on entries whose host OS is UNIX and with the constant
  <info>RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET</info>.


id: RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET
type: constant
doc:
<comment>Description:</comment>
  Mask to isolate the last four bits (nibble) of UNIX attributes (_S_IFMT, the type of file mask).
  To be used with RarEntry::getAttr on entries whose host OS is UNIX and with the constants
  <info>RarEntry::ATTRIBUTE_UNIX_FIFO</info>, <info>RarEntry::ATTRIBUTE_UNIX_CHAR_DEV</info>,
  <info>RarEntry::ATTRIBUTE_UNIX_DIRECTORY</info>, <info>RarEntry::ATTRIBUTE_UNIX_BLOCK_DEV</info>,
  <info>RarEntry::ATTRIBUTE_UNIX_REGULAR_FILE</info>, <info>RarEntry::ATTRIBUTE_UNIX_SYM_LINK</info> and
  <info>RarEntry::ATTRIBUTE_UNIX_SOCKET</info>.


id: RarEntry::ATTRIBUTE_UNIX_GROUP_EXECUTE
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a UNIX entry that is group executable. To be used with RarEntry::getAttr on
  entries whose host OS is UNIX.


id: RarEntry::ATTRIBUTE_UNIX_GROUP_READ
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a UNIX entry that is group readable. To be used with RarEntry::getAttr on
  entries whose host OS is UNIX.


id: RarEntry::ATTRIBUTE_UNIX_GROUP_WRITE
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a UNIX entry that is group writable. To be used with RarEntry::getAttr on
  entries whose host OS is UNIX.


id: RarEntry::ATTRIBUTE_UNIX_OWNER_EXECUTE
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a UNIX entry that is owner executable. To be used with RarEntry::getAttr on
  entries whose host OS is UNIX.


id: RarEntry::ATTRIBUTE_UNIX_OWNER_READ
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a UNIX entry that is owner readable. To be used with RarEntry::getAttr on
  entries whose host OS is UNIX.


id: RarEntry::ATTRIBUTE_UNIX_OWNER_WRITE
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a UNIX entry that is owner writable. To be used with RarEntry::getAttr on
  entries whose host OS is UNIX.


id: RarEntry::ATTRIBUTE_UNIX_REGULAR_FILE
type: constant
doc:
<comment>Description:</comment>
  Unix regular files (not directories) will have attributes whose last four bits have this value. To
  be used with RarEntry::getAttr on entries whose host OS is UNIX and with the constant
  <info>RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET</info>. See also RarEntry::isDirectory, which also works with
  entries that were added in other operating systems.


id: RarEntry::ATTRIBUTE_UNIX_SETGID
type: constant
doc:
<comment>Description:</comment>
  Bit that represents the UNIX setgid attribute. To be used with RarEntry::getAttr on entries whose
  host OS is UNIX.


id: RarEntry::ATTRIBUTE_UNIX_SETUID
type: constant
doc:
<comment>Description:</comment>
  Bit that represents the UNIX setuid attribute. To be used with RarEntry::getAttr on entries whose
  host OS is UNIX.


id: RarEntry::ATTRIBUTE_UNIX_SOCKET
type: constant
doc:
<comment>Description:</comment>
  Unix sockets will have attributes whose last four bits have this value. To be used with
  RarEntry::getAttr on entries whose host OS is UNIX and with the constant
  <info>RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET</info>.


id: RarEntry::ATTRIBUTE_UNIX_STICKY
type: constant
doc:
<comment>Description:</comment>
  Bit that represents the UNIX sticky bit. To be used with RarEntry::getAttr on entries whose host
  OS is UNIX.


id: RarEntry::ATTRIBUTE_UNIX_SYM_LINK
type: constant
doc:
<comment>Description:</comment>
  Unix symbolic links will have attributes whose last four bits have this value. To be used with
  RarEntry::getAttr on entries whose host OS is UNIX and with the constant
  <info>RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET</info>.


id: RarEntry::ATTRIBUTE_UNIX_WORLD_EXECUTE
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a UNIX entry that is world executable. To be used with RarEntry::getAttr on
  entries whose host OS is UNIX.


id: RarEntry::ATTRIBUTE_UNIX_WORLD_READ
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a UNIX entry that is world readable. To be used with RarEntry::getAttr on
  entries whose host OS is UNIX.


id: RarEntry::ATTRIBUTE_UNIX_WORLD_WRITE
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a UNIX entry that is world writable. To be used with RarEntry::getAttr on
  entries whose host OS is UNIX.


id: RarEntry::ATTRIBUTE_WIN_ARCHIVE
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with an archive attribute. To be used with RarEntry::getAttr
  on entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_COMPRESSED
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a compressed attribute (NTFS only). To be used with
  RarEntry::getAttr on entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_DEVICE
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a device attribute. To be used with RarEntry::getAttr on
  entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_DIRECTORY
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a directory attribute (entry is a directory). To be used
  with RarEntry::getAttr on entries whose host OS is Microsoft Windows. See also
  RarEntry::isDirectory, which also works with entries that were not added in WinRAR.


id: RarEntry::ATTRIBUTE_WIN_ENCRYPTED
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with an encrypted attribute (NTFS only). To be used with
  RarEntry::getAttr on entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_HIDDEN
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a hidden attribute. To be used with RarEntry::getAttr on
  entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_NORMAL
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a normal file attribute (entry is NOT a directory). To be
  used with RarEntry::getAttr on entries whose host OS is Microsoft Windows. See also
  RarEntry::isDirectory, which also works with entries that were not added in WinRAR.


id: RarEntry::ATTRIBUTE_WIN_NOT_CONTENT_INDEXED
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a not content indexed attribute (entry is to be indexed).
  To be used with RarEntry::getAttr on entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_OFFLINE
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with an offline attribute (entry is offline and not
  accessible). To be used with RarEntry::getAttr on entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_READONLY
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a read-only attribute. To be used with RarEntry::getAttr
  on entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_REPARSE_POINT
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a reparse point attribute (entry is an NTFS reparse
  point, e.g. a directory junction or a mount file system). To be used with RarEntry::getAttr on
  entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_SPARSE_FILE
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a sparse file attribute (file is an NTFS sparse file). To
  be used with RarEntry::getAttr on entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_SYSTEM
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a system attribute. To be used with RarEntry::getAttr on
  entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_TEMPORARY
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a temporary attribute. To be used with RarEntry::getAttr
  on entries whose host OS is Microsoft Windows.


id: RarEntry::ATTRIBUTE_WIN_VIRTUAL
type: constant
doc:
<comment>Description:</comment>
  Bit that represents a Windows entry with a virtual attribute. To be used with RarEntry::getAttr on
  entries whose host OS is Microsoft Windows.


id: RarEntry::HOST_BEOS
type: constant
doc:
<comment>Description:</comment>
  If the return value of RarEntry::getHostOs equals this constant, BeOS was used to add this entry.
  Intended to replace <info>RAR_HOST_BEOS</info>.


id: RarEntry::HOST_MACOS
type: constant
doc:
<comment>Description:</comment>
  If the return value of RarEntry::getHostOs equals this constant, Mac OS was used to add this
  entry.


id: RarEntry::HOST_MSDOS
type: constant
doc:
<comment>Description:</comment>
  If the return value of RarEntry::getHostOs equals this constant, MS-DOS was used to add this
  entry. Use instead of <info>RAR_HOST_MSDOS</info>.


id: RarEntry::HOST_OS2
type: constant
doc:
<comment>Description:</comment>
  If the return value of RarEntry::getHostOs equals this constant, OS/2 was used to add this entry.
  Intended to replace <info>RAR_HOST_OS2</info>.


id: RarEntry::HOST_UNIX
type: constant
doc:
<comment>Description:</comment>
  If the return value of RarEntry::getHostOs equals this constant, an unspecified UNIX OS was used
  to add this entry. Intended to replace <info>RAR_HOST_UNIX</info>.


id: RarEntry::HOST_WIN32
type: constant
doc:
<comment>Description:</comment>
  If the return value of RarEntry::getHostOs equals this constant, Microsoft Windows was used to add
  this entry. Intended to replace <info>RAR_HOST_WIN32</info>.


id: RarEntry::__toString
type: function
doc:
<comment>Description:</comment>
  Get text representation of entry
  
  RarEntry::__toString returns a textual representation for this entry. It includes whether the
  entry is a file or a directory (symbolic links and other special objects will be treated as
  files), the UTF-8 name of the entry and its CRC. The form and content of this representation may
  be changed in the future, so they cannot be relied upon.

<comment>Return:</comment>
  <info>string</info>  A textual representation for the entry.


id: RarEntry::extract
type: function
doc:
<comment>Description:</comment>
  Extract entry from the archive
  
  RarEntry::extract extracts the entry's data. It will create new file in the specified <strong>$dir</strong> with
  the name identical to the entry's name, unless the second argument is specified. See below for
  more information.

<comment>Param:</comment>
  <info>string</info>  <strong>$dir</strong>            Path to the directory where files should be extracted. This parameter is
                          considered if and only if <strong>$filepath</strong> is not. If both parameters are empty
                          an extraction to the current directory will be attempted.
  <info>string</info>  <strong>$filepath</strong>       Path (relative or absolute) containing the directory and filename of the
                          extracted file. This parameter overrides both the parameter <strong>$dir</strong> and the
                          original file name.
  <info>string</info>  <strong>$password</strong>       The password used to encrypt this entry. If the entry is not encrypted,
                          this value will not be used and can be omitted. If this parameter is
                          omitted and the entry is encrypted, the password given to <strong>rar_open()</strong>, if
                          any, will be used. If a wrong password is given, either explicitly or
                          implicitly via <strong>rar_open()</strong>, CRC checking will fail and this method will
                          fail and return <info>false</info>. If no password is given and one is required, this
                          method will fail and return <info>false</info>. You can check whether an entry is
                          encrypted with RarEntry::isEncrypted.
  <info>bool</info>    <strong>$extended_data</strong>  If <info>true</info>, extended information such as NTFS ACLs and Unix owner information
                          will be set in the extract files, as long as it's present in the archive.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * RarEntry::getStream
   * <return>rar://</return> wrapper


id: RarEntry::getAttr
type: function
doc:
<comment>Description:</comment>
  Get attributes of the entry
  
  Returns the OS-dependent attributes of the archive entry.

<comment>Return:</comment>
  <info>int</info>  Returns the attributes or <info>false</info> on error.

<comment>See Also:</comment>
   * RarEntry::getHostOs
   * The constants in <class>RarEntry</class>


id: RarEntry::getCrc
type: function
doc:
<comment>Description:</comment>
  Get CRC of the entry
  
  Returns an hexadecimal string representation of the CRC of the archive entry.

<comment>Return:</comment>
  <info>string</info>  Returns the CRC of the archive entry or <info>false</info> on error.


id: RarEntry::getFileTime
type: function
doc:
<comment>Description:</comment>
  Get entry last modification time
  
  Gets entry last modification time.

<comment>Return:</comment>
  <info>string</info>  Returns entry last modification time as string in format  <return>YYYY-MM-DD HH:II:SS</return>, or <info>false</info> on
          error.


id: RarEntry::getHostOs
type: function
doc:
<comment>Description:</comment>
  Get entry host OS
  
  Returns the code of the host OS of the archive entry.

<comment>Return:</comment>
  <info>int</info>  Returns the code of the host OS, or <info>false</info> on error.

<comment>See Also:</comment>
   * RarEntry::extract


id: RarEntry::getMethod
type: function
doc:
<comment>Description:</comment>
  Get pack method of the entry
  
  RarEntry::getMethod returns number of the method used when adding current archive entry.

<comment>Return:</comment>
  <info>int</info>  Returns the method number or <info>false</info> on error.


id: RarEntry::getName
type: function
doc:
<comment>Description:</comment>
  Get name of the entry
  
  Returns the name (with path) of the archive entry.

<comment>Return:</comment>
  <info>string</info>  Returns the entry name as a string, or <info>false</info> on error.


id: RarEntry::getPackedSize
type: function
doc:
<comment>Description:</comment>
  Get packed size of the entry
  
  Get packed size of the archive entry.
  
  Note that on platforms with 32-bit longs (that includes Windows x64), the maximum size returned is
  capped at 2 GiB. Check the constant <info>PHP_INT_MAX</info>.

<comment>Return:</comment>
  <info>int</info>  Returns the packed size, or <info>false</info> on error.


id: RarEntry::getStream
type: function
doc:
<comment>Description:</comment>
  Get file handler for entry
  
  Returns a file handler that supports read operations. This handler provides on-the-fly
  decompression for this entry.
  
  The handler is not invalidated by calling <strong>rar_close()</strong>.
  
  The resulting stream has no integrity verification. In particular, file corruption and decryption
  with a wrong a key will not be detected. It is the programmer's responsability to use the entry's
  CRC to check for integrity, if he so wishes.

<comment>Param:</comment>
  <info>string</info>  <strong>$password</strong>  The password used to encrypt this entry. If the entry is not encrypted, this
                     value will not be used and can be omitted. If this parameter is omitted and the
                     entry is encrypted, the password given to <strong>rar_open()</strong>, if any, will be used. If
                     a wrong password is given, either explicitly or implicitly via <strong>rar_open()</strong>, this
                     method's resulting stream will produce wrong output. If no password is given
                     and one is required, this method will fail and return <info>false</info>. You can check
                     whether an entry is encrypted with RarEntry::isEncrypted.

<comment>Return:</comment>
  <info>resource|false</info>  The file handler  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * RarEntry::extract
   * <return>rar://</return> wrapper


id: RarEntry::getUnpackedSize
type: function
doc:
<comment>Description:</comment>
  Get unpacked size of the entry
  
  Get unpacked size of the archive entry.
  
  Note that on platforms with 32-bit longs (that includes Windows x64), the maximum size returned is
  capped at 2 GiB. Check the constant <info>PHP_INT_MAX</info>.

<comment>Return:</comment>
  <info>int</info>  Returns the unpacked size, or <info>false</info> on error.


id: RarEntry::getVersion
type: function
doc:
<comment>Description:</comment>
  Get minimum version of RAR program required to unpack the entry
  
  Returns minimum version of RAR program (e.g. WinRAR) required to unpack the entry. It is encoded
  as 10 * major version + minor version.

<comment>Return:</comment>
  <info>int</info>  Returns the version or <info>false</info> on error.


id: RarEntry::isDirectory
type: function
doc:
<comment>Description:</comment>
  Test whether an entry represents a directory
  
  Tests whether the current entry is a directory.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if this entry is a directory and <info>false</info> otherwise.


id: RarEntry::isEncrypted
type: function
doc:
<comment>Description:</comment>
  Test whether an entry is encrypted
  
  Tests whether the current entry contents are encrypted.
  
  The password used may differ between files inside the same RAR archive.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the current entry is encrypted and <info>false</info> otherwise.


id: RarException
type: class
doc:
<comment>Description:</comment>
  This class serves two purposes: it is the type of the exceptions thrown by the RAR extension
  functions and methods and it allows, through static methods to query and define the error
  behaviour of the extension, i.e., whether exceptions are thrown or only warnings are emitted.
  
  The following error codes are used:
  
  -1 - error outside UnRAR library
  
  11 - insufficient memory
  
  12 - bad data
  
  13 - bad archive
  
  14 - unknown format
  
  15 - file open error
  
  16 - file create error
  
  17 - file close error
  
  18 - read error
  
  19 - write error
  
  20 - buffer too small
  
  21 - unknown RAR error
  
  22 - password required but not given


id: RarException::isUsingExceptions
type: function
doc:
<comment>Description:</comment>
  Check whether error handling with exceptions is in use
  
  Checks whether the RAR functions will emit warnings and return error values or whether they will
  throw exceptions in most of the circumstances (does not include some programmatic errors such as
  passing the wrong type of arguments).

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if exceptions are being used, <info>false</info> otherwise.

<comment>See Also:</comment>
   * RarException::setUsingExceptions


id: RarException::setUsingExceptions
type: function
doc:
<comment>Description:</comment>
  Activate and deactivate error handling with exceptions
  
  If and only if the argument is <info>true</info>, then, instead of emitting warnings and returning a special
  value indicating error when the UnRAR library encounters an error, an exception of type
  <info>RarException</info> will be thrown.
  
  Exceptions will also be thrown for the following errors, which occur outside the library (their
  error code will be -1):
  
  attempting some operations on a closed <info>RarArchive</info> object or a <info>RarEntry</info> object relative to the
  first;
  
  attempting to get an entry that does not exist with RarArchive::getEntry.

<comment>Param:</comment>
  <info>bool</info>  <strong>$using_exceptions</strong>  Should be <info>true</info> to activate exception throwing, <info>false</info> to deactivate (the
                           default).

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * RarException::isUsingExceptions


id: RecursiveArrayIterator
type: class
doc:
<comment>Description:</comment>
  This iterator allows for unsetting and modifying values and keys while iterating over arrays and
  objects, in the same way as the <info>ArrayIterator</info>. Additionally, it is possible to iterate over the
  current iterator entry.


id: RecursiveArrayIterator::CHILD_ARRAYS_ONLY
type: constant
doc:
<comment>Description:</comment>
  Treat only arrays (not objects) as having children for recursive iteration.


id: RecursiveArrayIterator::getChildren
type: function
doc:
<comment>Description:</comment>
  Returns an iterator for the current entry if it is an array or an object
  
  Returns an iterator for the current iterator entry.

<comment>Return:</comment>
  <info>RecursiveArrayIterator|null</info>  An iterator for the current entry, if it is an <info>array</info> or <info>object</info>; or
                               <info>null</info> on failure.

<comment>See Also:</comment>
   * <strong>RecursiveArrayIterator::hasChildren()</strong>


id: RecursiveArrayIterator::hasChildren
type: function
doc:
<comment>Description:</comment>
  Returns whether current entry is an array or an object
  
  Returns whether current entry is an <info>array</info> or an <info>object</info> for which an iterator can be obtained via
  RecursiveArrayIterator::getChildren.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the current entry is an <info>array</info> or an <info>object</info>, otherwise <info>false</info> is returned.

<comment>See Also:</comment>
   * <strong>RecursiveArrayIterator::getChildren()</strong>


id: RecursiveCachingIterator::__construct
type: function
doc:
<comment>Description:</comment>
  Construct
  
  Constructs a new <class>RecursiveCachingIterator</class>, which consists of a passed in <strong>$iterator</strong>.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>Iterator</info>  <strong>$iterator</strong>  The iterator being used.
  <info>int</info>       <strong>$flags</strong>     The flags. Use <info>CALL_TOSTRING</info> to call  RecursiveCachingIterator::__toString
                       for every element (the default), and/or <info>CATCH_GET_CHILD</info> to catch exceptions
                       when trying to get children.

<comment>See Also:</comment>
   * CachingIterator::__construct


id: RecursiveCachingIterator::getChildren
type: function
doc:
<comment>Description:</comment>
  Return the inner iterator's children as a RecursiveCachingIterator
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>RecursiveCachingIterator|null</info>  The inner iterator's children, as a RecursiveCachingIterator; or
                                 <info>null</info> if there is no children.


id: RecursiveCachingIterator::hasChildren
type: function
doc:
<comment>Description:</comment>
  Check whether the current element of the inner iterator has children
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the inner iterator has children, otherwise <info>false</info>


id: RecursiveCallbackFilterIterator::__construct
type: function
doc:
<comment>Description:</comment>
  Create a RecursiveCallbackFilterIterator from a RecursiveIterator
  
  Creates a filtered iterator from a RecursiveIterator using the <strong>$callback</strong> to determine which  items
  are accepted or rejected.

<comment>Param:</comment>
  <info>RecursiveIterator</info>  <strong>$iterator</strong>  The recursive iterator to be filtered.
  <info>callable</info>           <strong>$callback</strong>  The callback, which should return <info>true</info> to accept the current item or
                                <info>false</info> otherwise. See Examples.
                                
                                May be any valid <info>callable</info> value.

<comment>See Also:</comment>
   * RecursiveCallbackFilterIterator Examples
   * RecursiveCallbackFilterIterator::getChildren
   * RecursiveCallbackFilteriterator::hasChildren


id: RecursiveCallbackFilterIterator::getChildren
type: function
doc:
<comment>Description:</comment>
  Return the inner iterator's children contained in a RecursiveCallbackFilterIterator
  
  Fetches the filtered children of the inner iterator.
  
  RecursiveCallbackFilterIterator::hasChildren should be used to determine if there are children to
  be fetched.

<comment>Return:</comment>
  <info>RecursiveCallbackFilterIterator</info>  Returns a <class>RecursiveCallbackFilterIterator</class> containing the
                                   children.

<comment>See Also:</comment>
   * RecursiveCallbackFilterIterator Examples
   * RecursiveCallbackFilterIterator::__construct
   * RecursiveCallbackFilteriterator::hasChildren


id: RecursiveCallbackFilterIterator::hasChildren
type: function
doc:
<comment>Description:</comment>
  Check whether the inner iterator's current element has children
  
  Returns <info>true</info> if the current element has children, <info>false</info> otherwise.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the current element has children, <info>false</info> otherwise.

<comment>See Also:</comment>
   * RecursiveCallbackFilterIterator Examples
   * RecursiveCallbackFilterIterator::__construct
   * RecursiveCallbackFilteriterator::getChildren


id: RecursiveDirectoryIterator
type: class
doc:
<comment>Description:</comment>
  The <class>RecursiveDirectoryIterator</class> provides an interface for iterating recursively over filesystem
  directories.


id: RecursiveDirectoryIterator::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a RecursiveDirectoryIterator
  
  Constructs a RecursiveDirectoryIterator for the provided <strong>$directory</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$directory</strong>  The path of the directory to be iterated over.
  <info>int</info>     <strong>$flags</strong>      Flags may be provided which will affect the behavior of some methods. A list
                      of the flags can found under FilesystemIterator predefined constants. They can
                      also be set later with FilesystemIterator::setFlags.

<comment>See Also:</comment>
   * FilesystemIterator::__construct
   * RecursiveIteratorIterator::__construct
   * FilesystemIterator predefined constants


id: RecursiveDirectoryIterator::getChildren
type: function
doc:
<comment>Description:</comment>
  Returns an iterator for the current entry if it is a directory
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>RecursiveDirectoryIterator</info>  The filename, file information, or $this depending on the set flags.
                              See the FilesystemIterator constants.


id: RecursiveDirectoryIterator::getSubPath
type: function
doc:
<comment>Description:</comment>
  Get sub path
  
  Returns the sub path relative to the directory given in the constructor.

<comment>Return:</comment>
  <info>string</info>  The sub path.

<comment>See Also:</comment>
   * RecursiveDirectoryIterator::getSubPathName
   * RecursiveDirectoryIterator::key


id: RecursiveDirectoryIterator::getSubPathname
type: function
doc:
<comment>Description:</comment>
  Get sub path and name
  
  Gets the sub path and filename.

<comment>Return:</comment>
  <info>string</info>  The sub path (sub directory) and filename.

<comment>See Also:</comment>
   * RecursiveDirectoryIterator::getSubPath
   * RecursiveDirectoryIterator::key


id: RecursiveDirectoryIterator::hasChildren
type: function
doc:
<comment>Description:</comment>
  Returns whether current entry is a directory and not '.' or '..'
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>bool</info>  <strong>$allowLinks</strong>  

<comment>Return:</comment>
  <info>bool</info>  Returns whether the current entry is a directory, but not '.' or '..'


id: RecursiveDirectoryIterator::key
type: function
doc:
<comment>Description:</comment>
  Return path and filename of current dir entry
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  The path and filename of the current dir entry.


id: RecursiveDirectoryIterator::next
type: function
doc:
<comment>Description:</comment>
  Move to next entry
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveDirectoryIterator::rewind
type: function
doc:
<comment>Description:</comment>
  Rewind dir back to the start
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveFilterIterator
type: class
doc:
<comment>Description:</comment>
  This abstract iterator filters out unwanted values for a <class>RecursiveIterator</class>. This class should be
  extended to implement custom filters.  The RecursiveFilterIterator::accept must be implemented in
  the subclass.


id: RecursiveFilterIterator::__construct
type: function
doc:
<comment>Description:</comment>
  Create a RecursiveFilterIterator from a RecursiveIterator
  
  Create a <class>RecursiveFilterIterator</class> from a <class>RecursiveIterator</class>.

<comment>Param:</comment>
  <info>RecursiveIterator</info>  <strong>$iterator</strong>  The <class>RecursiveIterator</class> to be filtered.

<comment>See Also:</comment>
   * RecursiveFilterIterator::getChildren
   * RecursiveFilterIterator::hasChildren
   * FilterIterator::accept


id: RecursiveFilterIterator::getChildren
type: function
doc:
<comment>Description:</comment>
  Return the inner iterator's children contained in a RecursiveFilterIterator
  
  Return the inner iterator's children contained in a <class>RecursiveFilterIterator</class>.

<comment>Return:</comment>
  <info>RecursiveFilterIterator|null</info>  Returns a <class>RecursiveFilterIterator</class> containing the inner iterator's
                                children.

<comment>See Also:</comment>
   * RecursiveFilterIterator::hasChildren
   * RecursiveIterator::getChildren


id: RecursiveFilterIterator::hasChildren
type: function
doc:
<comment>Description:</comment>
  Check whether the inner iterator's current element has children
  
  Check whether the inner iterator's current element has children.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the inner iterator has children, otherwise <info>false</info>

<comment>See Also:</comment>
   * RecursiveFilterIterator::getChildren
   * RecursiveIterator::hasChildren


id: RecursiveIterator
type: class
doc:
<comment>Description:</comment>
  Classes implementing <class>RecursiveIterator</class> can be used to iterate over iterators recursively.


id: RecursiveIterator::getChildren
type: function
doc:
<comment>Description:</comment>
  Returns an iterator for the current entry
  
  Returns an iterator for the current iterator entry.

<comment>Return:</comment>
  <info>RecursiveIterator|null</info>  Returns an iterator for the current entry if it exists, or <info>null</info> otherwise.

<comment>See Also:</comment>
   * <strong>RecursiveIterator::hasChildren()</strong>


id: RecursiveIterator::hasChildren
type: function
doc:
<comment>Description:</comment>
  Returns if an iterator can be created for the current entry
  
  Returns if an iterator can be created for the current entry. RecursiveIterator::getChildren.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the current entry can be iterated over, otherwise returns <info>false</info>.

<comment>See Also:</comment>
   * <strong>RecursiveIterator::getChildren()</strong>


id: RecursiveIteratorIterator::__construct
type: function
doc:
<comment>Description:</comment>
  Construct a RecursiveIteratorIterator
  
  Creates a <class>RecursiveIteratorIterator</class> from a <class>RecursiveIterator</class>.

<comment>Param:</comment>
  <info>Traversable</info>  <strong>$iterator</strong>  The iterator being constructed from. Either a <class>RecursiveIterator</class> or
                          <class>IteratorAggregate</class>.
  <info>int</info>          <strong>$mode</strong>      Optional mode. Possible values are <info>RecursiveIteratorIterator::LEAVES_ONLY</info>
                          - The default. Lists only leaves in iteration.
                          <info>RecursiveIteratorIterator::SELF_FIRST</info> - Lists leaves and parents in
                          iteration with parents coming first.
                          <info>RecursiveIteratorIterator::CHILD_FIRST</info> - Lists leaves and parents in
                          iteration with leaves coming first.
  <info>int</info>          <strong>$flags</strong>     Optional flag. Possible values are
                          <info>RecursiveIteratorIterator::CATCH_GET_CHILD</info> which will then ignore
                          exceptions thrown in calls to RecursiveIteratorIterator::getChildren.


id: RecursiveIteratorIterator::beginChildren
type: function
doc:
<comment>Description:</comment>
  Begin children
  
  Is called after calling RecursiveIteratorIterator::getChildren, and its associated
  RecursiveIteratorIterator::rewind.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveIteratorIterator::beginIteration
type: function
doc:
<comment>Description:</comment>
  Begin Iteration
  
  Called when iteration begins (after the first RecursiveIteratorIterator::rewind call.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveIteratorIterator::callGetChildren
type: function
doc:
<comment>Description:</comment>
  Get children
  
  Get children of the current element.

<comment>Return:</comment>
  <info>RecursiveIterator|null</info>  A RecursiveIterator on success, or <info>null</info> on failure.


id: RecursiveIteratorIterator::callHasChildren
type: function
doc:
<comment>Description:</comment>
  Has children
  
  Called for each element to test whether it has children.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>bool</info>  Returns whether the element has children.


id: RecursiveIteratorIterator::current
type: function
doc:
<comment>Description:</comment>
  Access the current element value
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>mixed</info>  The current elements value.


id: RecursiveIteratorIterator::endChildren
type: function
doc:
<comment>Description:</comment>
  End children
  
  Called when end recursing one level.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveIteratorIterator::endIteration
type: function
doc:
<comment>Description:</comment>
  End Iteration
  
  Called when the iteration ends (when RecursiveIteratorIterator::valid first returns <info>false</info>.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveIteratorIterator::getDepth
type: function
doc:
<comment>Description:</comment>
  Get the current depth of the recursive iteration
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>int</info>  The current depth of the recursive iteration.


id: RecursiveIteratorIterator::getInnerIterator
type: function
doc:
<comment>Description:</comment>
  Get inner iterator
  
  Gets the current active sub iterator.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>RecursiveIterator</info>  The current active sub iterator.


id: RecursiveIteratorIterator::getMaxDepth
type: function
doc:
<comment>Description:</comment>
  Get max depth
  
  Gets the maximum allowable depth.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>int|false</info>  The maximum accepted depth, or <info>false</info> if any depth is allowed.

<comment>See Also:</comment>
   * RecursiveIteratorIterator::setMaxDepth


id: RecursiveIteratorIterator::getSubIterator
type: function
doc:
<comment>Description:</comment>
  The current active sub iterator
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>int|null</info>  <strong>$level</strong>  

<comment>Return:</comment>
  <info>RecursiveIterator|null</info>  The current active sub iterator on success; <info>null</info> on failure.


id: RecursiveIteratorIterator::key
type: function
doc:
<comment>Description:</comment>
  Access the current key
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>mixed</info>  The current key.


id: RecursiveIteratorIterator::next
type: function
doc:
<comment>Description:</comment>
  Move forward to the next element
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveIteratorIterator::nextElement
type: function
doc:
<comment>Description:</comment>
  Next element
  
  Called when the next element is available.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveIteratorIterator::rewind
type: function
doc:
<comment>Description:</comment>
  Rewind the iterator to the first element of the top level inner iterator
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveIteratorIterator::setMaxDepth
type: function
doc:
<comment>Description:</comment>
  Set max depth
  
  Set the maximum allowed depth.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>int</info>  <strong>$maxDepth</strong>  The maximum allowed depth. <return>-1</return> is used for any depth.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveIteratorIterator::valid
type: function
doc:
<comment>Description:</comment>
  Check whether the current position is valid
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the current position is valid, otherwise <info>false</info>


id: RecursiveRegexIterator
type: class
doc:
<comment>Description:</comment>
  This recursive iterator can filter another recursive iterator via a regular expression.


id: RecursiveRegexIterator::__construct
type: function
doc:
<comment>Description:</comment>
  Creates a new RecursiveRegexIterator
  
  Creates a new regular expression iterator.

<comment>Param:</comment>
  <info>RecursiveIterator</info>  <strong>$iterator</strong>   The recursive iterator to apply this regex filter to.
  <info>string</info>             <strong>$pattern</strong>    The regular expression to match.
  <info>int</info>                <strong>$mode</strong>       Operation mode, see RegexIterator::setMode for a list of modes.
  <info>int</info>                <strong>$flags</strong>      Special flags, see RegexIterator::setFlags for a list of available
                                 flags.
  <info>int</info>                <strong>$pregFlags</strong>  The regular expression flags. These flags depend on the operation
                                 mode parameter:
                                 
                                 <class>RegexIterator</class> preg_flagsoperation modeavailable
                                 flagsRecursiveRegexIterator::ALL_MATCHES See <strong>preg_match_all()</strong>.
                                 RecursiveRegexIterator::GET_MATCH See <strong>preg_match()</strong>.
                                 RecursiveRegexIterator::MATCH See <strong>preg_match()</strong>.
                                 RecursiveRegexIterator::REPLACE none. RecursiveRegexIterator::SPLIT
                                 See <strong>preg_split()</strong>.

<comment>See Also:</comment>
   * <strong>preg_match()</strong>
   * <strong>preg_match_all()</strong>
   * <strong>preg_replace()</strong>
   * <strong>preg_split()</strong>


id: RecursiveRegexIterator::getChildren
type: function
doc:
<comment>Description:</comment>
  Returns an iterator for the current entry
  
  Returns an iterator for the current iterator entry.

<comment>Return:</comment>
  <info>RecursiveRegexIterator</info>  An iterator for the current entry, if it can be iterated over by the inner
                          iterator.

<comment>See Also:</comment>
   * <strong>RecursiveRegexIterator::hasChildren()</strong>


id: RecursiveRegexIterator::hasChildren
type: function
doc:
<comment>Description:</comment>
  Returns whether an iterator can be obtained for the current entry
  
  Returns whether an iterator can be obtained for the current entry. This iterator can be obtained
  via RecursiveRegexIterator::getChildren.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if an iterator can be obtained for the current entry, otherwise returns <info>false</info>.

<comment>See Also:</comment>
   * <strong>RecursiveRegexIterator::getChildren()</strong>


id: RecursiveTreeIterator
type: class
doc:
<comment>Description:</comment>
  Allows iterating over a <class>RecursiveIterator</class> to generate an ASCII graphic tree.


id: RecursiveTreeIterator::__construct
type: function
doc:
<comment>Description:</comment>
  Construct a RecursiveTreeIterator
  
  Constructs a new <class>RecursiveTreeIterator</class> from the supplied recursive iterator.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>RecursiveIterator|IteratorAggregate</info>  <strong>$iterator</strong>          The <class>RecursiveIterator</class> or <class>IteratorAggregate</class>
                                                          to iterate over.
  <info>int</info>                                  <strong>$flags</strong>             Flags may be provided which will affect
                                                          the behavior of some methods.  A list of
                                                          the flags can found under
                                                          RecursiveTreeIterator predefined
                                                          constants.
  <info></info>                                     <strong>$caching_it_flags</strong>  Flags to affect the behavior of the
                                                          <class>RecursiveCachingIterator</class> used internally.
  <info>int</info>                                  <strong>$mode</strong>              Flags to affect the behavior of the
                                                          <class>RecursiveIteratorIterator</class> used internally.


id: RecursiveTreeIterator::beginChildren
type: function
doc:
<comment>Description:</comment>
  Begin children
  
  Called when recursing one level down.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveTreeIterator::beginIteration
type: function
doc:
<comment>Description:</comment>
  Begin iteration
  
  Called when iteration begins (after the first RecursiveTreeIterator::rewind call).
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>RecursiveIterator</info>  A <class>RecursiveIterator</class>.


id: RecursiveTreeIterator::callGetChildren
type: function
doc:
<comment>Description:</comment>
  Get children
  
  Gets children of the current element.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>RecursiveIterator</info>  A <class>RecursiveIterator</class>.


id: RecursiveTreeIterator::callHasChildren
type: function
doc:
<comment>Description:</comment>
  Has children
  
  Called for each element to test whether it has children.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if there are children, otherwise <info>false</info>


id: RecursiveTreeIterator::current
type: function
doc:
<comment>Description:</comment>
  Get current element
  
  Gets the current element prefixed and postfixed.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>mixed</info>  Returns the current element prefixed and postfixed.


id: RecursiveTreeIterator::endIteration
type: function
doc:
<comment>Description:</comment>
  End iteration
  
  Called when the iteration ends (when RecursiveTreeIterator::valid first returns <info>false</info>)
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveTreeIterator::getEntry
type: function
doc:
<comment>Description:</comment>
  Get current entry
  
  Gets the part of the tree built for the current element.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  Returns the part of the tree built for the current element.


id: RecursiveTreeIterator::getPostfix
type: function
doc:
<comment>Description:</comment>
  Get the postfix
  
  Gets the string to place after the current element.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  Returns the string to place after the current element.


id: RecursiveTreeIterator::getPrefix
type: function
doc:
<comment>Description:</comment>
  Get the prefix
  
  Gets the string to place in front of current element
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  Returns the string to place in front of current element


id: RecursiveTreeIterator::key
type: function
doc:
<comment>Description:</comment>
  Get the key of the current element
  
  Gets the current key prefixed and postfixed.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>mixed</info>  Returns the current key prefixed and postfixed.


id: RecursiveTreeIterator::next
type: function
doc:
<comment>Description:</comment>
  Move to next element
  
  Moves forward to the next element.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveTreeIterator::rewind
type: function
doc:
<comment>Description:</comment>
  Rewind iterator
  
  Rewinds the iterator to the first element of the top level inner iterator.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveTreeIterator::setPostfix
type: function
doc:
<comment>Description:</comment>
  Set postfix
  
  Sets postfix as used in RecursiveTreeIterator::getPostfix.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$postfix</strong>  

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveTreeIterator::setPrefixPart
type: function
doc:
<comment>Description:</comment>
  Set a part of the prefix
  
  Sets a part of the prefix used in the graphic tree.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>int</info>     <strong>$part</strong>   One of the RecursiveTreeIterator::PREFIX_* constants.
  <info>string</info>  <strong>$value</strong>  The value to assign to the part of the prefix specified in <strong>$part</strong>.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: RecursiveTreeIterator::valid
type: function
doc:
<comment>Description:</comment>
  Check validity
  
  Check whether the current position is valid.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the current position is valid, otherwise <info>false</info>


id: Reflection::export
type: function
doc:
<comment>Description:</comment>
  导出
  
  导出反射（reflection）。
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>Reflector</info>  <strong>$reflector</strong>  导出的反射。
  <info>bool</info>       <strong>$return</strong>     设为 <info>true</info> 时返回导出结果，设为 <info>false</info>（默认值）则忽略返回。

<comment>Return:</comment>
  <info>string</info>  如果参数 <strong>$return</strong> 
          设为 <info>true</info>，导出结果将作为 <info>string</info>
          返回，否则返回 <info>null</info>。

<comment>See Also:</comment>
   * Reflection::getModifierNames


id: Reflection::getModifierNames
type: function
doc:
<comment>Description:</comment>
  获取修饰符的名称
  
  获取修饰符的名称。

<comment>Param:</comment>
  <info>int</info>  <strong>$modifiers</strong>  根据标志位域获取修饰符。

<comment>Return:</comment>
  <info>array</info>  修饰符名称的一个数组。

<comment>See Also:</comment>
   * ReflectionClass::getModifiers
   * ReflectionClassConstant::getModifiers
   * ReflectionMethod::getModifiers
   * ReflectionProperty::getModifiers


id: ReflectionAttribute::getArguments
type: function
doc:
<comment>Description:</comment>
  获取传递给属性的参数
  
  获取传递给属性的参数。

<comment>Return:</comment>
  <info>array</info>  传递给属性的参数。


id: ReflectionAttribute::getName
type: function
doc:
<comment>Description:</comment>
  获取属性名称
  
  获取属性名称。

<comment>Return:</comment>
  <info>string</info>  属性的名称。


id: ReflectionAttribute::getTarget
type: function
doc:
<comment>Description:</comment>
  返回属性的目标位掩码
  
  获取属性的目标位掩码。
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>int</info>   获取属性的目标位掩码。


id: ReflectionAttribute::isRepeated
type: function
doc:
<comment>Description:</comment>
  返回该名称的属性是否已重复出现在代码元素上
  
  返回该名称的属性是否已重复出现在代码元素上。

<comment>Return:</comment>
  <info>bool</info>  当属性被重复使用时返回 <info>true</info>，否则返回 <info>false</info>。


id: ReflectionAttribute::newInstance
type: function
doc:
<comment>Description:</comment>
  实例化由 ReflectionAttribute 类和参数表示的属性类
  
  实例化由 ReflectionAttribute 类和参数表示的属性类。

<comment>Return:</comment>
  <info>object</info>  属性的新实例。


id: ReflectionClass::__construct
type: function
doc:
<comment>Description:</comment>
  初始化 ReflectionClass 类
  
  初始化新的 <class>ReflectionClass</class> 对象。

<comment>Param:</comment>
  <info>object|string</info>  <strong>$objectOrClass</strong>  既可以是包含类名的字符串（<info>string</info>）也可以是对象（<info>object</info>）。

<comment>See Also:</comment>
   * ReflectionObject::__construct
   * 构造函数


id: ReflectionClass::__toString
type: function
doc:
<comment>Description:</comment>
  返回 ReflectionClass 对象字符串的表示形式
  
  返回 ReflectionClass 对象字符串的表示形式。

<comment>Return:</comment>
  <info>string</info>  ReflectionClass 实例的字符串表示形式。

<comment>See Also:</comment>
   * ReflectionClass::export
   * __toString()


id: ReflectionClass::export
type: function
doc:
<comment>Description:</comment>
  导出类
  
  导出反射后的类。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$argument</strong>  导出的反射。
  <info>bool</info>   <strong>$return</strong>    设为 <info>true</info> 时返回导出结果，设为 <info>false</info>（默认值）则忽略返回。

<comment>Return:</comment>
  <info>string</info>  如果参数 <strong>$return</strong> 
          设为 <info>true</info>，导出结果将作为 <info>string</info>
          返回，否则返回 <info>null</info>。

<comment>See Also:</comment>
   * ReflectionClass::getName
   * ReflectionClass::__toString


id: ReflectionClass::getAttributes
type: function
doc:
<comment>Description:</comment>
  获取所有属性
  
  返回类中声明的所有属性，类型是由 <info>ReflectionAttribute</info> 组成的 array。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$name</strong>   过滤结果，匹配此类名，仅包含 <class>ReflectionAttribute</class> 实例的属性。
  <info>int</info>          <strong>$flags</strong>  如果提供了 <strong>$name</strong>，则用于确定如何过滤结果的 flag。
                       
                       默认值为 <return>0</return>，这将导致返回的结果只属于类 <strong>$name</strong> 的属性。
                       
                       唯一可用的其他选项是使用 <info>ReflectionAttribute::IS_INSTANCEOF</info>，它将改为使用
                       <return>instanceof</return> 进行过滤。

<comment>Return:</comment>
  <info>array</info>  由 <class>ReflectionAttribute</class> 对象组成的属性数组。

<comment>See Also:</comment>
   * ReflectionClassConstant::getAttributes
   * ReflectionFunctionAbstract::getAttributes
   * ReflectionParameter::getAttributes
   * ReflectionProperty::getAttributes


id: ReflectionClass::getConstant
type: function
doc:
<comment>Description:</comment>
  获取已定义的常量
  
  获取已定义的常量。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  要获取的类常量的名称。

<comment>Return:</comment>
  <info>mixed</info>  常量名称为 <strong>$name</strong> 的值。 如果在类中没有找到该常量，则返回 <info>false</info> 。

<comment>See Also:</comment>
   * ReflectionClass::getConstants


id: ReflectionClass::getConstants
type: function
doc:
<comment>Description:</comment>
  获取常量
  
  从类中获取所有已定义的常量，而不管它们的可见性如何。

<comment>Param:</comment>
  <info>int|null</info>  <strong>$filter</strong>  可选过滤器，传入过滤所需的可见性常量。可用 ReflectionClassConstant 常量 进行配
                     置，默认为所有可见性常量。

<comment>Return:</comment>
  <info>array</info>  常量的<info>数组</info>，常量名是数组的键，常量的值是数组的值。

<comment>See Also:</comment>
   * ReflectionClass::getConstant


id: ReflectionClass::getConstructor
type: function
doc:
<comment>Description:</comment>
  获取类的构造函数
  
  获取已反射的类的构造函数。

<comment>Return:</comment>
  <info>ReflectionMethod|null</info>  一个 <class>ReflectionMethod</class> 对象，反射了类的构造函数，或者当类不存在构造函数时返
                         回 <info>null</info>。

<comment>See Also:</comment>
   * ReflectionClass::getName


id: ReflectionClass::getDefaultProperties
type: function
doc:
<comment>Description:</comment>
  获取默认属性
  
  获取类的默认属性（包括了继承的属性）。
  
  当在内部类中使用时，此方法仅用于静态属性，当在用户定义类中使用此方法时，无法追踪静态类属性的默认
  值。

<comment>Return:</comment>
  <info>array</info>  默认属性的 <info>array</info>，其键是属性的名称，其值是属性的默认值或者 <info>null</info>（如果没有默认值）。这个函数
         不区分静态和非静态属性，也不考虑可见性修饰符。

<comment>See Also:</comment>
   * ReflectionClass::getProperties
   * ReflectionClass::getStaticProperties
   * ReflectionClass::getProperty


id: ReflectionClass::getDocComment
type: function
doc:
<comment>Description:</comment>
  获取文档注释
  
  从类中获取文档注释。文档注释以 <return>/**</return> 开头，后跟空格。 如果类定义上方有多个文档注释，则采用最接近该类
  的注释。

<comment>Return:</comment>
  <info>string|false</info>  如果存在则返回文档注释，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::getName


id: ReflectionClass::getEndLine
type: function
doc:
<comment>Description:</comment>
  获取最后一行的行数
  
  从用户定义的类获取其最后一行的行数。

<comment>Return:</comment>
  <info>int|false</info>  返回用户定义的类最后一行的行数，如果未知则返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::getStartLine


id: ReflectionClass::getExtension
type: function
doc:
<comment>Description:</comment>
  根据已定义的类获取所在扩展的 ReflectionExtension 对象
  
  获取已定义类的扩展的 <class>ReflectionExtension</class> 对象。

<comment>Return:</comment>
  <info>ReflectionExtension|null</info>  类所处的扩展的 <class>ReflectionExtension</class> 对象的表示，如果是用户定义的类则返回
                            <info>null</info>。

<comment>See Also:</comment>
   * ReflectionClass::getExtensionName


id: ReflectionClass::getExtensionName
type: function
doc:
<comment>Description:</comment>
  获取定义的类所在的扩展的名称
  
  获取定义的类所在的扩展的名称。

<comment>Return:</comment>
  <info>string|false</info>  获取定义的类所在的扩展的名称，如果是用户定义的类，则返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::getExtension


id: ReflectionClass::getFileName
type: function
doc:
<comment>Description:</comment>
  获取定义类的文件名
  
  获取类被定义的文件的文件名。

<comment>Return:</comment>
  <info>string|false</info>  返回类所定义的文件名。如果这个类是在 PHP 核心或 PHP 扩展中定义的，则返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::getExtensionName


id: ReflectionClass::getInterfaceNames
type: function
doc:
<comment>Description:</comment>
  获取接口（interface）名称
  
  获取接口（interface）名称。

<comment>Return:</comment>
  <info>array</info>  一个数值数组，接口（interface）的名称是数组的值。

<comment>See Also:</comment>
   * ReflectionClass::getInterfaces


id: ReflectionClass::getInterfaces
type: function
doc:
<comment>Description:</comment>
  获取接口
  
  获取接口。

<comment>Return:</comment>
  <info>array</info>  接口的关联<info>数组</info>，数组键是接口（interface）的名称，数组的值是 <class>ReflectionClass</class> 对象。

<comment>See Also:</comment>
   * ReflectionClass::getInterfaceNames


id: ReflectionClass::getMethod
type: function
doc:
<comment>Description:</comment>
  获取类方法的 ReflectionMethod
  
  获取类方法的 <class>ReflectionMethod</class>。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  要反射的方法名称。

<comment>Return:</comment>
  <info>ReflectionMethod</info>  一个 <class>ReflectionMethod</class>。

<comment>See Also:</comment>
   * ReflectionClass::getMethods


id: ReflectionClass::getMethods
type: function
doc:
<comment>Description:</comment>
  获取方法的数组
  
  获取类的方法的数组。

<comment>Param:</comment>
  <info>int|null</info>  <strong>$filter</strong>  过滤结果为仅包含某些属性的方法。默认不过滤。
                     
                     <info>ReflectionMethod::IS_STATIC</info>、 <info>ReflectionMethod::IS_PUBLIC</info>、
                     <info>ReflectionMethod::IS_PROTECTED</info>、 <info>ReflectionMethod::IS_PRIVATE</info>、
                     <info>ReflectionMethod::IS_ABSTRACT</info>、 <info>ReflectionMethod::IS_FINAL</info> 的按位或（OR），就会
                     返回任意满足条件的属性。
                     
                     请注意：其他位操作，例如 <return>~</return> 无法按预期运行。这个示例也就是说，无法获取所有的非静
                     态方法。

<comment>Return:</comment>
  <info>array</info>  包含每个方法 <class>ReflectionMethod</class> 对象的<info>数组</info>。

<comment>See Also:</comment>
   * ReflectionClass::getMethod
   * <strong>get_class_methods()</strong>


id: ReflectionClass::getModifiers
type: function
doc:
<comment>Description:</comment>
  获取类的修饰符
  
  返回这个类访问修饰符的位字段。

<comment>Return:</comment>
  <info>int</info>  返回  修饰符常量 的位掩码。

<comment>See Also:</comment>
   * ReflectionClass::getProperties
   * Reflection::getModifierNames


id: ReflectionClass::getName
type: function
doc:
<comment>Description:</comment>
  获取类名
  
  获取类的名称。

<comment>Return:</comment>
  <info>string</info>  类名。

<comment>See Also:</comment>
   * ReflectionClass::getNamespaceName


id: ReflectionClass::getNamespaceName
type: function
doc:
<comment>Description:</comment>
  获取命名空间的名称
  
  获取命名空间（namespace）的名称。

<comment>Return:</comment>
  <info>string</info>  命名空间的名称。

<comment>See Also:</comment>
   * ReflectionClass::getParentClass
   * namespaces


id: ReflectionClass::getParentClass
type: function
doc:
<comment>Description:</comment>
  获取父类
  
  获取父级类。

<comment>Return:</comment>
  <info>ReflectionClass|false</info>  <class>ReflectionClass</class>，没有父类为 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::__construct


id: ReflectionClass::getProperties
type: function
doc:
<comment>Description:</comment>
  获取属性
  
  获取反射过的属性。

<comment>Param:</comment>
  <info>int|null</info>  <strong>$filter</strong>  可选的过滤器，过滤为所需类型的属性。它使用 ReflectionProperty 常量 来配置，默认
                     获取所有类型的属性。

<comment>Return:</comment>
  <info>array</info>  <class>ReflectionProperty</class> 对象的数组。

<comment>See Also:</comment>
   * ReflectionClass::getProperty
   * <class>ReflectionProperty</class>
   * ReflectionProperty 修饰符常量


id: ReflectionClass::getProperty
type: function
doc:
<comment>Description:</comment>
  获取类的一个属性的 ReflectionProperty
  
  获取类的一个属性的 <class>ReflectionProperty</class>。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  属性名。

<comment>Return:</comment>
  <info>ReflectionProperty</info>  一个 <class>ReflectionProperty</class>。

<comment>See Also:</comment>
   * ReflectionClass::getProperties


id: ReflectionClass::getReflectionConstant
type: function
doc:
<comment>Description:</comment>
  Gets a ReflectionClassConstant for a class's constant
  
  Gets a <class>ReflectionClassConstant</class> for a class's property.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  The class constant name.

<comment>Return:</comment>
  <info>ReflectionClassConstant|false</info>  A <class>ReflectionClassConstant</class>,  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * ReflectionClass::getReflectionConstants
   * <class>ReflectionClassConstant</class>


id: ReflectionClass::getReflectionConstants
type: function
doc:
<comment>Description:</comment>
  Gets class constants
  
  Retrieves reflected constants.

<comment>Param:</comment>
  <info>int|null</info>  <strong>$filter</strong>  The optional filter, for filtering desired constant visibilities. It's
                     configured using the ReflectionClassConstant constants, and defaults to all
                     constant visibilities.

<comment>Return:</comment>
  <info>array</info>  An array of <class>ReflectionClassConstant</class> objects.

<comment>See Also:</comment>
   * ReflectionClass::getReflectionConstant
   * <class>ReflectionClassConstant</class>


id: ReflectionClass::getShortName
type: function
doc:
<comment>Description:</comment>
  获取短名
  
  获取类的短名，就是不含命名空间（namespace）的那一部分。

<comment>Return:</comment>
  <info>string</info>  类的短名。

<comment>See Also:</comment>
   * ReflectionClass::getName


id: ReflectionClass::getStartLine
type: function
doc:
<comment>Description:</comment>
  获取起始行号
  
  获取起始的行号。

<comment>Return:</comment>
  <info>int|false</info>  起始的行号，类型是 <info>int</info>，如果未知，则为 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::getEndLine


id: ReflectionClass::getStaticProperties
type: function
doc:
<comment>Description:</comment>
  获取静态（static）属性
  
  获取静态（static）属性。

<comment>Return:</comment>
  <info>array</info>  静态（static）的属性，类型是 <info>array</info>。

<comment>See Also:</comment>
   * ReflectionClass::getStaticPropertyValue
   * ReflectionClass::setStaticPropertyValue


id: ReflectionClass::getStaticPropertyValue
type: function
doc:
<comment>Description:</comment>
  获取静态（static）属性的值
  
  获取这个类里静态（static）属性的值。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>       静态属性的名称，来返回它的值。
  <info>mixed</info>   <strong>$def_value</strong>  假如类没有定义 <strong>$name</strong> 的 static 属性，将返回一个默认值。 如果属性不存在，并且省
                      略了此参数，将会抛出 <class>ReflectionException</class> 。

<comment>Return:</comment>
  <info>mixed</info>  静态属性的值。

<comment>See Also:</comment>
   * ReflectionClass::getStaticProperties
   * ReflectionClass::setStaticPropertyValue


id: ReflectionClass::getTraitAliases
type: function
doc:
<comment>Description:</comment>
  返回 trait 别名数组
  
  获取当前类中定义的 trait 方法别名数组。

<comment>Return:</comment>
  <info>array</info>  返回数组，新的方法名位于键中，原始名称（格式是 <return>"TraitName::original"</return>）位于数组的值中。


id: ReflectionClass::getTraitNames
type: function
doc:
<comment>Description:</comment>
  返回这个类所使用 traits 的名称的数组
  
  获取该类使用的 trait 名称。

<comment>Return:</comment>
  <info>array</info>  返回的数组的值包含了 trait 的名称。


id: ReflectionClass::getTraits
type: function
doc:
<comment>Description:</comment>
  返回这个类所使用的 traits 数组
  
  获取该类使用的 trait 数组。

<comment>Return:</comment>
  <info>array</info>  返回了数组，键是 trait 的名称，值是 trait 实例的 <class>ReflectionClass</class>。 出现错误的情况下返回
         <info>null</info>。


id: ReflectionClass::hasConstant
type: function
doc:
<comment>Description:</comment>
  检查常量是否已经定义
  
  检查类中是否已经定义了指定的常量。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  要被检查的常量名称。

<comment>Return:</comment>
  <info>bool</info>  如果已定义返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::hasMethod
   * ReflectionClass::hasProperty


id: ReflectionClass::hasMethod
type: function
doc:
<comment>Description:</comment>
  检查方法是否已定义
  
  检查一个类中指定的方法是否已定义。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  要检查的方法的名称。

<comment>Return:</comment>
  <info>bool</info>  如果有这个方法返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::hasConstant
   * ReflectionClass::hasProperty


id: ReflectionClass::hasProperty
type: function
doc:
<comment>Description:</comment>
  检查属性是否已定义
  
  检查指定的属性是否已定义。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  待检查的属性的名称。

<comment>Return:</comment>
  <info>bool</info>  如果有这个属性返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::hasConstant
   * ReflectionClass::hasMethod


id: ReflectionClass::implementsInterface
type: function
doc:
<comment>Description:</comment>
  实现接口
  
  检查其是否实现了接口（interface）。

<comment>Param:</comment>
  <info>ReflectionClass|string</info>  <strong>$interface</strong>  接口（interface）的名称。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::isInterface
   * ReflectionClass::isSubclassOf
   * <strong>interface_exists()</strong>
   * 对象接口


id: ReflectionClass::inNamespace
type: function
doc:
<comment>Description:</comment>
  检查是否位于命名空间中
  
  检查这个类是否定义于一个命名空间中里。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::getNamespaceName
   * PHP Namespaces


id: ReflectionClass::isAbstract
type: function
doc:
<comment>Description:</comment>
  检查类是否是抽象类（abstract）
  
  检查这个类是否是抽象类（abstract）。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::isInterface
   * 类的抽象


id: ReflectionClass::isAnonymous
type: function
doc:
<comment>Description:</comment>
  检查类是否是匿名类
  
  检查类是否是匿名类。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::isFinal


id: ReflectionClass::isCloneable
type: function
doc:
<comment>Description:</comment>
  返回了一个类是否可复制
  
  返回了这个类是否可复制。

<comment>Return:</comment>
  <info>bool</info>  如果这个类可以复制返回 <info>true</info>，否则返回 <info>false</info>。


id: ReflectionClass::isEnum
type: function
doc:
<comment>Description:</comment>
  Returns whether this is an enum
  
  Checks if a class is an enum.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if this is an enum, <info>false</info> otherwise.


id: ReflectionClass::isFinal
type: function
doc:
<comment>Description:</comment>
  检查类是否声明为 final
  
  检查类是否声明为 final。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::isAbstract
   * Final 关键字


id: ReflectionClass::isInstance
type: function
doc:
<comment>Description:</comment>
  检查类的实例
  
  检查对象是否为一个类的实例。

<comment>Param:</comment>
  <info>object</info>  <strong>$object</strong>  待比较的对象。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::isInterface
   * 类型运算符（instanceof）
   * 对象接口
   * <strong>is_a()</strong>


id: ReflectionClass::isInstantiable
type: function
doc:
<comment>Description:</comment>
  检查类是否可实例化
  
  检查这个类是否可实例化。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::isInstance


id: ReflectionClass::isInterface
type: function
doc:
<comment>Description:</comment>
  检查类是否是一个接口（interface）
  
  检查类是否是一个接口（interface）。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::isInstance


id: ReflectionClass::isInternal
type: function
doc:
<comment>Description:</comment>
  检查类是否由扩展或核心在内部定义
  
  检查类是否由扩展或核心在内部定义，与用户定义相反。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::isUserDefined


id: ReflectionClass::isIterable
type: function
doc:
<comment>Description:</comment>
  Check whether this class is iterable
  
  Check whether this class is iterable (i.e. can be used inside foreach).

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::__construct


id: ReflectionClass::isIterateable
type: function
doc:
<comment>Description:</comment>
  别名 ReflectionClass::isIterable
  
  别名 ReflectionClass::isIterable
  
  自 PHP 7.2.0 起，应该首选 RefectionClass::isIterable，而不是拼写错误的
  ReflectionClass::isIterateable。


id: ReflectionClass::isReadOnly
type: function
doc:
<comment>Description:</comment>
  Checks if class is readonly
  
  Checks if a class is readonly.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if a class is readonly, <info>false</info> otherwise.

<comment>See Also:</comment>
   * ReflectionClass::isAbstract
   * Readonly classes


id: ReflectionClass::isSubclassOf
type: function
doc:
<comment>Description:</comment>
  检查是否为子类
  
  检查类是否为指定类的子类，或者实现了指定的接口。

<comment>Param:</comment>
  <info>ReflectionClass|string</info>  <strong>$class</strong>  要检查的 <info>string</info> 形式的类名或者类的 <info>ReflectionClass</info> 对象。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::isInterface
   * ReflectionClass::implementsInterface
   * <strong>is_subclass_of()</strong>
   * <strong>get_parent_class()</strong>


id: ReflectionClass::isTrait
type: function
doc:
<comment>Description:</comment>
  返回了是否是 trait
  
  检查 <info>ReflectionClass</info> 是否指向 trait。

<comment>Return:</comment>
  <info>bool</info>  如果是 trait 返回 <info>true</info>，否则返回 <info>false</info>。


id: ReflectionClass::isUserDefined
type: function
doc:
<comment>Description:</comment>
  检查是否由用户定义的
  
  检查一个类是否由用户定义，和内置相对。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionClass::isInternal


id: ReflectionClass::newInstance
type: function
doc:
<comment>Description:</comment>
  从指定的参数创建新类实例
  
  创建类的新的实例。给出的参数将会传递到类的构造函数。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$args</strong>  接受可变数目的参数，用于传递到类的构造函数，和 <strong>call_user_func()</strong> 很相似。

<comment>Return:</comment>
  <info>object</info>  

<comment>See Also:</comment>
   * ReflectionClass::newInstanceArgs
   * ReflectionClass::newInstanceWithoutConstructor


id: ReflectionClass::newInstanceArgs
type: function
doc:
<comment>Description:</comment>
  从给出的参数创建一个新的类实例
  
  创建一个类的新实例，给出的参数将传递到类的构造函数。

<comment>Param:</comment>
  <info>array</info>  <strong>$args</strong>  这个参数以 <info>array</info> 形式传递到类的构造函数。

<comment>Return:</comment>
  <info>object|null</info>  返回类的新实例，失败时返回 <info>null</info>。

<comment>See Also:</comment>
   * ReflectionClass::newInstance
   * ReflectionClass::newInstanceWithoutConstructor


id: ReflectionClass::newInstanceWithoutConstructor
type: function
doc:
<comment>Description:</comment>
  创建新的类实例而不调用它的构造函数
  
  创建一个新的类的实例而不调用它的构造函数。

<comment>Return:</comment>
  <info>object</info>  

<comment>See Also:</comment>
   * ReflectionClass::newInstance
   * ReflectionClass::newInstanceArgs


id: ReflectionClass::setStaticPropertyValue
type: function
doc:
<comment>Description:</comment>
  设置静态属性的值
  
  设置静态属性的值。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>   属性的名称。
  <info>mixed</info>   <strong>$value</strong>  属性的值。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * ReflectionClass::getStaticPropertyValue


id: ReflectionClassConstant
type: class
doc:
<comment>Description:</comment>
  The <class>ReflectionClassConstant</class> class reports information about a class constant.


id: ReflectionClassConstant::IS_PRIVATE
type: constant
doc:
<comment>Description:</comment>
  Indicates private constants. Prior to PHP 7.4.0, the value was <return>1024</return>.


id: ReflectionClassConstant::IS_PROTECTED
type: constant
doc:
<comment>Description:</comment>
  Indicates protected constants. Prior to PHP 7.4.0, the value was <return>512</return>.


id: ReflectionClassConstant::IS_PUBLIC
type: constant
doc:
<comment>Description:</comment>
  Indicates public constants. Prior to PHP 7.4.0, the value was <return>256</return>.


id: ReflectionClassConstant::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a ReflectionClassConstant
  
  Constructs a new <class>ReflectionClassConstant</class> object.

<comment>Param:</comment>
  <info>object|string</info>  <strong>$class</strong>     Either a <info>string</info> containing the name of the class to reflect, or an
                            <info>object</info>.
  <info>string</info>         <strong>$constant</strong>  The name of the class constant.

<comment>See Also:</comment>
   * Constructors


id: ReflectionClassConstant::__toString
type: function
doc:
<comment>Description:</comment>
  Returns the string representation of the ReflectionClassConstant object
  
  Returns the string representation of the ReflectionClassConstant object.

<comment>Return:</comment>
  <info>string</info>  A string representation of this <class>ReflectionClassConstant</class> instance.

<comment>See Also:</comment>
   * ReflectionClassConstant::export
   * __toString()


id: ReflectionClassConstant::export
type: function
doc:
<comment>Description:</comment>
  Export
  
  Exports a reflection.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>mixed</info>   <strong>$class</strong>   导出的反射。
  <info>string</info>  <strong>$name</strong>    The class constant name.
  <info>bool</info>    <strong>$return</strong>  设为 <info>true</info> 时返回导出结果，设为 <info>false</info>（默认值）则忽略返回。

<comment>Return:</comment>
  <info>string</info>  

<comment>See Also:</comment>
   * ReflectionClassConstant::__toString


id: ReflectionClassConstant::getAttributes
type: function
doc:
<comment>Description:</comment>
  Gets Attributes
  
  Returns all attributes declared on this class constant as an array of <info>ReflectionAttribute</info>.

<comment>Param:</comment>
  <info>string|null</info>  <strong>$name</strong>   过滤结果，匹配此类名，仅包含 <class>ReflectionAttribute</class> 实例的属性。
  <info>int</info>          <strong>$flags</strong>  如果提供了 <strong>$name</strong>，则用于确定如何过滤结果的 flag。
                       
                       默认值为 <return>0</return>，这将导致返回的结果只属于类 <strong>$name</strong> 的属性。
                       
                       唯一可用的其他选项是使用 <info>ReflectionAttribute::IS_INSTANCEOF</info>，它将改为使用
                       <return>instanceof</return> 进行过滤。

<comment>Return:</comment>
  <info>array</info>  Array of attributes, as a <class>ReflectionAttribute</class> object.

<comment>See Also:</comment>
   * ReflectionClass::getAttributes
   * ReflectionFunctionAbstract::getAttributes
   * ReflectionParameter::getAttributes
   * ReflectionProperty::getAttributes


id: ReflectionClassConstant::getDeclaringClass
type: function
doc:
<comment>Description:</comment>
  Gets declaring class
  
  Gets the declaring class.

<comment>Return:</comment>
  <info>ReflectionClass</info>  A <class>ReflectionClass</class> object.


id: ReflectionClassConstant::getDocComment
type: function
doc:
<comment>Description:</comment>
  Gets doc comments
  
  Gets doc comments from a class constant.

<comment>Return:</comment>
  <info>string|false</info>  The doc comment if it exists, otherwise <info>false</info>


id: ReflectionClassConstant::getModifiers
type: function
doc:
<comment>Description:</comment>
  Gets the class constant modifiers
  
  Returns a bitfield of the access modifiers for this class constant.

<comment>Return:</comment>
  <info>int</info>  A numeric representation of the modifiers. The actual meaning of these modifiers are
       described under predefined constants.

<comment>See Also:</comment>
   * Reflection::getModifierNames


id: ReflectionClassConstant::getName
type: function
doc:
<comment>Description:</comment>
  Get name of the constant

<comment>Return:</comment>
  <info>string</info>  Returns the constant's name.


id: ReflectionClassConstant::getValue
type: function
doc:
<comment>Description:</comment>
  Gets value
  
  Gets the class constant's value.

<comment>Return:</comment>
  <info>mixed</info>  The value of the class constant.


id: ReflectionClassConstant::isEnumCase
type: function
doc:
<comment>Description:</comment>
  Checks if class constant is an Enum case
  
  Checks if the class constant is an Enum case.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the class constant is an Enum case; <info>false</info> otherwise.

<comment>See Also:</comment>
   * <class>ReflectionEnum</class>


id: ReflectionClassConstant::isFinal
type: function
doc:
<comment>Description:</comment>
  Checks if class constant is final
  
  Checks if the class constant is final.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the class constant is final, otherwise <info>false</info>

<comment>See Also:</comment>
   * ReflectionClassConstant::isPublic
   * ReflectionClassConstant::isPrivate
   * ReflectionClassConstant::isProtected


id: ReflectionClassConstant::isPrivate
type: function
doc:
<comment>Description:</comment>
  Checks if class constant is private
  
  Checks if the class constant is private.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the class constant is private, otherwise <info>false</info>

<comment>See Also:</comment>
   * ReflectionClassConstant::isFinal
   * ReflectionClassConstant::isPublic
   * ReflectionClassConstant::isProtected


id: ReflectionClassConstant::isProtected
type: function
doc:
<comment>Description:</comment>
  Checks if class constant is protected
  
  Checks if the class constant is protected.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the class constant is protected, otherwise <info>false</info>

<comment>See Also:</comment>
   * ReflectionClassConstant::isFinal
   * ReflectionClassConstant::isPublic
   * ReflectionClassConstant::isPrivate


id: ReflectionClassConstant::isPublic
type: function
doc:
<comment>Description:</comment>
  Checks if class constant is public
  
  Checks if the class constant is public.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the class constant is public, otherwise <info>false</info>

<comment>See Also:</comment>
   * ReflectionClassConstant::isFinal
   * ReflectionClassConstant::isPrivate
   * ReflectionClassConstant::isProtected


id: ReflectionEnum::__construct
type: function
doc:
<comment>Description:</comment>
  实例化 ReflectionEnum 对象

<comment>Param:</comment>
  <info>object|string</info>  <strong>$objectOrClass</strong>  枚举实例或名称。


id: ReflectionEnum::getBackingType
type: function
doc:
<comment>Description:</comment>
  获取枚举回退的类型
  
  如果一个枚举是回退枚举，该方法会根据枚举回退的类型， 返回 <class>ReflectionType</class> 的实例。 如果不是个回退枚
  举，会返回 <return>null</return>。

<comment>Return:</comment>
  <info>ReflectionNamedType|null</info>  <class>ReflectionNamedType</class> 的实例。 如果 Enum 没有回退的类型时，返回 <return>null</return>。

<comment>See Also:</comment>
   * 枚举
   * ReflectionEnum::isBacked


id: ReflectionEnum::getCase
type: function
doc:
<comment>Description:</comment>
  返回指定的枚举条目
  
  根据名称返回指定枚举条目的反射对象。 如果请求的条目未定义，将抛出 <class>ReflectionException</class>。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  要获取的条目名称。

<comment>Return:</comment>
  <info>ReflectionEnumUnitCase</info>  <class>ReflectionEnumUnitCase</class> 或 <class>ReflectionEnumBackedCase</class> 的实例，具体视情况而
                          定。

<comment>See Also:</comment>
   * 枚举
   * ReflectionEnum::getCases
   * ReflectionEnum::hasCase
   * ReflectionEnum::isBacked


id: ReflectionEnum::getCases
type: function
doc:
<comment>Description:</comment>
  返回枚举中的所有条目的清单
  
  每个枚举都能包括零或多个条目。该方法能获取所有定义的条目， 顺序为语法中的顺序（也就是源码中出现的
  顺序）。

<comment>Return:</comment>
  <info>array</info>  数组，包含了 Enum 的反射对象，包含每一个枚举条目。 对于 Unit Enum，它们都会是
         <class>ReflectionEnumUnitCase</class> 的实例。 对于回退枚举，它们都会是 <class>ReflectionEnumBackedCase</class> 的实例。

<comment>See Also:</comment>
   * 枚举
   * ReflectionEnum::getCase
   * ReflectionEnum::isBacked


id: ReflectionEnum::hasCase
type: function
doc:
<comment>Description:</comment>
  在枚举上检测条目
  
  检测在枚举是是否定义指定的条目。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  要检测的条目。

<comment>Return:</comment>
  <info>bool</info>  条目已定义时返回 <info>true</info>，没有时返回 <info>false</info>。

<comment>See Also:</comment>
   * 枚举
   * ReflectionEnum::getCase
   * ReflectionEnum::getCases


id: ReflectionEnum::isBacked
type: function
doc:
<comment>Description:</comment>
  检测 Enum 是否为回退（Backed）Enum
  
  回退 Enum 是具有本地 <info>string</info> 和 <info>int</info> 回退标量值。 并非所有枚举都是回退的。

<comment>Return:</comment>
  <info>bool</info>  如果枚举具有回退标量，返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * 枚举
   * ReflectionEnum::getBackingType


id: ReflectionEnumBackedCase
type: class
doc:
<comment>Description:</comment>
  <class>ReflectionEnumBackedCase</class>  类报告了一个回退枚举条目（Enum backed case）的信息，具有对应的标量值。


id: ReflectionEnumBackedCase::__construct
type: function
doc:
<comment>Description:</comment>
  Instantiates a ReflectionEnumBackedCase object

<comment>Param:</comment>
  <info>object|string</info>  <strong>$class</strong>     An enum instance or a name.
  <info>string</info>         <strong>$constant</strong>  An enum constant name.


id: ReflectionEnumBackedCase::getBackingValue
type: function
doc:
<comment>Description:</comment>
  获取枚举条目回退的标量值
  
  获取枚举条目回退的标量值。

<comment>Return:</comment>
  <info>int|string</info>  枚举条目对应的标量值。

<comment>See Also:</comment>
   * 枚举


id: ReflectionEnumUnitCase::__construct
type: function
doc:
<comment>Description:</comment>
  Instantiates a ReflectionEnumUnitCase object

<comment>Param:</comment>
  <info>object|string</info>  <strong>$class</strong>     An enum instance or a name.
  <info>string</info>         <strong>$constant</strong>  An enum constant name.


id: ReflectionEnumUnitCase::getEnum
type: function
doc:
<comment>Description:</comment>
  获取该枚举条目的反射
  
  获取该枚举条目的反射。

<comment>Return:</comment>
  <info>ReflectionEnum</info>  描述属于该枚举条目的 <class>ReflectionEnum</class> 实例。

<comment>See Also:</comment>
   * 枚举


id: ReflectionEnumUnitCase::getValue
type: function
doc:
<comment>Description:</comment>
  获取反射对象描述的枚举条目对象
  
  获取该反射对象描述的枚举条目对象。

<comment>Return:</comment>
  <info>UnitEnum</info>  反射对象描述的枚举条目对象。

<comment>See Also:</comment>
   * 枚举


id: ReflectionExtension::__clone
type: function
doc:
<comment>Description:</comment>
  克隆
  
  clone 方法阻止对象克隆。不允许克隆反射对象。

<comment>Return:</comment>
  <info>void</info>  没有返回值，如果被调用将产生 fatal 错误。

<comment>See Also:</comment>
   * ReflectionExtension::__construct
   * 对象克隆


id: ReflectionExtension::__construct
type: function
doc:
<comment>Description:</comment>
  构造 ReflectionExtension
  
  构造 <class>ReflectionExtension</class> <info>object</info>。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  扩展名。

<comment>See Also:</comment>
   * ReflectionExtension::info
   * 构造函数


id: ReflectionExtension::__toString
type: function
doc:
<comment>Description:</comment>
  生成字符串
  
  以 <info>string</info> 形式返回扩展的反射信息。等同于 ReflectionExtension::export <strong>$return</strong> 参数设置为 <info>true</info>。

<comment>Return:</comment>
  <info>string</info>  返回扩展的反射信息，同 ReflectionExtension::export。

<comment>See Also:</comment>
   * ReflectionExtension::__construct
   * ReflectionExtension::export
   * __toString()


id: ReflectionExtension::export
type: function
doc:
<comment>Description:</comment>
  Export
  
  导出可以被反射的扩展。输出格式同CLI argument <return>--re [extension]</return>.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>    导出的反射。
  <info>string</info>  <strong>$return</strong>  设为 <info>true</info> 时返回导出结果，设为 <info>false</info>（默认值）则忽略返回。

<comment>Return:</comment>
  <info>string</info>  如果参数 <strong>$return</strong> 
          设为 <info>true</info>，导出结果将作为 <info>string</info>
          返回，否则返回 <info>null</info>。

<comment>See Also:</comment>
   * ReflectionExtension::info
   * ReflectionExtension::__toString


id: ReflectionExtension::getClassNames
type: function
doc:
<comment>Description:</comment>
  获取类名列表
  
  获取扩展中的类名列表。

<comment>Return:</comment>
  <info>array</info>  扩展中定义的类名 <info>array</info>。如果扩展中没有定义类，将返回空数组。

<comment>See Also:</comment>
   * ReflectionExtension::getClasses
   * ReflectionExtension::getName


id: ReflectionExtension::getClasses
type: function
doc:
<comment>Description:</comment>
  获取类列表
  
  从扩展中获取类列表。

<comment>Return:</comment>
  <info>array</info>  <class>ReflectionClass</class> 对象数组，包括扩展中所有类。如果没有类，将返回空数组。

<comment>See Also:</comment>
   * ReflectionExtension::getClassNames


id: ReflectionExtension::getConstants
type: function
doc:
<comment>Description:</comment>
  获取常量
  
  获取扩展中定义的常量。

<comment>Return:</comment>
  <info>array</info>  返回一个以常量名称为索引的数组。

<comment>See Also:</comment>
   * ReflectionExtension::getINIEntries


id: ReflectionExtension::getDependencies
type: function
doc:
<comment>Description:</comment>
  获取依赖
  
  获取依赖，包括必需的、冲突的、可选的。

<comment>Return:</comment>
  <info>array</info>  返回以依赖的扩展名称为索引的数组，每一项的取值为 <return>Required</return>、<return>Optional</return> 或者 <return>Conflicts</return>。

<comment>See Also:</comment>
   * ReflectionClass::getVersion


id: ReflectionExtension::getFunctions
type: function
doc:
<comment>Description:</comment>
  获取扩展中的函数
  
  获取扩展中定义的函数。

<comment>Return:</comment>
  <info>array</info>  返回 <class>ReflectionFunction</class> 对象数组，数组索引为函数名。如果扩展中没有定义函数，将返回空数组。

<comment>See Also:</comment>
   * ReflectionExtension::getClasses
   * <strong>get_extension_funcs()</strong>


id: ReflectionExtension::getINIEntries
type: function
doc:
<comment>Description:</comment>
  获取 ini 配置
  
  获取扩展在 ini 配置文件中的配置。

<comment>Return:</comment>
  <info>array</info>  返回数组，数组索引是配置名称，值是配置值。

<comment>See Also:</comment>
   * <strong>ini_get_all()</strong>
   * ReflectionExtension::getConstants


id: ReflectionExtension::getName
type: function
doc:
<comment>Description:</comment>
  获取扩展名称
  
  获取扩展名称。

<comment>Return:</comment>
  <info>string</info>  扩展名称。

<comment>See Also:</comment>
   * ReflectionExtension::getClassNames


id: ReflectionExtension::getVersion
type: function
doc:
<comment>Description:</comment>
  获取扩展版本
  
  获取扩展的版本。

<comment>Return:</comment>
  <info>string|null</info>  扩展的版本，如果扩展没有版本返回 <info>null</info>。

<comment>See Also:</comment>
   * ReflectionExtension::info


id: ReflectionExtension::info
type: function
doc:
<comment>Description:</comment>
  输出扩展信息
  
  输出“<strong>phpinfo()</strong>”信息中的扩展信息。

<comment>Return:</comment>
  <info>void</info>  扩展信息。

<comment>See Also:</comment>
   * ReflectionExtension::getName
   * <strong>phpinfo()</strong>


id: ReflectionExtension::isPersistent
type: function
doc:
<comment>Description:</comment>
  返回扩展是否持久化的
  
  检测扩展是否为持久化的。
  
  当使用 php.ini 加载时，则扩展是持久化的。当使用 <strong>dl()</strong> 加载扩展时，扩展是临时的，而不是持久化的。

<comment>Return:</comment>
  <info>bool</info>  扩展在 <return>extension</return> 配置中被载入返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionExtension::isTemporary


id: ReflectionExtension::isTemporary
type: function
doc:
<comment>Description:</comment>
  返回扩展是否是临时载入
  
  检测扩展是否为临时的。
  
  当使用 <strong>dl()</strong> 加载扩展时，扩展是临时的。

<comment>Return:</comment>
  <info>bool</info>  如果扩展被<strong>dl()</strong>载入则返回<info>true</info> ，否则返回 <info>false</info> 。

<comment>See Also:</comment>
   * ReflectionExtension::isPersistent


id: ReflectionFiber::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a ReflectionFiber object
  
  Constructs a <class>ReflectionFiber</class> object.

<comment>Param:</comment>
  <info>Fiber</info>  <strong>$fiber</strong>  The <class>Fiber</class> to reflect.


id: ReflectionFiber::getCallable
type: function
doc:
<comment>Description:</comment>
  Gets the callable used to create the Fiber
  
  Returns the callable used to construct the <class>Fiber</class>. If the fiber has terminated, an <class>Error</class> is thrown.

<comment>Return:</comment>
  <info>callable</info>  The callable used to create the <class>Fiber</class>.


id: ReflectionFiber::getExecutingFile
type: function
doc:
<comment>Description:</comment>
  Get the file name of the current execution point
  
  Returns the full path and file name of the current execution point in the reflected <class>Fiber</class>. If the
  fiber has not been started or has terminated, an <class>Error</class> is thrown.

<comment>Return:</comment>
  <info>string</info>  The full path and file name of the reflected fiber.


id: ReflectionFiber::getExecutingLine
type: function
doc:
<comment>Description:</comment>
  Get the line number of the current execution point
  
  Returns the line number of the current execution point in the reflected <class>Fiber</class>. If the fiber has
  not been started or has terminated, an <class>Error</class> is thrown.

<comment>Return:</comment>
  <info>int</info>  The line number of the current execution point in the fiber.


id: ReflectionFiber::getFiber
type: function
doc:
<comment>Description:</comment>
  Get the reflected Fiber instance
  
  Returns the <class>Fiber</class> instance being reflected.

<comment>Return:</comment>
  <info>Fiber</info>  The <class>Fiber</class> instance being reflected.


id: ReflectionFiber::getTrace
type: function
doc:
<comment>Description:</comment>
  Get the backtrace of the current execution point
  
  Get the backtrace of the current execution point in the reflected <class>Fiber</class>.

<comment>Param:</comment>
  <info>int</info>  <strong>$options</strong>  The value of <strong>$options</strong> can be any of the following flags.
                 
                 Available optionsOption说明<info>DEBUG_BACKTRACE_PROVIDE_OBJECT</info> Default.
                 <info>DEBUG_BACKTRACE_IGNORE_ARGS</info> Don't include the argument information for functions in
                 the stack trace.

<comment>Return:</comment>
  <info>array</info>  The backtrace of the current execution point in the fiber.


id: ReflectionFunction::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a ReflectionFunction object
  
  Constructs a <class>ReflectionFunction</class> object.

<comment>Param:</comment>
  <info>Closure|string</info>  <strong>$function</strong>  The name of the function to reflect or a closure.

<comment>See Also:</comment>
   * ReflectionMethod::__construct
   * Constructors


id: ReflectionFunction::__toString
type: function
doc:
<comment>Description:</comment>
  Returns the string representation of the ReflectionFunction object
  
  Get a human-readable description of the function, its parameters and return values.

<comment>Return:</comment>
  <info>string</info>  The string.

<comment>See Also:</comment>
   * ReflectionFunction::export
   * __toString()


id: ReflectionFunction::export
type: function
doc:
<comment>Description:</comment>
  Exports function
  
  Exports a Reflected function.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>    导出的反射。
  <info>string</info>  <strong>$return</strong>  设为 <info>true</info> 时返回导出结果，设为 <info>false</info>（默认值）则忽略返回。

<comment>Return:</comment>
  <info>string</info>  如果参数 <strong>$return</strong> 
          设为 <info>true</info>，导出结果将作为 <info>string</info>
          返回，否则返回 <info>null</info>。

<comment>See Also:</comment>
   * ReflectionFunction::invoke
   * ReflectionFunction::__toString


id: ReflectionFunction::getClosure
type: function
doc:
<comment>Description:</comment>
  Returns a dynamically created closure for the function
  
  Get a dynamically created closure for the function.

<comment>Return:</comment>
  <info>Closure</info>  Returns the newly created <class>Closure</class>.

<comment>See Also:</comment>
   * First class callable syntax


id: ReflectionFunction::invoke
type: function
doc:
<comment>Description:</comment>
  Invokes function
  
  Invokes a reflected function.

<comment>Param:</comment>
  <info>mixed</info>  <strong>$args</strong>  The passed in argument list. It accepts a variable number of arguments which are
                passed to the function much like <strong>call_user_func()</strong> is.

<comment>Return:</comment>
  <info>mixed</info>  Returns the result of the invoked function call.

<comment>See Also:</comment>
   * ReflectionFunction::export
   * __invoke()
   * <strong>call_user_func()</strong>


id: ReflectionFunction::invokeArgs
type: function
doc:
<comment>Description:</comment>
  Invokes function args
  
  Invokes the function and pass its arguments as array.

<comment>Param:</comment>
  <info>array</info>  <strong>$args</strong>  The passed arguments to the function as an array, much like  <strong>call_user_func_array()</strong>
                works.

<comment>Return:</comment>
  <info>mixed</info>  Returns the result of the invoked function

<comment>See Also:</comment>
   * ReflectionFunction::invoke
   * ReflectionFunctionAbstract::getNumberOfParameters
   * __invoke()
   * <strong>call_user_func_array()</strong>


id: ReflectionFunction::isAnonymous
type: function
doc:
<comment>Description:</comment>
  Checks if a function is anonymous
  
  Checks if a function is anonymous.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the function is anonymous, otherwise <info>false</info>.

<comment>See Also:</comment>
   * Anonymous functions


id: ReflectionFunction::isDisabled
type: function
doc:
<comment>Description:</comment>
  Checks if function is disabled
  
  Checks if the function is disabled, via the  disable_functions directive.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if it's disable, otherwise <info>false</info>

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::isUserDefined
   * disable_functions directive


id: ReflectionFunctionAbstract::__clone
type: function
doc:
<comment>Description:</comment>
  复制函数
  
  复制函数。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * 对象克隆


id: ReflectionFunctionAbstract::__toString
type: function
doc:
<comment>Description:</comment>
  返回表示 ReflectionFunctionAbstract 对象的字符串
  
  获取函数及其参数和返回值的人类可读描述。

<comment>Return:</comment>
  <info>void</info>  字符串。

<comment>See Also:</comment>
   * ReflectionFunction::__toString
   * ReflectionMethod::__toString
   * __toString()


id: ReflectionFunctionAbstract::getAttributes
type: function
doc:
<comment>Description:</comment>
  Gets Attributes
  
  Returns all attributes declared on this function or method as an array of <info>ReflectionAttribute</info>.

<comment>Param:</comment>
  <info>string|null</info>  <strong>$name</strong>   过滤结果，匹配此类名，仅包含 <class>ReflectionAttribute</class> 实例的属性。
  <info>int</info>          <strong>$flags</strong>  如果提供了 <strong>$name</strong>，则用于确定如何过滤结果的 flag。
                       
                       默认值为 <return>0</return>，这将导致返回的结果只属于类 <strong>$name</strong> 的属性。
                       
                       唯一可用的其他选项是使用 <info>ReflectionAttribute::IS_INSTANCEOF</info>，它将改为使用
                       <return>instanceof</return> 进行过滤。

<comment>Return:</comment>
  <info>array</info>  Array of attributes, as a <class>ReflectionAttribute</class> object.

<comment>See Also:</comment>
   * ReflectionClass::getAttributes
   * ReflectionClassConstant::getAttributes
   * ReflectionParameter::getAttributes
   * ReflectionProperty::getAttributes


id: ReflectionFunctionAbstract::getClosureScopeClass
type: function
doc:
<comment>Description:</comment>
  Returns the scope class associated with the closure
  
  Get the class enclosing the closure declaration.

<comment>Return:</comment>
  <info>ReflectionClass|null</info>  Returns the class, or <info>null</info> if the function is not a closure or if there was
                        no enclosing class.


id: ReflectionFunctionAbstract::getClosureThis
type: function
doc:
<comment>Description:</comment>
  返回本身的匿名函数
  
  如果函数是非静态闭包，获取绑定到闭包内部 $this 的对象。

<comment>Return:</comment>
  <info>object|null</info>  返回 $this 指向，产生错误返回 <info>null</info>。


id: ReflectionFunctionAbstract::getClosureUsedVariables
type: function
doc:
<comment>Description:</comment>
  Returns an array of the used variables in the Closure
  
  Returns an <info>array</info> of the used variables in the <class>Closure</class>.

<comment>Return:</comment>
  <info>array</info>  Returns an <info>array</info> of the used variables in the <class>Closure</class>.

<comment>See Also:</comment>
   * <strong>ReflectionFunctionAbstract::getClosureScopeClass()</strong>
   * <strong>ReflectionFunctionAbstract::getClosureThis()</strong>


id: ReflectionFunctionAbstract::getDocComment
type: function
doc:
<comment>Description:</comment>
  获取注释内容
  
  获取函数的文档注释。

<comment>Return:</comment>
  <info>string|false</info>  如果存在文档注释返回其内容，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getStartLine


id: ReflectionFunctionAbstract::getEndLine
type: function
doc:
<comment>Description:</comment>
  获取结束行号
  
  获取结束行号。

<comment>Return:</comment>
  <info>int|false</info>  获取用户定义函数的结束行号，如果未知返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getStartLine


id: ReflectionFunctionAbstract::getExtension
type: function
doc:
<comment>Description:</comment>
  获取扩展信息
  
  获取函数的扩展信息

<comment>Return:</comment>
  <info>ReflectionExtension|null</info>  包含扩展信息的 <class>ReflectionExtension</class> 对象，用户定义的函数则为 <info>null</info>。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getExtensionName


id: ReflectionFunctionAbstract::getExtensionName
type: function
doc:
<comment>Description:</comment>
  获取扩展名称
  
  获取扩展名称。

<comment>Return:</comment>
  <info>string|false</info>  定义函数的扩展名，用户定义函数则为 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getExtension


id: ReflectionFunctionAbstract::getFileName
type: function
doc:
<comment>Description:</comment>
  获取文件名称
  
  获取函数定义的文件名称。

<comment>Return:</comment>
  <info>string|false</info>  返回定义函数所在文件的文件名。如果定义的类在 PHP 核心或者 PHP 扩展中，则返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getNamespaceName


id: ReflectionFunctionAbstract::getName
type: function
doc:
<comment>Description:</comment>
  获取函数名称
  
  获取函数名称。

<comment>Return:</comment>
  <info>string</info>  返回函数名称。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getExtensionName
   * ReflectionFunctionAbstract::isUserDefined


id: ReflectionFunctionAbstract::getNamespaceName
type: function
doc:
<comment>Description:</comment>
  获取命名空间
  
  获取类定义所属的命名空间。

<comment>Return:</comment>
  <info>string</info>  返回命名空间。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getFileName
   * 命名空间


id: ReflectionFunctionAbstract::getNumberOfParameters
type: function
doc:
<comment>Description:</comment>
  获取参数数目
  
  获取函数定义的参数数量，包括可选参数。

<comment>Return:</comment>
  <info>int</info>  参数的个数。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getNumberOfRequiredParameters
   * <strong>func_num_args()</strong>


id: ReflectionFunctionAbstract::getNumberOfRequiredParameters
type: function
doc:
<comment>Description:</comment>
  获取必须输入参数个数
  
  获取函数定义中，必须输入的参数个数。

<comment>Return:</comment>
  <info>int</info>  必须输入的参数个数。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getNumberOfParameters


id: ReflectionFunctionAbstract::getParameters
type: function
doc:
<comment>Description:</comment>
  获取参数
  
  获取通过 <info>ReflectionParameter</info> 数组返回参数列表。顺序为源码中定义的顺序。

<comment>Return:</comment>
  <info>array</info>  由 <class>ReflectionParameter</class> 对象组成的参数列表。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getNumberOfParameters
   * <strong>func_get_args()</strong>


id: ReflectionFunctionAbstract::getReturnType
type: function
doc:
<comment>Description:</comment>
  Gets the specified return type of a function
  
  Gets the specified return type of a reflected function.

<comment>Return:</comment>
  <info>ReflectionType|null</info>  Returns a <class>ReflectionType</class> object if a return type is specified, <info>null</info>
                       otherwise.

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::hasReturnType
   * ReflectionType::__toString


id: ReflectionFunctionAbstract::getShortName
type: function
doc:
<comment>Description:</comment>
  获取函数短名称
  
  获取函数的段名称 (没有命名空间定义)。

<comment>Return:</comment>
  <info>string</info>  函数短名称。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getNamespaceName
   * 命名空间


id: ReflectionFunctionAbstract::getStartLine
type: function
doc:
<comment>Description:</comment>
  获取开始行号
  
  获取函数定义的开始行号

<comment>Return:</comment>
  <info>int|false</info>  开始行号，如果未知则为 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getEndLine


id: ReflectionFunctionAbstract::getStaticVariables
type: function
doc:
<comment>Description:</comment>
  获取静态变量
  
  获取静态变量

<comment>Return:</comment>
  <info>array</info>  返回一个静态变量的 <info>array</info>

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getParameters


id: ReflectionFunctionAbstract::getTentativeReturnType
type: function
doc:
<comment>Description:</comment>
  Returns the tentative return type associated with the function
  
  Returns the tentative return type associated with the function.

<comment>Return:</comment>
  <info>ReflectionType|null</info>  Returns a <class>ReflectionType</class> object if a tentative return type is specified, <info>null</info>
                       otherwise.

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getReturnType
   * ReflectionFunctionAbstract::hasTentativeReturnType
   * Return Type Compatibility with Internal Classes


id: ReflectionFunctionAbstract::hasReturnType
type: function
doc:
<comment>Description:</comment>
  Checks if the function has a specified return type
  
  Checks whether the reflected function has a return type specified.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the function is a specified return type, otherwise <info>false</info>.

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getReturnType


id: ReflectionFunctionAbstract::hasTentativeReturnType
type: function
doc:
<comment>Description:</comment>
  Returns whether the function has a tentative return type
  
  Returns whether the function has a tentative return type.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the function has a tentative return type, otherwise <info>false</info>.

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getTentativeReturnType
   * ReflectionFunctionAbstract::hasReturnType
   * Return Type Compatibility with Internal Classes


id: ReflectionFunctionAbstract::inNamespace
type: function
doc:
<comment>Description:</comment>
  检查是否处于命名空间
  
  检查函数是否在命名空间内定义。

<comment>Return:</comment>
  <info>bool</info>  在命名空间内返回 <info>true</info>，否则返回 <info>false</info>

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getNamespaceName
   * 命名空间


id: ReflectionFunctionAbstract::isClosure
type: function
doc:
<comment>Description:</comment>
  检查是否是匿名函数
  
  检查反射函数是否是 <class>Closure</class>。

<comment>Return:</comment>
  <info>bool</info>  如果是 <class>Closure</class> 返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::isGenerator


id: ReflectionFunctionAbstract::isDeprecated
type: function
doc:
<comment>Description:</comment>
  检查是否已经弃用
  
  检查函数是否已经被弃用

<comment>Return:</comment>
  <info>bool</info>  弃用返回 <info>true</info>，否则返回 <info>false</info>

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getDocComment


id: ReflectionFunctionAbstract::isGenerator
type: function
doc:
<comment>Description:</comment>
  判断函数是否是一个生成器函数

<comment>Return:</comment>
  <info>bool</info>  生成器函数返回 <info>true</info>，不是返回 <info>false</info> 失败时返回 <info>null</info>。


id: ReflectionFunctionAbstract::isInternal
type: function
doc:
<comment>Description:</comment>
  判断函数是否是内置函数
  
  判断函数是否是内置函数，而非用户自定义。

<comment>Return:</comment>
  <info>bool</info>  内置函数返回 <info>true</info>，否则返回 <info>false</info>

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::isUserDefined


id: ReflectionFunctionAbstract::isStatic
type: function
doc:
<comment>Description:</comment>
  判断函数是否为 static
  
  判断函数是否是 static。

<comment>Return:</comment>
  <info>bool</info>  函数为 static，返回 <info>true</info>，否则为 <info>false</info>

<comment>See Also:</comment>
   * ReflectionMethod::isFinal


id: ReflectionFunctionAbstract::isUserDefined
type: function
doc:
<comment>Description:</comment>
  检查是否是用户定义
  
  检查函数是否是用户自定义，也就是说不是 PHP 自己内置函数。

<comment>Return:</comment>
  <info>bool</info>  用户自定义函数返回 <info>true</info>，否则返回 <info>false</info>

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::isInternal


id: ReflectionFunctionAbstract::isVariadic
type: function
doc:
<comment>Description:</comment>
  Checks if the function is variadic
  
  Checks if the function is variadic.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the function is variadic, otherwise <info>false</info>.


id: ReflectionFunctionAbstract::returnsReference
type: function
doc:
<comment>Description:</comment>
  检查是否返回引用
  
  检查是否返回引用

<comment>Return:</comment>
  <info>bool</info>  如果返回引用则为 <info>true</info>，否则为 <info>false</info>

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::isClosure


id: ReflectionGenerator::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a ReflectionGenerator object
  
  Constructs a <class>ReflectionGenerator</class> object.

<comment>Param:</comment>
  <info>Generator</info>  <strong>$generator</strong>  A generator object.

<comment>See Also:</comment>
   * ReflectionGenerator::getFunction
   * ReflectionGenerator::getExecutingLine
   * ReflectionGenerator::getExecutingFile


id: ReflectionGenerator::getExecutingFile
type: function
doc:
<comment>Description:</comment>
  Gets the file name of the currently executing generator
  
  Get the full path and file name of the currently executing generator.

<comment>Return:</comment>
  <info>string</info>  Returns the full path and file name of the currently executing generator.

<comment>See Also:</comment>
   * ReflectionGenerator::getExecutingLine
   * ReflectionGenerator::getExecutingGenerator


id: ReflectionGenerator::getExecutingGenerator
type: function
doc:
<comment>Description:</comment>
  Gets the executing Generator object
  
  Get the executing <class>Generator</class> object

<comment>Return:</comment>
  <info>Generator</info>  Returns the currently executing <class>Generator</class> object.

<comment>See Also:</comment>
   * ReflectionGenerator::getExecutingLine
   * ReflectionGenerator::getExecutingFile


id: ReflectionGenerator::getExecutingLine
type: function
doc:
<comment>Description:</comment>
  Gets the currently executing line of the generator
  
  Get the currently executing line number of the generator.

<comment>Return:</comment>
  <info>int</info>  Returns the line number of the currently executing statement in the generator.

<comment>See Also:</comment>
   * ReflectionGenerator::getExecutingGenerator
   * ReflectionGenerator::getExecutingFile


id: ReflectionGenerator::getFunction
type: function
doc:
<comment>Description:</comment>
  Gets the function name of the generator
  
  Enables the function name of the generator to be obtained by returning a class derived from
  <class>ReflectionFunctionAbstract</class>.

<comment>Return:</comment>
  <info>ReflectionFunctionAbstract</info>  Returns a <class>ReflectionFunctionAbstract</class> class. This will be
                              <class>ReflectionFunction</class> for functions, or <class>ReflectionMethod</class> for methods.

<comment>See Also:</comment>
   * ReflectionGenerator::getThis
   * ReflectionGenerator::getTrace


id: ReflectionGenerator::getThis
type: function
doc:
<comment>Description:</comment>
  Gets the $this value of the generator
  
  Get the <return>$this</return> value that the generator has access to.

<comment>Return:</comment>
  <info>object|null</info>  Returns the <return>$this</return> value, or <info>null</info> if the generator was not created in a class context.

<comment>See Also:</comment>
   * ReflectionGenerator::getFunction
   * ReflectionGenerator::getTrace


id: ReflectionGenerator::getTrace
type: function
doc:
<comment>Description:</comment>
  Gets the trace of the executing generator
  
  Get the trace of the currently executing generator.

<comment>Param:</comment>
  <info>int</info>  <strong>$options</strong>  The value of <strong>$options</strong> can be any of the following flags.
                 
                 Available optionsOptionDescription<info>DEBUG_BACKTRACE_PROVIDE_OBJECT</info> Default.
                 <info>DEBUG_BACKTRACE_IGNORE_ARGS</info> Don't include the argument information for functions in
                 the stack trace.

<comment>Return:</comment>
  <info>array</info>  Returns the trace of the currently executing generator.

<comment>See Also:</comment>
   * ReflectionGenerator::getFunction
   * ReflectionGenerator::getThis


id: ReflectionIntersectionType::getTypes
type: function
doc:
<comment>Description:</comment>
  返回包含在交集类型中的类型
  
  返回包含在交集类型中的类型的反射。

<comment>Return:</comment>
  <info>array</info>  包含 <class>ReflectionType</class> 对象的数组。

<comment>See Also:</comment>
   * ReflectionType::allowsNull
   * ReflectionParameter::getType


id: ReflectionMethod::__construct
type: function
doc:
<comment>Description:</comment>
  构造 ReflectionMethod
  
  替代签名（不支持命名参数）：
  
  构造新的 <class>ReflectionMethod</class>。

<comment>Param:</comment>
  <info>object|string</info>  <strong>$objectOrMethod</strong>  包含方法的类名或者对象（类的实例）。
  <info>string</info>         <strong>$method</strong>          方法名。
  <info>string</info>         <strong>$classMethod</strong>     类名称和方法名称，通过 <return>::</return> 分隔

<comment>See Also:</comment>
   * ReflectionMethod::export
   * Constructors


id: ReflectionMethod::__toString
type: function
doc:
<comment>Description:</comment>
  返回反射方法对象的字符串表达
  
  返回反射方法对象的字符串表达。

<comment>Return:</comment>
  <info>string</info>  <class>ReflectionMethod</class> 实例的字符串表示。

<comment>See Also:</comment>
   * ReflectionMethod::export
   * __toString()


id: ReflectionMethod::createFromMethodName
type: function
doc:
<comment>Description:</comment>
  Creates a new ReflectionMethod
  
  Creates a new <class>ReflectionMethod</class>.

<comment>Param:</comment>
  <info>string</info>  <strong>$method</strong>  Class name and method name delimited by <return>::</return>.

<comment>Return:</comment>
  <info>static</info>  Returns a new <class>ReflectionMethod</class> on success.


id: ReflectionMethod::export
type: function
doc:
<comment>Description:</comment>
  导出 reflection 方法
  
  导出 ReflectionMethod。

<comment>Param:</comment>
  <info>string</info>  <strong>$class</strong>   类名称。
  <info>string</info>  <strong>$name</strong>    方法名称。
  <info>bool</info>    <strong>$return</strong>  设为 <info>true</info> 时返回导出结果，设为 <info>false</info>（默认值）则忽略返回。

<comment>Return:</comment>
  <info>string</info>  如果参数 <strong>$return</strong> 
          设为 <info>true</info>，导出结果将作为 <info>string</info>
          返回，否则返回 <info>null</info>。

<comment>See Also:</comment>
   * ReflectionMethod::__construct
   * ReflectionMethod::__toString


id: ReflectionMethod::getClosure
type: function
doc:
<comment>Description:</comment>
  返回动态建立的方法调用接口（译者注：可以使用这个返回值直接调用非公开方法）
  
  调用方法创建闭包。

<comment>Param:</comment>
  <info>object|null</info>  <strong>$object</strong>  不可以用于静态方法，可以用于其他类型的方法。

<comment>Return:</comment>
  <info>Closure</info>  返回新创建的 <class>Closure</class>。

<comment>See Also:</comment>
   * 头等可调用语法


id: ReflectionMethod::getDeclaringClass
type: function
doc:
<comment>Description:</comment>
  获取被反射的方法所在类的反射实例
  
  获取被反射的方法所在的类的反射实例。

<comment>Return:</comment>
  <info>ReflectionClass</info>  返回类的 <class>ReflectionClass</class> 反射对象，被反射的方法是这个类的一部分。

<comment>See Also:</comment>
   * ReflectionMethod::isAbstract


id: ReflectionMethod::getModifiers
type: function
doc:
<comment>Description:</comment>
  获取方法的修饰符
  
  返回一个方法的修饰符，返回值是一个位标。

<comment>Return:</comment>
  <info>int</info>  使用数字表示方法修饰符。这些修饰符的实际含义可以参考预定义常量中的说明。

<comment>See Also:</comment>
   * Reflection::getModifierNames


id: ReflectionMethod::getPrototype
type: function
doc:
<comment>Description:</comment>
  返回方法原型 (如果存在)
  
  返回方法原型。

<comment>Return:</comment>
  <info>ReflectionMethod</info>  方法原型的 <class>ReflectionMethod</class> 实例。

<comment>See Also:</comment>
   * ReflectionMethod::getModifiers
   * ReflectionMethod::hasPrototype


id: ReflectionMethod::hasPrototype
type: function
doc:
<comment>Description:</comment>
  Returns whether a method has a prototype
  
  Returns whether a method has a prototype.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the method has a prototype, otherwise <info>false</info>.

<comment>See Also:</comment>
   * ReflectionMethod::getPrototype


id: ReflectionMethod::invoke
type: function
doc:
<comment>Description:</comment>
  Invoke
  
  执行反射的方法。

<comment>Param:</comment>
  <info>object|null</info>  <strong>$object</strong>  如果执行的方法是静态类，那么这个参数传送 <info>null</info>。
  <info>mixed</info>        <strong>$args</strong>    0，或者传送给方法的参数列表。可以通过这个参数，给方法传送大量的参数。

<comment>Return:</comment>
  <info>mixed</info>  返回方法的返回值

<comment>See Also:</comment>
   * ReflectionMethod::invokeArgs
   * __invoke()
   * <strong>call_user_func()</strong>


id: ReflectionMethod::invokeArgs
type: function
doc:
<comment>Description:</comment>
  带参数执行
  
  使用数组给方法传送参数，并执行他。

<comment>Param:</comment>
  <info>object|null</info>  <strong>$object</strong>  调用方法的对象，如果是静态对象，设置为 <info>null</info>
  <info>array</info>        <strong>$args</strong>    使用 <info>array</info> 传送的方法参数。

<comment>Return:</comment>
  <info>mixed</info>  返回方法返回值。

<comment>See Also:</comment>
   * ReflectionMethod::invoke
   * __invoke()
   * <strong>call_user_func_array()</strong>


id: ReflectionMethod::isAbstract
type: function
doc:
<comment>Description:</comment>
  判断方法是否是抽象方法
  
  判断方法是否是抽象方法

<comment>Return:</comment>
  <info>bool</info>  如果是抽象方法返回 <info>true</info>，否则返回 <info>false</info>

<comment>See Also:</comment>
   * ReflectionMethod::getDeclaringClass


id: ReflectionMethod::isConstructor
type: function
doc:
<comment>Description:</comment>
  判断方法是否是构造方法
  
  判断方法是否是构造方法

<comment>Return:</comment>
  <info>bool</info>  如果是构造方法返回 <info>true</info>，否则返回 <info>false</info>

<comment>See Also:</comment>
   * ReflectionMethod::__construct
   * ReflectionMethod::isAbstract
   * ReflectionMethod::isDestructor


id: ReflectionMethod::isDestructor
type: function
doc:
<comment>Description:</comment>
  判断方法是否是析构方法
  
  判断方法是否是析构方法

<comment>Return:</comment>
  <info>bool</info>  如果是析构方法返回 <info>true</info>，否则返回 <info>false</info>

<comment>See Also:</comment>
   * ReflectionMethod::isConstructor


id: ReflectionMethod::isFinal
type: function
doc:
<comment>Description:</comment>
  判断方法是否定义 final
  
  判断方法是否定义 final。

<comment>Return:</comment>
  <info>bool</info>  如果是 final 返回 <info>true</info>，否则返回 <info>false</info>

<comment>See Also:</comment>
   * ReflectionMethod::isStatic


id: ReflectionMethod::isPrivate
type: function
doc:
<comment>Description:</comment>
  判断方法是否是私有
  
  判断方法是否是私有。

<comment>Return:</comment>
  <info>bool</info>  方法私有为 <info>true</info>，否则为 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionMethod::isPublic


id: ReflectionMethod::isProtected
type: function
doc:
<comment>Description:</comment>
  判断方法是否是 protected
  
  判断方法是否是 protected。

<comment>Return:</comment>
  <info>bool</info>  方法是 protected，返回 <info>true</info>，否则返回 <info>false</info>

<comment>See Also:</comment>
   * ReflectionMethod::isPrivate


id: ReflectionMethod::isPublic
type: function
doc:
<comment>Description:</comment>
  判断方法是否是 public
  
  判断方法是否是 public。

<comment>Return:</comment>
  <info>bool</info>  方法是 public，返回 <info>true</info>，否则返回 <info>false</info>

<comment>See Also:</comment>
   * ReflectionMethod::isPrivate


id: ReflectionMethod::setAccessible
type: function
doc:
<comment>Description:</comment>
  设置方法是否可访问
  
  通过 ReflectionMethod::invoke 方法启用对 protected 或 private 方法的调用。
  
  自 PHP 8.1.0 起，调用此方法无效；默认情况下，所有方法都可调用。

<comment>Param:</comment>
  <info>bool</info>  <strong>$accessible</strong>  可以访问设置 <info>true</info>，否则设置 <info>false</info>。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * ReflectionMethod::isPrivate
   * ReflectionMethod::isProtected


id: ReflectionNamedType::getName
type: function
doc:
<comment>Description:</comment>
  以字符串形式获取类型的名称

<comment>Return:</comment>
  <info>string</info>  返回被反射的类型的名称。

<comment>See Also:</comment>
   * ReflectionType::__toString


id: ReflectionNamedType::isBuiltin
type: function
doc:
<comment>Description:</comment>
  检查它是否是内置类型
  
  检查该类型是否是 PHP 中的内置类型。 内置类型是任何不是类、接口或 trait 的类型。

<comment>Return:</comment>
  <info>bool</info>  如果是内置类型返回 <info>true</info>，否则为 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionType::allowsNull
   * ReflectionType::__toString
   * ReflectionClass::isInternal
   * ReflectionParameter::getType


id: ReflectionObject::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a ReflectionObject
  
  Constructs a <class>ReflectionObject</class>.

<comment>Param:</comment>
  <info>object</info>  <strong>$object</strong>  An object instance.

<comment>See Also:</comment>
   * ReflectionObject::export
   * Constructors


id: ReflectionObject::export
type: function
doc:
<comment>Description:</comment>
  Export
  
  Exports a reflection.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$argument</strong>  导出的反射。
  <info>bool</info>    <strong>$return</strong>    设为 <info>true</info> 时返回导出结果，设为 <info>false</info>（默认值）则忽略返回。

<comment>Return:</comment>
  <info>string</info>  如果参数 <strong>$return</strong> 
          设为 <info>true</info>，导出结果将作为 <info>string</info>
          返回，否则返回 <info>null</info>。

<comment>See Also:</comment>
   * ReflectionObject::__construct


id: ReflectionParameter
type: class
doc:
<comment>Description:</comment>
  <class>ReflectionParameter</class> 检索函数或方法参数的相关信息。
  
  要自行检查函数的参数，首先创建 <class>ReflectionFunction</class> 或 <class>ReflectionMethod</class> 的实例，然后使用它们的
  ReflectionFunctionAbstract::getParameters 方法来检索参数的数组。


id: ReflectionParameter::__clone
type: function
doc:
<comment>Description:</comment>
  Clone
  
  Clones.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  

<comment>See Also:</comment>
   * ReflectionParameter::toString
   * Object cloning


id: ReflectionParameter::__construct
type: function
doc:
<comment>Description:</comment>
  Construct
  
  Constructs a <class>ReflectionParameter</class> instance.

<comment>Param:</comment>
  <info>string|array|object</info>  <strong>$function</strong>  The function to reflect parameters from.
  <info>int|string</info>           <strong>$param</strong>     Either an <info>int</info> specifying the position of the parameter (starting
                                  with zero), or the parameter name as <info>string</info>.

<comment>See Also:</comment>
   * ReflectionFunctionAbstract::getParameters
   * ReflectionFunction::__construct
   * ReflectionMethod::__construct
   * Constructors


id: ReflectionParameter::__toString
type: function
doc:
<comment>Description:</comment>
  To string
  
  Get a human-readable description of the parameter.

<comment>Return:</comment>
  <info>string</info>  The string.

<comment>See Also:</comment>
   * ReflectionFunction::__toString
   * ReflectionMethod::__toString
   * __toString()


id: ReflectionParameter::allowsNull
type: function
doc:
<comment>Description:</comment>
  Checks if null is allowed
  
  Checks whether the parameter allows <info>null</info>.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if <info>null</info> is allowed, otherwise <info>false</info>

<comment>See Also:</comment>
   * ReflectionParameter::isOptional


id: ReflectionParameter::canBePassedByValue
type: function
doc:
<comment>Description:</comment>
  Returns whether this parameter can be passed by value

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the parameter can be passed by value, <info>false</info> otherwise. Returns <info>null</info> in case
        of an error.


id: ReflectionParameter::export
type: function
doc:
<comment>Description:</comment>
  Exports
  
  Exports.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$function</strong>   The function name.
  <info>string</info>  <strong>$parameter</strong>  The parameter name.
  <info>bool</info>    <strong>$return</strong>     设为 <info>true</info> 时返回导出结果，设为 <info>false</info>（默认值）则忽略返回。

<comment>Return:</comment>
  <info>string</info>  The exported reflection.

<comment>See Also:</comment>
   * ReflectionParameter::__toString


id: ReflectionParameter::getAttributes
type: function
doc:
<comment>Description:</comment>
  Gets Attributes
  
  Returns all attributes declared on this parameter as an array of <info>ReflectionAttribute</info>.

<comment>Param:</comment>
  <info>string|null</info>  <strong>$name</strong>   过滤结果，匹配此类名，仅包含 <class>ReflectionAttribute</class> 实例的属性。
  <info>int</info>          <strong>$flags</strong>  如果提供了 <strong>$name</strong>，则用于确定如何过滤结果的 flag。
                       
                       默认值为 <return>0</return>，这将导致返回的结果只属于类 <strong>$name</strong> 的属性。
                       
                       唯一可用的其他选项是使用 <info>ReflectionAttribute::IS_INSTANCEOF</info>，它将改为使用
                       <return>instanceof</return> 进行过滤。

<comment>Return:</comment>
  <info>array</info>  Array of attributes, as a <class>ReflectionAttribute</class> object.

<comment>See Also:</comment>
   * ReflectionClass::getAttributes
   * ReflectionClassConstant::getAttributes
   * ReflectionFunctionAbstract::getAttributes
   * ReflectionProperty::getAttributes


id: ReflectionParameter::getClass
type: function
doc:
<comment>Description:</comment>
  获取参数的 ReflectionClass 对象或为 null
  
  获取参数的 <class>ReflectionClass</class> 对象或为 <info>null</info>。
  
  自 PHP 8.0.0 起，弃用此函数且不推荐使用。反而应该使用 ReflectionParameter::getType 获取参数的
  <class>ReflectionType</class>，然后询问该对象以确定参数类型。
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>ReflectionClass|null</info>  <class>ReflectionClass</class> 对象，如果没有声明类型或者声明的类型为类或接口则为 <info>null</info>。

<comment>See Also:</comment>
   * ReflectionParameter::getDeclaringClass


id: ReflectionParameter::getDeclaringClass
type: function
doc:
<comment>Description:</comment>
  Gets declaring class
  
  Gets the declaring class.

<comment>Return:</comment>
  <info>ReflectionClass|null</info>  A <class>ReflectionClass</class> object or <info>null</info> if called on function.

<comment>See Also:</comment>
   * ReflectionParameter::getClass


id: ReflectionParameter::getDeclaringFunction
type: function
doc:
<comment>Description:</comment>
  Gets declaring function
  
  Gets the declaring function.

<comment>Return:</comment>
  <info>ReflectionFunctionAbstract</info>  A <class>ReflectionFunction</class> object.

<comment>See Also:</comment>
   * ReflectionParameter::getDeclaringClass


id: ReflectionParameter::getDefaultValue
type: function
doc:
<comment>Description:</comment>
  Gets default parameter value
  
  Gets the default value of the parameter for any user-defined or internal function or method. If
  the parameter is not optional a <class>ReflectionException</class> will be thrown.

<comment>Return:</comment>
  <info>mixed</info>  The parameters default value.

<comment>See Also:</comment>
   * ReflectionParameter::isOptional
   * ReflectionParameter::isDefaultValueAvailable
   * ReflectionParameter::getDefaultValueConstantName
   * ReflectionParameter::isPassedByReference


id: ReflectionParameter::getDefaultValueConstantName
type: function
doc:
<comment>Description:</comment>
  Returns the default value's constant name if default value is constant or null
  
  Returns the default value's constant name of the parameter of any user-defined or internal
  function or method, if default value is constant or null. If the parameter is not optional a
  <class>ReflectionException</class> will be thrown.

<comment>Return:</comment>
  <info>string|null</info>  Returns string on success or <info>null</info> on failure.

<comment>See Also:</comment>
   * ReflectionParameter::isOptional
   * ReflectionParameter::isDefaultValueConstant
   * ReflectionParameter::getDefaultValue


id: ReflectionParameter::getName
type: function
doc:
<comment>Description:</comment>
  Gets parameter name
  
  Gets the name of the parameter.

<comment>Return:</comment>
  <info>string</info>  The name of the reflected parameter.

<comment>See Also:</comment>
   * ReflectionParameter::getValue


id: ReflectionParameter::getPosition
type: function
doc:
<comment>Description:</comment>
  Gets parameter position
  
  Gets the position of the parameter.

<comment>Return:</comment>
  <info>int</info>  The position of the parameter, left to right, starting at position #0.

<comment>See Also:</comment>
   * ReflectionParameter::getName


id: ReflectionParameter::getType
type: function
doc:
<comment>Description:</comment>
  Gets a parameter's type
  
  Gets the associated type of a parameter.

<comment>Return:</comment>
  <info>ReflectionType|null</info>  Returns a <class>ReflectionType</class> object if a parameter type is specified, <info>null</info>
                       otherwise.

<comment>See Also:</comment>
   * ReflectionParameter::hasType
   * ReflectionType::__toString


id: ReflectionParameter::hasType
type: function
doc:
<comment>Description:</comment>
  Checks if parameter has a type
  
  Checks if the parameter has a type associated with it.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if a type is specified, <info>false</info> otherwise.

<comment>See Also:</comment>
   * ReflectionParameter::getType


id: ReflectionParameter::isArray
type: function
doc:
<comment>Description:</comment>
  Checks if parameter expects an array
  
  Checks if the parameter expects an array.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if an <info>array</info> is expected, <info>false</info> otherwise.

<comment>See Also:</comment>
   * ReflectionParameter::isOptional


id: ReflectionParameter::isCallable
type: function
doc:
<comment>Description:</comment>
  Returns whether parameter MUST be callable
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the parameter is <info>callable</info>, <info>false</info> if it is not or <info>null</info> on failure.


id: ReflectionParameter::isDefaultValueAvailable
type: function
doc:
<comment>Description:</comment>
  检查默认是否可用
  
  检查参数默认值是否可用。

<comment>Return:</comment>
  <info>bool</info>  如果默认值可用为 <info>true</info> 否则为 <info>false</info>

<comment>See Also:</comment>
   * ReflectionParameter::getDefaultValue
   * ReflectionParameter::isDefaultValueConstant
   * ReflectionParameter::getName


id: ReflectionParameter::isDefaultValueConstant
type: function
doc:
<comment>Description:</comment>
  Returns whether the default value of this parameter is a constant
  
  Returns whether the default value of this parameter is a constant.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the default value is constant, and <info>false</info> otherwise.

<comment>See Also:</comment>
   * ReflectionParameter::getDefaultValueConstantName
   * ReflectionParameter::isDefaultValueAvailable


id: ReflectionParameter::isOptional
type: function
doc:
<comment>Description:</comment>
  Checks if optional
  
  Checks if the parameter is optional.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the parameter is optional, otherwise <info>false</info>

<comment>See Also:</comment>
   * ReflectionParameter::getName


id: ReflectionParameter::isPassedByReference
type: function
doc:
<comment>Description:</comment>
  Checks if passed by reference
  
  Checks if the parameter is passed in by reference.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the parameter is passed in by reference, otherwise <info>false</info>

<comment>See Also:</comment>
   * ReflectionParameter::getName


id: ReflectionParameter::isVariadic
type: function
doc:
<comment>Description:</comment>
  Checks if the parameter is variadic
  
  Checks if the parameter was declared as a variadic parameter.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the parameter is variadic, otherwise <info>false</info>.


id: ReflectionProperty::__clone
type: function
doc:
<comment>Description:</comment>
  Clone
  
  Clones.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  

<comment>See Also:</comment>
   * ReflectionProperty::export
   * Object cloning


id: ReflectionProperty::__construct
type: function
doc:
<comment>Description:</comment>
  Construct a ReflectionProperty object

<comment>Param:</comment>
  <info>object|string</info>  <strong>$class</strong>     Either a string containing the name of the class to reflect, or an
                            object.
  <info>string</info>         <strong>$property</strong>  The name of the property being reflected.

<comment>See Also:</comment>
   * ReflectionProperty::getName
   * Constructors


id: ReflectionProperty::__toString
type: function
doc:
<comment>Description:</comment>
  To string
  
  Returns the string representation of the property.

<comment>Return:</comment>
  <info>string</info>  The string.

<comment>See Also:</comment>
   * __toString()


id: ReflectionProperty::export
type: function
doc:
<comment>Description:</comment>
  Export
  
  Exports a reflection.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info></info>        <strong>$argument</strong>  导出的反射。
  <info>string</info>  <strong>$name</strong>      The property name.
  <info>bool</info>    <strong>$return</strong>    设为 <info>true</info> 时返回导出结果，设为 <info>false</info>（默认值）则忽略返回。

<comment>Return:</comment>
  <info>string</info>  

<comment>See Also:</comment>
   * ReflectionProperty::__toString


id: ReflectionProperty::getAttributes
type: function
doc:
<comment>Description:</comment>
  Gets Attributes
  
  Returns all attributes declared on this class property as an array of <info>ReflectionAttribute</info>.

<comment>Param:</comment>
  <info>string|null</info>  <strong>$name</strong>   过滤结果，匹配此类名，仅包含 <class>ReflectionAttribute</class> 实例的属性。
  <info>int</info>          <strong>$flags</strong>  如果提供了 <strong>$name</strong>，则用于确定如何过滤结果的 flag。
                       
                       默认值为 <return>0</return>，这将导致返回的结果只属于类 <strong>$name</strong> 的属性。
                       
                       唯一可用的其他选项是使用 <info>ReflectionAttribute::IS_INSTANCEOF</info>，它将改为使用
                       <return>instanceof</return> 进行过滤。

<comment>Return:</comment>
  <info>array</info>  Array of attributes, as a <class>ReflectionAttribute</class> object.

<comment>See Also:</comment>
   * ReflectionClass::getAttributes
   * ReflectionClassConstant::getAttributes
   * ReflectionFunctionAbstract::getAttributes
   * ReflectionParameter::getAttributes


id: ReflectionProperty::getDeclaringClass
type: function
doc:
<comment>Description:</comment>
  Gets declaring class
  
  Gets the declaring class.

<comment>Return:</comment>
  <info>ReflectionClass</info>  A <class>ReflectionClass</class> object.

<comment>See Also:</comment>
   * ReflectionProperty::getName


id: ReflectionProperty::getDefaultValue
type: function
doc:
<comment>Description:</comment>
  Returns the default value declared for a property
  
  Gets the implicit or explicitly declared default value for a property.

<comment>Return:</comment>
  <info>mixed</info>  The default value if the property has any default value (including <info>null</info>). If there is no
         default value, then <info>null</info> is returned. It is not possible to differentiate between a <info>null</info>
         default value and an unitialized typed property. Use ReflectionProperty::hasDefaultValue to
         detect the difference.

<comment>See Also:</comment>
   * ReflectionProperty::hasDefaultValue


id: ReflectionProperty::getDocComment
type: function
doc:
<comment>Description:</comment>
  Gets the property doc comment
  
  Gets the doc comment for a property.

<comment>Return:</comment>
  <info>string|false</info>  The doc comment if it exists, otherwise <info>false</info>.

<comment>See Also:</comment>
   * ReflectionProperty::getModifiers
   * ReflectionProperty::getName
   * ReflectionProperty::getValue


id: ReflectionProperty::getModifiers
type: function
doc:
<comment>Description:</comment>
  Gets the property modifiers
  
  Gets the modifiers.

<comment>Return:</comment>
  <info>int</info>  A numeric representation of the modifiers. The actual meaning of these modifiers are
       described under predefined constants.

<comment>See Also:</comment>
   * ReflectionProperty::isPrivate
   * Reflection::getModifierNames


id: ReflectionProperty::getName
type: function
doc:
<comment>Description:</comment>
  Gets property name
  
  Gets the properties name.

<comment>Return:</comment>
  <info>string</info>  The name of the reflected property.

<comment>See Also:</comment>
   * ReflectionProperty::getValue


id: ReflectionProperty::getType
type: function
doc:
<comment>Description:</comment>
  Gets a property's type
  
  Gets the associated type of a property.

<comment>Return:</comment>
  <info>ReflectionType|null</info>  Returns a <class>ReflectionType</class> if the property has a type, and <info>null</info> otherwise.

<comment>See Also:</comment>
   * ReflectionProperty::hasType
   * ReflectionProperty::isInitialized


id: ReflectionProperty::getValue
type: function
doc:
<comment>Description:</comment>
  Gets value
  
  Gets the property's value.

<comment>Param:</comment>
  <info>object|null</info>  <strong>$object</strong>  If the property is non-static an object must be provided to fetch the
                        property from. If you want to fetch the default property without providing
                        an object use ReflectionClass::getDefaultProperties instead.

<comment>Return:</comment>
  <info>mixed</info>  The current value of the property.

<comment>See Also:</comment>
   * ReflectionProperty::setValue
   * ReflectionProperty::setAccessible
   * ReflectionClass::getDefaultProperties
   * ReflectionClass::getStaticPropertyValue


id: ReflectionProperty::hasDefaultValue
type: function
doc:
<comment>Description:</comment>
  Checks if property has a default value declared
  
  Checks whether the property was declared with a default value, including an implicit <info>null</info> default
  value. Only returns <info>false</info> for typed properties without default value (or dynamic properties).

<comment>Return:</comment>
  <info>bool</info>  If the property has any default value (including <info>null</info>) <info>true</info> is returned; if the property is
        typed without a default value declared or is a dynamic property, <info>false</info> is returned.

<comment>See Also:</comment>
   * ReflectionProperty::getDefaultValue


id: ReflectionProperty::hasType
type: function
doc:
<comment>Description:</comment>
  Checks if property has a type
  
  Checks if the property has a type associated with it.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if a type is specified, <info>false</info> otherwise.

<comment>See Also:</comment>
   * ReflectionProperty::getType
   * ReflectionProperty::isInitialized


id: ReflectionProperty::isDefault
type: function
doc:
<comment>Description:</comment>
  Checks if property is a default property
  
  Checks whether the property was declared at compile-time, or whether the property was dynamically
  declared at run-time.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the property was declared at compile-time, or <info>false</info> if it was created at run-time.

<comment>See Also:</comment>
   * ReflectionProperty::getValue


id: ReflectionProperty::isInitialized
type: function
doc:
<comment>Description:</comment>
  Checks whether a property is initialized
  
  Checks whether a property is initialized.

<comment>Param:</comment>
  <info>object|null</info>  <strong>$object</strong>  If the property is non-static an object must be provided to fetch the
                        property from.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>false</info> for typed properties prior to initialization, and for properties that have
        been explicitly <strong>unset()</strong>. For all other properties <info>true</info> will be returned.

<comment>See Also:</comment>
   * ReflectionProperty::hasType


id: ReflectionProperty::isPrivate
type: function
doc:
<comment>Description:</comment>
  Checks if property is private
  
  Checks whether the property is private.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the property is private, <info>false</info> otherwise.

<comment>See Also:</comment>
   * ReflectionProperty::isPublic
   * ReflectionProperty::isProtected
   * ReflectionProperty::isReadOnly
   * ReflectionProperty::isStatic


id: ReflectionProperty::isPromoted
type: function
doc:
<comment>Description:</comment>
  Checks if property is promoted
  
  Checks whether the property is promoted

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the property is promoted, <info>false</info> otherwise.

<comment>See Also:</comment>
   * ReflectionProperty::isDefault
   * ReflectionProperty::isInitialized
   * ReflectionProperty::getValue


id: ReflectionProperty::isProtected
type: function
doc:
<comment>Description:</comment>
  Checks if property is protected
  
  Checks whether the property is protected.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the property is protected, <info>false</info> otherwise.

<comment>See Also:</comment>
   * ReflectionProperty::isPublic
   * ReflectionProperty::isPrivate
   * ReflectionProperty::isReadOnly
   * ReflectionProperty::isStatic


id: ReflectionProperty::isPublic
type: function
doc:
<comment>Description:</comment>
  Checks if property is public
  
  Checks whether the property is public.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the property is public, <info>false</info> otherwise.

<comment>See Also:</comment>
   * ReflectionProperty::isProtected
   * ReflectionProperty::isPrivate
   * ReflectionProperty::isReadOnly
   * ReflectionProperty::isStatic


id: ReflectionProperty::isReadOnly
type: function
doc:
<comment>Description:</comment>
  检查属性是否为只读
  
  检查属性是否为只读。

<comment>Return:</comment>
  <info>bool</info>  如果属性是只读的，则返回 <info>true</info>，否则为 <info>false</info>。

<comment>See Also:</comment>
   * ReflectionProperty::isPublic
   * ReflectionProperty::isProtected
   * ReflectionProperty::isPrivate
   * ReflectionProperty::isStatic


id: ReflectionProperty::isStatic
type: function
doc:
<comment>Description:</comment>
  Checks if property is static
  
  Checks whether the property is static.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if the property is static, <info>false</info> otherwise.

<comment>See Also:</comment>
   * ReflectionProperty::isPublic
   * ReflectionProperty::isProtected
   * ReflectionProperty::isPrivate
   * ReflectionProperty::isReadOnly


id: ReflectionProperty::setAccessible
type: function
doc:
<comment>Description:</comment>
  Set property accessibility
  
  Enables access to a protected or private property via the ReflectionProperty::getValue and
  ReflectionProperty::setValue methods.
  
  As of PHP 8.1.0, calling this method has no effect; all properties are accessible by default.

<comment>Param:</comment>
  <info>bool</info>  <strong>$accessible</strong>  <info>true</info> to allow accessibility, or <info>false</info>.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * ReflectionProperty::isPrivate
   * ReflectionProperty::isProtected


id: ReflectionProperty::setValue
type: function
doc:
<comment>Description:</comment>
  Set property value
  
  Sets (changes) the property's value.
  
  As of PHP 8.3.0, calling this method with a single argument is deprecated, use
  ReflectionClass::setStaticPropertyValue instead.

<comment>Param:</comment>
  <info>object</info>  <strong>$object</strong>  If the property is non-static an object must be provided to change the property
                   on. If the property is static a value of <info>null</info> must be to be provided.
  <info>mixed</info>   <strong>$value</strong>   The new value.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * ReflectionProperty::getValue
   * ReflectionProperty::setAccessible
   * ReflectionClass::setStaticPropertyValue


id: ReflectionReference::fromArrayElement
type: function
doc:
<comment>Description:</comment>
  从数组元素创建一个 ReflectionReference
  
  从数组元素创建一个 <class>ReflectionReference</class>。

<comment>Param:</comment>
  <info>array</info>       <strong>$array</strong>  包含潜在引用的 <info>array</info>。
  <info>int|string</info>  <strong>$key</strong>    一个 <info>int</info> 或者 <info>string</info> 类型的 key。

<comment>Return:</comment>
  <info>ReflectionReference|null</info>  如果 <return>$array[$key]</return> 是引用，返回 <class>ReflectionReference </class> 实例，否则返回
                            <info>null</info>。


id: ReflectionReference::getId
type: function
doc:
<comment>Description:</comment>
  获取引用的唯一 ID
  
  返回一个 ID，该 ID 在该引用的生命周期内对于该引用是唯一的。 此 ID 可用于比较引用的相等性，或维护已
  知引用的映射。

<comment>Return:</comment>
  <info>string</info>  返回一个未指定格式的 <info>string</info>。


id: ReflectionType
type: class
doc:
<comment>Description:</comment>
  <class>ReflectionType</class> 类报告有关函数的参数/返回类型以及类的属性类型的信息。Reflection 扩展声明了以下子类
  型： <class>ReflectionNamedType</class>（自 PHP 7.1.0 起）<class>ReflectionUnionType</class>（自 PHP 8.0.0 起）
  <class>ReflectionIntersectionType</class>（自 PHP 8.1.0 起）


id: ReflectionType::__toString
type: function
doc:
<comment>Description:</comment>
  To string
  
  Gets the parameter type name.

<comment>Return:</comment>
  <info>string</info>  Returns the type of the parameter.

<comment>See Also:</comment>
   * ReflectionNamedType::getName
   * ReflectionNamedType::isBuiltin
   * ReflectionType::allowsNull
   * ReflectionUnionType::getTypes
   * ReflectionParameter::getType


id: ReflectionType::allowsNull
type: function
doc:
<comment>Description:</comment>
  Checks if null is allowed
  
  Checks whether the parameter allows <info>null</info>.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if <info>null</info> is allowed, otherwise <info>false</info>

<comment>See Also:</comment>
   * ReflectionNamedType::isBuiltin
   * ReflectionType::__toString
   * ReflectionParameter::getType


id: ReflectionUnionType::getTypes
type: function
doc:
<comment>Description:</comment>
  返回联合类型中包含的类型
  
  返回联合类型中包含的类型的反射。

<comment>Return:</comment>
  <info>array</info>  包含 <class>ReflectionType</class> 对象的数组。

<comment>See Also:</comment>
   * ReflectionType::allowsNull
   * ReflectionParameter::getType


id: ReflectionZendExtension::__clone
type: function
doc:
<comment>Description:</comment>
  Clone handler
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>void</info>  


id: ReflectionZendExtension::__construct
type: function
doc:
<comment>Description:</comment>
  Constructs a ReflectionZendExtension object
  
  Constructs a new <info>ReflectionZendExtension</info> object.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  The extension name.


id: ReflectionZendExtension::__toString
type: function
doc:
<comment>Description:</comment>
  To string handler
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  


id: ReflectionZendExtension::export
type: function
doc:
<comment>Description:</comment>
  Export
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>    
  <info>bool</info>    <strong>$return</strong>  

<comment>Return:</comment>
  <info>string</info>  

<comment>See Also:</comment>
   * ReflectionClassConstant::__toString


id: ReflectionZendExtension::getAuthor
type: function
doc:
<comment>Description:</comment>
  Gets author
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  


id: ReflectionZendExtension::getCopyright
type: function
doc:
<comment>Description:</comment>
  Gets copyright
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  


id: ReflectionZendExtension::getName
type: function
doc:
<comment>Description:</comment>
  Gets name
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  


id: ReflectionZendExtension::getURL
type: function
doc:
<comment>Description:</comment>
  Gets URL
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  


id: ReflectionZendExtension::getVersion
type: function
doc:
<comment>Description:</comment>
  Gets version
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  


id: Reflector::export
type: function
doc:
<comment>Description:</comment>
  Exports
  
  输出。
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  

<comment>See Also:</comment>
   * Reflection::__toString


id: RegexIterator
type: class
doc:
<comment>Description:</comment>
  This iterator can be used to filter another iterator based on a regular expression.


id: RegexIterator::ALL_MATCHES
type: constant
doc:
<comment>Description:</comment>
  Return all matches for the current entry  (see <strong>preg_match_all()</strong>).


id: RegexIterator::GET_MATCH
type: constant
doc:
<comment>Description:</comment>
  Return the first match for the current entry  (see <strong>preg_match()</strong>).


id: RegexIterator::MATCH
type: constant
doc:
<comment>Description:</comment>
  Only execute match (filter) for the current entry  (see <strong>preg_match()</strong>).


id: RegexIterator::REPLACE
type: constant
doc:
<comment>Description:</comment>
  Replace the current entry  (see <strong>preg_replace()</strong>; Not fully implemented yet)


id: RegexIterator::SPLIT
type: constant
doc:
<comment>Description:</comment>
  Returns the split values for the current entry (see <strong>preg_split()</strong>).


id: RegexIterator::__construct
type: function
doc:
<comment>Description:</comment>
  Create a new RegexIterator
  
  Create a new <class>RegexIterator</class> which filters an Iterator using a regular expression.

<comment>Param:</comment>
  <info>Iterator</info>  <strong>$iterator</strong>   The iterator to apply this regex filter to.
  <info>string</info>    <strong>$pattern</strong>    The regular expression to match.
  <info>int</info>       <strong>$mode</strong>       Operation mode, see RegexIterator::setMode for a list of modes.
  <info>int</info>       <strong>$flags</strong>      Special flags, see RegexIterator::setFlags for a list of available flags.
  <info>int</info>       <strong>$pregFlags</strong>  The regular expression flags. These flags depend on the operation mode
                        parameter:
                        
                        <class>RegexIterator</class> preg_flagsoperation modeavailable
                        flagsRegexIterator::ALL_MATCHES See <strong>preg_match_all()</strong>.
                        RegexIterator::GET_MATCH See <strong>preg_match()</strong>. RegexIterator::MATCH See
                        <strong>preg_match()</strong>. RegexIterator::REPLACE none. RegexIterator::SPLIT See
                        <strong>preg_split()</strong>.

<comment>See Also:</comment>
   * <strong>preg_match()</strong>
   * <strong>preg_match_all()</strong>
   * <strong>preg_replace()</strong>
   * <strong>preg_split()</strong>


id: RegexIterator::accept
type: function
doc:
<comment>Description:</comment>
  Get accept status
  
  Matches <return>(string)</return> RegexIterator::current (or RegexIterator::key if the RegexIterator::USE_KEY flag
  is set) against the regular expression.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> if a match, <info>false</info> otherwise.

<comment>See Also:</comment>
   * RegexIterator constants
   * RegexIterator::setFlags


id: RegexIterator::getFlags
type: function
doc:
<comment>Description:</comment>
  Get flags
  
  Returns the flags, see RegexIterator::setFlags for a list of available flags.

<comment>Return:</comment>
  <info>int</info>  Returns the set flags.

<comment>See Also:</comment>
   * RegexIterator::setFlags


id: RegexIterator::getMode
type: function
doc:
<comment>Description:</comment>
  Returns operation mode
  
  Returns the operation mode, see RegexIterator::setMode for the list of operation modes.

<comment>Return:</comment>
  <info>int</info>  Returns the operation mode.

<comment>See Also:</comment>
   * RegexIterator::setMode


id: RegexIterator::getPregFlags
type: function
doc:
<comment>Description:</comment>
  Returns the regular expression flags
  
  Returns the regular expression flags, see RegexIterator::__construct for the list of flags.

<comment>Return:</comment>
  <info>int</info>  Returns a bitmask of the regular expression flags.

<comment>See Also:</comment>
   * RegexIterator::setPregFlags


id: RegexIterator::getRegex
type: function
doc:
<comment>Description:</comment>
  Returns current regular expression
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  


id: RegexIterator::setFlags
type: function
doc:
<comment>Description:</comment>
  Sets the flags
  
  Sets the flags.

<comment>Param:</comment>
  <info>int</info>  <strong>$flags</strong>  The flags to set, a bitmask of class constants.
               
               The available flags are listed below. The actual meanings of these flags are
               described in the predefined constants. <class>RegexIterator</class>
               flagsvalueconstant1RegexIterator::USE_KEY

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * RegexIterator::getFlags


id: RegexIterator::setMode
type: function
doc:
<comment>Description:</comment>
  Sets the operation mode
  
  Sets the operation mode.

<comment>Param:</comment>
  <info>int</info>  <strong>$mode</strong>  The operation mode.
              
              The available modes are listed below. The actual meanings of these modes are described
              in the predefined constants. <class>RegexIterator</class>
              modesvalueconstant0RegexIterator::MATCH1RegexIterator::GET_MATCH2RegexIterator::ALL_MATCHES3RegexIterator::SPLIT4RegexIterator::REPLACE

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * RegexIterator::getMode


id: RegexIterator::setPregFlags
type: function
doc:
<comment>Description:</comment>
  Sets the regular expression flags
  
  Sets the regular expression flags.

<comment>Param:</comment>
  <info>int</info>  <strong>$pregFlags</strong>  The regular expression flags. See RegexIterator::__construct for an overview of
                   available flags.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * RegexIterator::getPregFlags


id: ResourceBundle
type: class
doc:
<comment>Description:</comment>
  Localized software products often require sets of data that are to be customized depending on
  current locale, e.g.: messages, labels, formatting patterns. ICU  resource mechanism allows to
  define sets of resources that the application can  load on locale basis, while accessing them in
  unified locale-independent fashion.
  
  This class implements access to ICU resource data files. These files are binary data arrays which
  ICU uses to store the localized data.
  
  ICU resource bundle can hold simple resources and complex resources. Complex resources are
  containers which can be either integer-indexed or string-indexed (just like PHP arrays). Simple
  resources can be of the following types: string, integer, binary data field  or integer array.
  
  <class>ResourceBundle</class> supports direct access to the data through array access pattern and iteration via
  foreach, as well as access via class methods. The result will be PHP value for simple resources
  and <class>ResourceBundle</class> object for complex ones. All resources are read-only.


id: ResourceBundle::__construct
type: function
doc:
<comment>Description:</comment>
  Create a resource bundle
  
  面向对象风格 (method)
  
  过程化风格
  
  面向对象风格 (constructor):
  
  Creates a resource bundle.

<comment>Param:</comment>
  <info>string|null</info>  <strong>$locale</strong>    Locale for which the resources should be loaded (locale name, e.g. en_CA).
  <info>string|null</info>  <strong>$bundle</strong>    The directory where the data is stored or the name of the .dat file.
  <info>bool</info>         <strong>$fallback</strong>  Whether locale should match exactly or fallback to parent locale is
                          allowed.

<comment>Return:</comment>
  <info>ResourceBundle|null</info>  Returns <class>ResourceBundle</class> object or <info>null</info> on error.

<comment>See Also:</comment>
   * <strong>resourcebundle_get()</strong>


id: ResourceBundle::count
type: function
doc:
<comment>Description:</comment>
  Get number of elements in the bundle
  
  面向对象风格
  
  过程化风格
  
  Get the number of elements in the bundle.

<comment>Param:</comment>
  <info>ResourceBundle</info>  <strong>$bundle</strong>  <class>ResourceBundle</class> object.

<comment>Return:</comment>
  <info>int</info>  Returns number of elements in the bundle.

<comment>See Also:</comment>
   * <strong>resourcebundle_get()</strong>


id: ResourceBundle::get
type: function
doc:
<comment>Description:</comment>
  Get data from the bundle
  
  面向对象风格
  
  过程化风格
  
  Get the data from the bundle by index or string key.

<comment>Param:</comment>
  <info>ResourceBundle</info>  <strong>$bundle</strong>    <class>ResourceBundle</class> object.
  <info>string|int</info>      <strong>$index</strong>     Data index, must be string or integer.
  <info>bool</info>            <strong>$fallback</strong>  Whether locale should match exactly or fallback to parent locale is
                             allowed.

<comment>Return:</comment>
  <info>mixed</info>  Returns the data located at the index or <info>null</info> on error. Strings, integers and binary data
         strings are returned as corresponding PHP types, integer array is returned as PHP array.
         Complex types are returned as <class>ResourceBundle</class> object.

<comment>See Also:</comment>
   * <strong>resourcebundle_count()</strong>


id: ResourceBundle::getErrorCode
type: function
doc:
<comment>Description:</comment>
  Get bundle's last error code
  
  面向对象风格
  
  过程化风格
  
  Get error code from the last function performed by the bundle object.

<comment>Param:</comment>
  <info>ResourceBundle</info>  <strong>$bundle</strong>  <class>ResourceBundle</class> object.

<comment>Return:</comment>
  <info>int</info>  Returns error code from last bundle object call.

<comment>See Also:</comment>
   * <strong>resourcebundle_get_error_message()</strong>
   * <strong>intl_get_error_code()</strong>
   * <strong>intl_is_failure()</strong>


id: ResourceBundle::getErrorMessage
type: function
doc:
<comment>Description:</comment>
  Get bundle's last error message
  
  面向对象风格
  
  过程化风格
  
  Get error message from the last function performed by the bundle object.

<comment>Param:</comment>
  <info>ResourceBundle</info>  <strong>$bundle</strong>  <class>ResourceBundle</class> object.

<comment>Return:</comment>
  <info>string</info>  Returns error message from last bundle object's call.

<comment>See Also:</comment>
   * <strong>resourcebundle_get_error_code()</strong>
   * <strong>intl_get_error_code()</strong>
   * <strong>intl_is_failure()</strong>


id: ResourceBundle::getLocales
type: function
doc:
<comment>Description:</comment>
  Get supported locales
  
  面向对象风格
  
  过程化风格
  
  Get available locales from ResourceBundle name.

<comment>Param:</comment>
  <info>string</info>  <strong>$bundle</strong>  Path of ResourceBundle for which to get available locales, or empty string for
                   default locales list.

<comment>Return:</comment>
  <info>array|false</info>  Returns the list of locales supported by the bundle, or <info>false</info> on failure.

<comment>See Also:</comment>
   * <strong>resourcebundle_get()</strong>


id: Result::__construct
type: function
doc:
<comment>Description:</comment>
  Result constructor
  
  An object that retrieves generated IDs, AUTO_INCREMENT values, and warnings, for a Result set.


id: Result::getAffectedItemsCount
type: function
doc:
<comment>Description:</comment>
  Get affected row count
  
  Get the number of affected rows by the previous operation.

<comment>Return:</comment>
  <info>int</info>  The number (as an integer) of affected rows.


id: Result::getAutoIncrementValue
type: function
doc:
<comment>Description:</comment>
  Get autoincremented value
  
  Get the last AUTO_INCREMENT value (last insert id).

<comment>Return:</comment>
  <info>int</info>  The last AUTO_INCREMENT value.


id: Result::getGeneratedIds
type: function
doc:
<comment>Description:</comment>
  Get generated ids
  
  Fetch the generated _id values from the last operation.  The unique _id field is generated by the
  MySQL server.

<comment>Return:</comment>
  <info>array</info>  An array of generated _id's from the last operation,  or an empty array if there are none.


id: Result::getWarnings
type: function
doc:
<comment>Description:</comment>
  Get warnings from last operation
  
  Retrieve warnings from the last Result operation.

<comment>Return:</comment>
  <info>array</info>  An array of Warning objects from the last operation. Each object defines an error
         'message', error 'level', and error 'code'. An empty array is returned if no errors are
         present.


id: Result::getWarningsCount
type: function
doc:
<comment>Description:</comment>
  Get warning count from last operation
  
  Retrieve the number of warnings from the last Result operation.

<comment>Return:</comment>
  <info>int</info>  The number of warnings generated by the last operation.


id: ReturnTypeWillChange
type: class
doc:
<comment>Description:</comment>
  大多数非 final 内部方法现在需要重写方法来声明兼容的返回类型，否则在继承验证期间会发出弃用通知。 如
  果由于 PHP 跨版本兼容性问题而无法为重写方法声明返回类型，可以添加 #[\ReturnTypeWillChange] 属性以
  消除弃用通知。


id: ReturnTypeWillChange::__construct
type: function
doc:
<comment>Description:</comment>
  构造新的 ReturnTypeWillChange 注解实例
  
  构造新 <class>ReturnTypeWillChange</class> 实例。


id: RowResult::__construct
type: function
doc:
<comment>Description:</comment>
  RowResult constructor
  
  Represents the result set obtained from querying the database.


id: RowResult::fetchAll
type: function
doc:
<comment>Description:</comment>
  Get all rows from result
  
  Fetch all the rows from the result set.

<comment>Return:</comment>
  <info>array</info>  A numerical array with all results from the query; each result is an associative array. An
         empty array is returned if no rows are present.


id: RowResult::fetchOne
type: function
doc:
<comment>Description:</comment>
  Get row from result
  
  Fetch one result from the result set.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>array</info>  The result, as an associative array  or <info>null</info> if no results are present.


id: RowResult::getColumnNames
type: function
doc:
<comment>Description:</comment>
  Get all column names
  
  Retrieve column names for columns present in the result set.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>array</info>  A numerical array of table columns names, or an empty array if the result set is empty.


id: RowResult::getColumns
type: function
doc:
<comment>Description:</comment>
  Get column metadata
  
  Retrieve column metadata for columns present in the result set.
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>array</info>  An array of FieldMetadata objects representing the columns in the result,  or an empty
         array if the result set is empty.


id: RowResult::getColumnsCount
type: function
doc:
<comment>Description:</comment>
  Get column count
  
  Retrieve the column count for columns present in the result set.

<comment>Return:</comment>
  <info>int</info>  The number of columns; 0 if there are none.


id: RowResult::getWarnings
type: function
doc:
<comment>Description:</comment>
  Get warnings from last operation
  
  Retrieve warnings from the last RowResult operation.

<comment>Return:</comment>
  <info>array</info>  An array of Warning objects from the last operation. Each object defines an error
         'message', error 'level', and error 'code'. An empty array is returned if no errors are
         present.


id: RowResult::getWarningsCount
type: function
doc:
<comment>Description:</comment>
  Get warning count from last operation
  
  Retrieve the number of warnings from the last RowResult operation.

<comment>Return:</comment>
  <info>int</info>  The number of warnings generated by the last operation.


id: SID
type: constant
doc:
<comment>Description:</comment>
  包含着会话名以及会话 ID 的常量，格式为 <return>"name=ID"</return>，或者如果会话 ID 已经在适当的会话 cookie 中设定时
  则为空字符串。 这和 <strong>session_id()</strong> 返回的是同一个 ID。


id: SIMDJSON_ERR_CAPACITY
type: constant
doc:
<comment>Description:</comment>
  This parser can't support a document that big. Thrown when parsing a JSON string that is over 4GiB
  long.


id: SIMDJSON_ERR_DEPTH_ERROR
type: constant
doc:
<comment>Description:</comment>
  The JSON document was too deep (too many nested objects and arrays)


id: SIMDJSON_ERR_INVALID_JSON_POINTER
type: constant
doc:
<comment>Description:</comment>
  Invalid JSON pointer syntax in <strong>simdjson_key_value()</strong> and other functions accepting a JSON pointer
  $key.


id: SIMDJSON_ERR_INVALID_PROPERTY
type: constant
doc:
<comment>Description:</comment>
  Invalid property name for an <class>stdClass</class> when decoding a value with <strong>simdjson_decode()</strong> or
  <strong>simdjson_key_value()</strong>


id: SIMDJSON_ERR_NUMBER_OUT_OF_RANGE
type: constant
doc:
<comment>Description:</comment>
  The JSON number is too large or too small to fit within the requested type. Note that the C
  simdjson library is a fork and this error is ignored to match php's handling of JSON numbers that
  are too large or too small.


id: SIMDJSON_ERR_TAPE_ERROR
type: constant
doc:
<comment>Description:</comment>
  The JSON document has an improper structure: missing or superfluous commas, braces, missing keys,
  etc.


id: SIMDJSON_ERR_UNESCAPED_CHARS
type: constant
doc:
<comment>Description:</comment>
  Within strings, some characters must be escaped, we found unescaped characters


id: SIMDJSON_ERR_UNEXPECTED_ERROR
type: constant
doc:
<comment>Description:</comment>
  Unexpected error, consider reporting this problem as you may have found a bug in the simdjson PECL


id: SIMDJSON_ERR_UNSUPPORTED_ARCHITECTURE
type: constant
doc:
<comment>Description:</comment>
  simdjson does not have an implementation supported by this CPU architecture (perhaps it's a
  non-SIMD CPU?).


id: SNMP::ERRNO_MULTIPLE_SET_QUERIES
type: constant
doc:
<comment>Description:</comment>
  Library will use multiple queries for SET operation requested. That means that operation will be
  performed in a non-transaction manner  and second or subsequent chunks may fail if a type or value
  failure will be faced.


id: SNMP::ERRNO_OID_NOT_INCREASING
type: constant
doc:
<comment>Description:</comment>
  SNMP agent faced OID cycling reporning non-increasing OID while executing (BULK)WALK command. This
  indicates bogus remote SNMP agent.


id: SNMP::ERRNO_OID_PARSING_ERROR
type: constant
doc:
<comment>Description:</comment>
  Library failed while parsing OID (and/or type for SET command). No queries has been made.


id: SNMP::__construct
type: function
doc:
<comment>Description:</comment>
  Creates SNMP instance representing session to remote SNMP agent
  
  The function description goes here.

<comment>Param:</comment>
  <info>int</info>     <strong>$version</strong>    SNMP protocol version: <info>SNMP::VERSION_1</info>,  <info>SNMP::VERSION_2C</info>,  <info>SNMP::VERSION_3</info>.
  <info>string</info>  <strong>$hostname</strong>   The SNMP agent. <strong>$hostname</strong> may be suffixed with optional SNMP agent port after
                      colon. IPv6 addresses must be enclosed in square brackets if used with port.
                      If FQDN is used for <strong>$hostname</strong> it will be resolved by php-snmp library, not by
                      Net-SNMP engine. Usage of IPv6 addresses when specifying FQDN may be forced by
                      enclosing FQDN into square brackets. Here it is some examples: IPv4 with
                      default port127.0.0.1IPv6 with default port::1 or [::1]IPv4 with specific
                      port127.0.0.1:1161IPv6 with specific port[::1]:1161FQDN with default
                      porthost.domainFQDN with specific porthost.domain:1161FQDN with default port,
                      force usage of IPv6 address[host.domain]FQDN with specific port, force usage
                      of IPv6 address[host.domain]:1161
  <info>string</info>  <strong>$community</strong>  The purpuse of <strong>$community</strong> is SNMP version specific:
  <info>int</info>     <strong>$timeout</strong>    The number of microseconds until the first timeout.
  <info>int</info>     <strong>$retries</strong>    The number of retries in case timeout occurs.

<comment>See Also:</comment>
   * SNMP::close


id: SNMP::close
type: function
doc:
<comment>Description:</comment>
  Close SNMP session
  
  Frees previously allocated SNMP session object.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * SNMP::__construct


id: SNMP::get
type: function
doc:
<comment>Description:</comment>
  Fetch an SNMP object
  
  Fetch an SNMP object specified in <strong>$objectId</strong> using GET query.

<comment>Param:</comment>
  <info>array|string</info>  <strong>$objectId</strong>      The SNMP object (OID) or objects
  <info>bool</info>          <strong>$preserveKeys</strong>  When <strong>$objectId</strong> is a array and <strong>$preserveKeys</strong> set to <info>true</info> keys in
                               results will be taken exactly as in <strong>$objectId</strong>, otherwise
                               SNMP::oid_output_format property is used to determinate the form of
                               keys.

<comment>Return:</comment>
  <info>mixed</info>  Returns SNMP objects requested as string or array depending on <strong>$objectId</strong> type or <info>false</info> on
         error.

<comment>See Also:</comment>
   * SNMP::getErrno
   * SNMP::getError


id: SNMP::getErrno
type: function
doc:
<comment>Description:</comment>
  Get last error code
  
  Returns error code from last SNMP request.

<comment>Return:</comment>
  <info>int</info>  Returns one of SNMP error code values described in constants chapter.

<comment>See Also:</comment>
   * SNMP::getError


id: SNMP::getError
type: function
doc:
<comment>Description:</comment>
  Get last error message
  
  Returns string with error from last SNMP request.

<comment>Return:</comment>
  <info>string</info>  String describing error from last SNMP request.

<comment>See Also:</comment>
   * SNMP::getErrno


id: SNMP::getnext
type: function
doc:
<comment>Description:</comment>
  Fetch an SNMP object which
    follows the given object id
    
  
  Fetch an SNMP object that follows specified <strong>$objectId</strong>.

<comment>Param:</comment>
  <info>array|string</info>  <strong>$objectId</strong>  The SNMP object (OID) or objects

<comment>Return:</comment>
  <info>mixed</info>  Returns SNMP objects requested as string or array depending on <strong>$objectId</strong> type or <info>false</info> on
         error.

<comment>See Also:</comment>
   * SNMP::getErrno
   * SNMP::getError


id: SNMP::set
type: function
doc:
<comment>Description:</comment>
  Set the value of an SNMP object
  
  Requests remote SNMP agent setting the value of one or more SNMP objects specified by the
  <strong>$objectId</strong>.

<comment>Param:</comment>
  <info>array|string</info>  <strong>$objectId</strong>  The SNMP object id
                           
                           When count of OIDs in object_id array is greater than max_oids object
                           property set method will have to use multiple queries to perform
                           requested value updates. In this case type and value checks are made
                           per-chunk so second or subsequent requests may fail due to wrong type or
                           value for OID requested. To mark this a warning is raised when count of
                           OIDs in object_id array is greater than max_oids.
  <info>array|string</info>  <strong>$type</strong>      MIB 定义了各个对象 id 的类型。必须是下面列出的单个字符之一。
                           
                           如果在编译 SNMP 库时定义了 <info>OPAQUE_SPECIAL_TYPES</info>，那么下列值是合法的：
                           
                           这些值大都会使用与 ASN.1 相符的类型。's'，'x'，'d'
                           以及 'b' 都是指定一个八字节字符串值的方式。并且 'u' 无符号类型也可用于处
                           理 Gauge32 值。
                           
                           如果 MIB 文件是用 "snmp_read_mib" 或者通过在 libsnmp config 中指定而加载
                           入 MIB 树时，
                           '=' 可以被用作为所有对象的 <strong>$type</strong> 参数，因为 type 可以被自动从 MIB 中读
                           取。
                           
                           注意有两种方式可以设定 BITS 类型的变量，例如
                           "SYNTAX    BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5),
                           https(6)}":
                           
                           使用 "b" 类型以及一个位数的列表。不推荐使用此方法，因为 GET 查询对同一个
                           OID 将会返回例如 0xF8。
                           
                           使用 "x" 类型以及一个十六进制数但是不需要通常的 "0x" 前缀。
                           
                           更多细节见示例部分。
  <info>array|string</info>  <strong>$value</strong>     The new value.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * SNMP::get


id: SNMP::setSecurity
type: function
doc:
<comment>Description:</comment>
  Configures security-related SNMPv3 session parameters
  
  setSecurity configures security-related session parameters used in SNMP protocol version 3

<comment>Param:</comment>
  <info>string</info>  <strong>$securityLevel</strong>      the security level (noAuthNoPriv|authNoPriv|authPriv)
  <info>string</info>  <strong>$authProtocol</strong>       the authentication protocol (MD5 or SHA)
  <info>string</info>  <strong>$authPassphrase</strong>     the authentication pass phrase
  <info>string</info>  <strong>$privacyProtocol</strong>    the privacy protocol (DES or AES)
  <info>string</info>  <strong>$privacyPassphrase</strong>  the privacy pass phrase
  <info>string</info>  <strong>$contextName</strong>        the context name
  <info>string</info>  <strong>$contextEngineId</strong>    the context EngineID

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * SNMP::__construct


id: SNMP::walk
type: function
doc:
<comment>Description:</comment>
  Fetch SNMP object subtree
  
  SNMP::walk is used to read SNMP subtree rooted at specified <strong>$objectId</strong>.

<comment>Param:</comment>
  <info>array|string</info>  <strong>$objectId</strong>        Root of subtree to be fetched
  <info>bool</info>          <strong>$suffixAsKey</strong>     By default full OID notation is used for keys in output array. If
                                 set to <info>true</info> subtree prefix will be removed from keys leaving only
                                 suffix of object_id.
  <info>int</info>           <strong>$nonRepeaters</strong>    This specifies the number of supplied variables that should not be
                                 iterated over. The default is to use this value from SNMP object.
  <info>int</info>           <strong>$maxRepetitions</strong>  This specifies the maximum number of iterations over the repeating
                                 variables. The default is to use this value from SNMP object.

<comment>Return:</comment>
  <info>array|false</info>  Returns an associative array of the SNMP object ids and their values on success or
               <info>false</info> on error. When a SNMP error occures SNMP::getErrno and SNMP::getError can be
               used for retrieving error number (specific to SNMP extension, see class constants)
               and error message respectively.

<comment>See Also:</comment>
   * SNMP::getErrno
   * SNMP::getError


id: SOAP_1_1
type: constant
doc:
<comment>Description:</comment>
  Specifies use of SOAP 1.1 when passed as <return>soap_version</return> option to SoapServer::__construct or
  SoapClient::__construct.


id: SOAP_1_2
type: constant
doc:
<comment>Description:</comment>
  Specifies use of SOAP 1.2 when passed as <return>soap_version</return> option to SoapServer::__construct or
  SoapClient::__construct.


id: SOAP_AUTHENTICATION_BASIC
type: constant
doc:
<comment>Description:</comment>
  Specifies use of HTTP Basic Authentication when passed as <return>authentication</return> option to
  SoapClient::__construct.


id: SOAP_AUTHENTICATION_DIGEST
type: constant
doc:
<comment>Description:</comment>
  Specifies use of HTTP Digest Authentication when passed as <return>authentication</return> option to
  SoapClient::__construct.


id: SOAP_COMPRESSION_ACCEPT
type: constant
doc:
<comment>Description:</comment>
  Specifies use of an "Accept-Encoding" header when passed as part of  the <strong>$compression</strong> option to
  SoapClient::__construct.


id: SOAP_COMPRESSION_DEFLATE
type: constant
doc:
<comment>Description:</comment>
  Specifies use of deflate compression when passed as part of  the <strong>$compression</strong> option to
  SoapClient::__construct.


id: SOAP_COMPRESSION_GZIP
type: constant
doc:
<comment>Description:</comment>
  Specifies use of gzip compression when passed as part of  the <strong>$compression</strong> option to
  SoapClient::__construct.


id: SOAP_DOCUMENT
type: constant
doc:
<comment>Description:</comment>
  Specifies use of document binding when passed as <return>style</return> option to SoapClient::__construct.


id: SOAP_ENCODED
type: constant
doc:
<comment>Description:</comment>
  Specifies use of SOAP Encoding when passed as <return>use</return> option to SoapClient::__construct.


id: SOAP_LITERAL
type: constant
doc:
<comment>Description:</comment>
  Specifies use of service-specific encoding when passed as <return>use</return> option to SoapClient::__construct.


id: SOAP_RPC
type: constant
doc:
<comment>Description:</comment>
  Specifies use of RPC-style binding when passed as <return>style</return> option to SoapClient::__construct.


id: SOAP_SINGLE_ELEMENT_ARRAYS
type: constant
doc:
<comment>Description:</comment>
  Used with the <strong>$features</strong> option to SoapClient::__construct.


id: SOAP_SSL_METHOD_SSLv2
type: constant
doc:
<comment>Description:</comment>
  Used with the deprecated <strong>$ssl_method</strong> option to SoapClient::__construct.


id: SORTCC
type: constant
doc:
<comment>Description:</comment>
  Sort criteria for <strong>imap_sort()</strong>: mailbox in first cc address


id: SORTFROM
type: constant
doc:
<comment>Description:</comment>
  Sort criteria for <strong>imap_sort()</strong>: mailbox in first From address


id: SORTSIZE
type: constant
doc:
<comment>Description:</comment>
  Sort criteria for <strong>imap_sort()</strong>: size of message in octets


id: SORTTO
type: constant
doc:
<comment>Description:</comment>
  Sort criteria for <strong>imap_sort()</strong>: mailbox in first To address


id: SORT_ASC
type: constant
doc:
<comment>Description:</comment>
  <info>SORT_ASC</info> 用在 <strong>array_multisort()</strong> 函数中，使其升序排列。


id: SORT_DESC
type: constant
doc:
<comment>Description:</comment>
  <info>SORT_DESC</info> 用在 <strong>array_multisort()</strong> 函数中，使其降序排列。


id: SORT_FLAG_CASE
type: constant
doc:
<comment>Description:</comment>
  <info>SORT_FLAG_CASE</info> 可以跟 <info>SORT_STRING</info> 或者 <info>SORT_NATURAL</info> 组合（按位或（OR））对字符串进行大小写不敏感排
  序。从 PHP 8.2.0 开始，只转换 ASCII 字符。


id: SORT_NATURAL
type: constant
doc:
<comment>Description:</comment>
  <info>SORT_NATURAL</info> 用于对元素作为字符串使用“自然排序”（像是 <strong>natsort()</strong> ）比较。


id: SO_REUSEPORT
type: constant
doc:
<comment>Description:</comment>
  该常量只在支持 <info>SO_REUSEPORT</info> socket 选项的平台上可用：这包括 Linux、macOS 和 *BSD，但不包括
  Windows。


id: SQLITE3_BOTH
type: constant
doc:
<comment>Description:</comment>
  指定 Sqlite3Result::fetchArray 方法返回同时按列名称与列序号索引的数组，其中列名即相应结果集返回的
  列名，列号即相应结果集返回的列号，从第 0 列开始计数。


id: SQLITE3_DETERMINISTIC
type: constant
doc:
<comment>Description:</comment>
  使用 <strong>SQLite3::createFunction()</strong> 创建的指定函数是确定性的，即它始终在单个 SQL 语句中指定的相同输入返
  回相同结果。（自 PHP 7.1.4 起可用。）


id: SQLITE3_NUM
type: constant
doc:
<comment>Description:</comment>
  指定 Sqlite3Result::fetchArray 方法返回按列序号索引的数组，其中列号即相应结果集返回的列号，从第 0
  列开始计数。


id: SQLSRV_CURSOR_BUFFERED
type: constant
doc:
<comment>Description:</comment>
  Creates a client-side cursor query. Lets you access rows in any order. For usage information, see
  Specifying a Cursor Type and Selecting Rows.


id: SQLSRV_CURSOR_DYNAMIC
type: constant
doc:
<comment>Description:</comment>
  Indicates a dynamic cursor. For usage information, see  Specifying a Cursor Type and Selecting
  Rows.


id: SQLSRV_CURSOR_FORWARD
type: constant
doc:
<comment>Description:</comment>
  Indicates a forward-only cursor. For usage information, see  Specifying a Cursor Type and
  Selecting Rows.


id: SQLSRV_CURSOR_KEYSET
type: constant
doc:
<comment>Description:</comment>
  Indicates a keyset cursor. For usage information, see  Specifying a Cursor Type and Selecting
  Rows.


id: SQLSRV_CURSOR_STATIC
type: constant
doc:
<comment>Description:</comment>
  Indicates a static cursor. For usage information, see  Specifying a Cursor Type and Selecting
  Rows.


id: SQLSRV_ENC_BINARY
type: constant
doc:
<comment>Description:</comment>
  Specifies that data is returned as a raw byte stream from the server without  performing encoding
  or translation. For usage information, see  How to: Specify PHP Types.


id: SQLSRV_ENC_CHAR
type: constant
doc:
<comment>Description:</comment>
  Data is returned in 8-bit characters as specified in the code page of the  Windows locale that is
  set on the system. Any multi-byte characters or characters  that do not map into this code page
  are substituted with a single byte question  mark (?) character. This is the default encoding. For
  usage information,  see How to: Specify PHP Types.


id: SQLSRV_ERR_ALL
type: constant
doc:
<comment>Description:</comment>
  Forces <strong>sqlsrv_errors()</strong> to return both errors and warings  when passed as a parameter (the default
  behavior).


id: SQLSRV_ERR_ERRORS
type: constant
doc:
<comment>Description:</comment>
  Forces <strong>sqlsrv_errors()</strong> to return errors only (no warnings)  when passed as a parameter.


id: SQLSRV_ERR_WARNINGS
type: constant
doc:
<comment>Description:</comment>
  Forces <strong>sqlsrv_errors()</strong> to return warnings only (no errors)  when passed as a parameter.


id: SQLSRV_FETCH_ASSOC
type: constant
doc:
<comment>Description:</comment>
  Forces <strong>sqlsrv_fetch_array()</strong> to return an associative  array when passed as a parameter.


id: SQLSRV_FETCH_BOTH
type: constant
doc:
<comment>Description:</comment>
  Forces <strong>sqlsrv_fetch_array()</strong> to return an array with both  associative and numeric keys when passed
  as a parameter (the default behavior).


id: SQLSRV_FETCH_NUMERIC
type: constant
doc:
<comment>Description:</comment>
  Forces <strong>sqlsrv_fetch_array()</strong> to return an array with  numeric when passed as a parameter.


id: SQLSRV_LOG_SEVERITY_ALL
type: constant
doc:
<comment>Description:</comment>
  Specifies that errors, warnings, and notices will be logged  when passed to <strong>sqlsrv_configure()</strong> as
  a parameter.


id: SQLSRV_LOG_SEVERITY_ERROR
type: constant
doc:
<comment>Description:</comment>
  Specifies that errors will be logged when passed to  <strong>sqlsrv_configure()</strong> as a parameter.


id: SQLSRV_LOG_SEVERITY_NOTICE
type: constant
doc:
<comment>Description:</comment>
  Specifies that notices will be logged when passed to  <strong>sqlsrv_configure()</strong> as a parameter.


id: SQLSRV_LOG_SEVERITY_WARNING
type: constant
doc:
<comment>Description:</comment>
  Specifies that warnings will be logged when passed to  <strong>sqlsrv_configure()</strong> as a parameter.


id: SQLSRV_LOG_SYSTEM_ALL
type: constant
doc:
<comment>Description:</comment>
  Turns on logging of all subsystems when passed to  <strong>sqlsrv_configure()</strong> as a parameter.


id: SQLSRV_LOG_SYSTEM_CONN
type: constant
doc:
<comment>Description:</comment>
  Turns on logging of connection activity when passed to  <strong>sqlsrv_configure()</strong> as a parameter.


id: SQLSRV_LOG_SYSTEM_INIT
type: constant
doc:
<comment>Description:</comment>
  Turns on logging of initialization activity when passed to  <strong>sqlsrv_configure()</strong> as a parameter.


id: SQLSRV_LOG_SYSTEM_OFF
type: constant
doc:
<comment>Description:</comment>
  Turns off logging of all subsystems when passed to  <strong>sqlsrv_configure()</strong> as a parameter.


id: SQLSRV_LOG_SYSTEM_STMT
type: constant
doc:
<comment>Description:</comment>
  Turns on logging of statement activity when passed to  <strong>sqlsrv_configure()</strong> as a parameter.


id: SQLSRV_LOG_SYSTEM_UTIL
type: constant
doc:
<comment>Description:</comment>
  Turns on logging of error function activity when passed to  <strong>sqlsrv_configure()</strong> as a parameter.


id: SQLSRV_PARAM_IN
type: constant
doc:
<comment>Description:</comment>
  Indicates an input parameter when passed to <strong>sqlsrv_query()</strong>  or <strong>sqlsrv_prepare()</strong>.


id: SQLSRV_PARAM_INOUT
type: constant
doc:
<comment>Description:</comment>
  Indicates a bidirectional parameter when passed to <strong>sqlsrv_query()</strong>  or <strong>sqlsrv_prepare()</strong>.


id: SQLSRV_PARAM_OUT
type: constant
doc:
<comment>Description:</comment>
  Indicates an output parameter when passed to <strong>sqlsrv_query()</strong> or  <strong>sqlsrv_prepare()</strong>.


id: SQLSRV_PHPTYPE_DATETIME
type: constant
doc:
<comment>Description:</comment>
  Specifies a datetime PHP data type. For usage information, see  How to: Specify PHP Types.


id: SQLSRV_PHPTYPE_FLOAT
type: constant
doc:
<comment>Description:</comment>
  Specifies a float PHP data type. For usage information, see  How to: Specify PHP Types.


id: SQLSRV_PHPTYPE_INT
type: constant
doc:
<comment>Description:</comment>
  Specifies an integer PHP data type. For usage information, see  How to: Specify PHP Types.


id: SQLSRV_PHPTYPE_STREAM
type: constant
doc:
<comment>Description:</comment>
  Specifies a PHP stream. This constant works like a function and accepts an  encoding constant. See
  the SQLSRV_ENC_* constants. For usage information, see  How to: Specify PHP Types.


id: SQLSRV_PHPTYPE_STRING
type: constant
doc:
<comment>Description:</comment>
  Specifies a string PHP data type. This constant works like a function and  accepts an encoding
  constant. See the SQLSRV_ENC_* constants. For usage information,  see How to: Specify PHP Types.


id: SQLSRV_SCROLL_ABSOLUTE
type: constant
doc:
<comment>Description:</comment>
  Specifies which row to select in a result set. For usage information, see  Specifying a Cursor
  Type and Selecting Rows.


id: SQLSRV_SQLTYPE_BIGINT
type: constant
doc:
<comment>Description:</comment>
  Describes the bigint SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_BINARY
type: constant
doc:
<comment>Description:</comment>
  Describes the binary SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_BIT
type: constant
doc:
<comment>Description:</comment>
  Describes the bit SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_CHAR
type: constant
doc:
<comment>Description:</comment>
  Describes the char SQL Server data type. This constant works like a function  and accepts a
  parameter indicating the number characters. For usage information,  see How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_DATE
type: constant
doc:
<comment>Description:</comment>
  Describes the date SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_DATETIME
type: constant
doc:
<comment>Description:</comment>
  Describes the datetime SQL Server data type. For usage information, see  How to: Specify SQL
  Types.


id: SQLSRV_SQLTYPE_DATETIME2
type: constant
doc:
<comment>Description:</comment>
  Describes the datetime2 SQL Server data type. For usage information, see  How to: Specify SQL
  Types.


id: SQLSRV_SQLTYPE_DATETIMEOFFSET
type: constant
doc:
<comment>Description:</comment>
  Describes the datetimeoffset SQL Server data type. For usage information, see  How to: Specify SQL
  Types.


id: SQLSRV_SQLTYPE_DECIMAL
type: constant
doc:
<comment>Description:</comment>
  Describes the decimal SQL Server data type. This constant works like a function  and accepts two
  parameters indicating (in order) precision and scale. For usage information,  see How to: Specify
  SQL Types.


id: SQLSRV_SQLTYPE_FLOAT
type: constant
doc:
<comment>Description:</comment>
  Describes the float SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_IMAGE
type: constant
doc:
<comment>Description:</comment>
  Describes the image SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_INT
type: constant
doc:
<comment>Description:</comment>
  Describes the int SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_MONEY
type: constant
doc:
<comment>Description:</comment>
  Describes the money SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_NCHAR
type: constant
doc:
<comment>Description:</comment>
  Describes the nchar SQL Server data type. This constant works like a function  and accepts a
  single parameter indicating the character count. For usage information,  see How to: Specify SQL
  Types.


id: SQLSRV_SQLTYPE_NTEXT
type: constant
doc:
<comment>Description:</comment>
  Describes the ntext SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_NUMERIC
type: constant
doc:
<comment>Description:</comment>
  Describes the numeric SQL Server data type. This constant works like a function  and accepts two
  parameter indicating (in order) precision and scale. For usage  information, see How to: Specify
  SQL Types.


id: SQLSRV_SQLTYPE_NVARCHAR
type: constant
doc:
<comment>Description:</comment>
  Describes the nvarchar SQL Server data type. This constant works like a function  and accepts a
  single parameter indicating the character count. For usage  information, see How to: Specify SQL
  Types.


id: SQLSRV_SQLTYPE_REAL
type: constant
doc:
<comment>Description:</comment>
  Describes the real SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_SMALLDATETIME
type: constant
doc:
<comment>Description:</comment>
  Describes the smalldatetime SQL Server data type. For usage information, see  How to: Specify SQL
  Types.


id: SQLSRV_SQLTYPE_SMALLINT
type: constant
doc:
<comment>Description:</comment>
  Describes the smallint SQL Server data type. For usage information, see  How to: Specify SQL
  Types.


id: SQLSRV_SQLTYPE_SMALLMONEY
type: constant
doc:
<comment>Description:</comment>
  Describes the smallmoney SQL Server data type. For usage information, see  How to: Specify SQL
  Types.


id: SQLSRV_SQLTYPE_TEXT
type: constant
doc:
<comment>Description:</comment>
  Describes the text SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_TIME
type: constant
doc:
<comment>Description:</comment>
  Describes the time SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_TIMESTAMP
type: constant
doc:
<comment>Description:</comment>
  Describes the timestamp SQL Server data type. For usage information, see  How to: Specify SQL
  Types.


id: SQLSRV_SQLTYPE_TINYINT
type: constant
doc:
<comment>Description:</comment>
  Describes the tinyint SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_UDT
type: constant
doc:
<comment>Description:</comment>
  Describes the UDT SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_UNIQUEIDENTIFIER
type: constant
doc:
<comment>Description:</comment>
  Describes the uniqueidentifier SQL Server data type. For usage information, see  How to: Specify
  SQL Types.


id: SQLSRV_SQLTYPE_VARBINARY
type: constant
doc:
<comment>Description:</comment>
  Describes the varbinary SQL Server data type. This constant works like a function  and accepts a
  single parameter indicating the byte count. For usage information,  see How to: Specify SQL Types.


id: SQLSRV_SQLTYPE_VARCHAR
type: constant
doc:
<comment>Description:</comment>
  Describes the varchar SQL Server data type. This constant works like a function  and accepts a
  single parameter indicating the character count. For usage information,  see How to: Specify SQL
  Types.


id: SQLSRV_SQLTYPE_XML
type: constant
doc:
<comment>Description:</comment>
  Describes the XML SQL Server data type. For usage information, see  How to: Specify SQL Types.


id: SQLSRV_TXN_READ_COMMITTED
type: constant
doc:
<comment>Description:</comment>
  Indicates a transaction isolation level of READ COMMITTED. This value is  used to set the
  TransactionIsolation level in the $connectionOptions array  passed to <strong>sqlsrv_connect()</strong>.


id: SQLSRV_TXN_READ_SERIALIZABLE
type: constant
doc:
<comment>Description:</comment>
  Indicates a transaction isolation level of SERIALIZABLE. This value is used  to set the
  TransactionIsolation level in the $connectionOptions array passed  to <strong>sqlsrv_connect()</strong>.


id: SQLSRV_TXN_READ_UNCOMMITTED
type: constant
doc:
<comment>Description:</comment>
  Indicates a transaction isolation level of READ UNCOMMITTED. This value is  used to set the
  TransactionIsolation level in the $connectionOptions array  passed to <strong>sqlsrv_connect()</strong>.


id: SQLSRV_TXN_REPEATABLE_READ
type: constant
doc:
<comment>Description:</comment>
  Indicates a transaction isolation level of REPEATABLE READ. This value is  used to set the
  TransactionIsolation level in the $connectionOptions array  passed to <strong>sqlsrv_connect()</strong>.


id: SQLSRV_TXN_SNAPSHOT
type: constant
doc:
<comment>Description:</comment>
  Indicates a transaction isolation level of SNAPSHOT. This value is used to  set the
  TransactionIsolation level in the $connectionOptions array passed  to <strong>sqlsrv_connect()</strong>.


id: SQLT_AFC
type: constant
doc:
<comment>Description:</comment>
  Used with <strong>oci_bind_array_by_name()</strong> to bind arrays of CHAR.


id: SQLT_AVC
type: constant
doc:
<comment>Description:</comment>
  Used with <strong>oci_bind_array_by_name()</strong> to bind arrays of VARCHAR2.


id: SQLT_CHR
type: constant
doc:
<comment>Description:</comment>
  Used with <strong>oci_bind_array_by_name()</strong> to bind arrays of VARCHAR2. Also used with <strong>oci_bind_by_name()</strong>.


id: SQLT_FLT
type: constant
doc:
<comment>Description:</comment>
  Used with <strong>oci_bind_array_by_name()</strong> to bind arrays of FLOAT.


id: SQLT_LBI
type: constant
doc:
<comment>Description:</comment>
  Used with <strong>oci_bind_by_name()</strong> to bind LONG RAW values.


id: SQLT_LNG
type: constant
doc:
<comment>Description:</comment>
  Used with <strong>oci_bind_by_name()</strong> to bind LONG values.


id: SQLT_LVC
type: constant
doc:
<comment>Description:</comment>
  Used with <strong>oci_bind_array_by_name()</strong> to bind arrays of LONG VARCHAR.


id: SQLT_ODT
type: constant
doc:
<comment>Description:</comment>
  Used with <strong>oci_bind_array_by_name()</strong> to bind arrays of LONG.


id: SQLT_STR
type: constant
doc:
<comment>Description:</comment>
  Used with <strong>oci_bind_array_by_name()</strong> to bind arrays of STRING.


id: SQLT_VCS
type: constant
doc:
<comment>Description:</comment>
  Used with <strong>oci_bind_array_by_name()</strong> to bind arrays of VARCHAR.


id: SQLite3::__construct
type: function
doc:
<comment>Description:</comment>
  实例化 SQLite3 对象并打开 SQLite 3 数据库
    
  
  实例化 SQLite3 对象并打开连接到 SQLite 3 数据库的连接。如果构建包括加密，那么将尝试使用密钥。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>       SQLite 数据库的路径，或 <return>:memory:</return> 使用内存数据库。如果 <strong>$filename</strong> 是空字符
                          串，那么将创建私有的临时磁盘数据库。一旦数据库连接关闭，这个私有数据库就会
                          自动删除。
  <info>int</info>     <strong>$flags</strong>          可选的 flag，用于确定如何打开 SQLite 数据库。默认使用
                          <return>SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE</return> 打开。
                          <return>SQLITE3_OPEN_READONLY</return>：以只读方式打开数据库。 <return>SQLITE3_OPEN_READWRITE</return>：以读
                          写方式打开数据库。 <return>SQLITE3_OPEN_CREATE</return>：如果数据库不存在，则创建数据库。
                          
                          <return>SQLITE3_OPEN_READONLY</return>：以只读方式打开数据库。
                          
                          <return>SQLITE3_OPEN_READWRITE</return>：以读写方式打开数据库。
                          
                          <return>SQLITE3_OPEN_CREATE</return>：如果数据库不存在，则创建数据库。
  <info>string</info>  <strong>$encryptionKey</strong>  加密和解密 SQLite 数据库时使用的可选加密密钥。如果未安装 SQLite 加密模块，
                          则此参数无效。


id: SQLite3::backup
type: function
doc:
<comment>Description:</comment>
  Backup one database to another database
  
  SQLite3::backup copies the contents of one database into another, overwriting the contents of the
  destination database. It is useful either for creating backups of databases or for copying
  in-memory databases to or from persistent files.
  
  As of SQLite 3.27.0 (2019-02-07), it is also possible to use the statement <return>VACUUM INTO 'file.db';</return>
  to backup the database to a new file.

<comment>Param:</comment>
  <info>SQLite3</info>  <strong>$destination</strong>          A database connection opened with SQLite3::open.
  <info>string</info>   <strong>$sourceDatabase</strong>       The database name is <return>"main"</return> for the main database, <return>"temp"</return> for the
                                 temporary database, or the name specified after the <return>AS</return> keyword in
                                 an <return>ATTACH</return> statement for an attached database.
  <info>string</info>   <strong>$destinationDatabase</strong>  Analogous to <strong>$sourceDatabase</strong> but for the <strong>$destination</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: SQLite3::busyTimeout
type: function
doc:
<comment>Description:</comment>
  Sets the busy connection handler
  
  Sets a busy handler that will sleep until the database is not locked or the timeout is reached.

<comment>Param:</comment>
  <info>int</info>  <strong>$milliseconds</strong>  The milliseconds to sleep. Setting this value to a value less than or equal to
                      zero, will turn off an already set timeout handler.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> on success,  或者在失败时返回 <info>false</info>.


id: SQLite3::changes
type: function
doc:
<comment>Description:</comment>
  Returns the number of database rows that were changed (or inserted or
     deleted) by the most recent SQL statement
    
  
  Returns the number of database rows that were changed (or inserted or deleted) by the most recent
  SQL statement.

<comment>Return:</comment>
  <info>int</info>  Returns an <info>int</info> value corresponding to the number of database rows changed (or inserted or
       deleted) by the most recent SQL statement.


id: SQLite3::close
type: function
doc:
<comment>Description:</comment>
  Closes the database connection
  
  Closes the database connection.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: SQLite3::createAggregate
type: function
doc:
<comment>Description:</comment>
  Registers a PHP function for use as an SQL aggregate function
  
  Registers a PHP function or user-defined function for use as an SQL aggregate function for use
  within SQL statements.

<comment>Param:</comment>
  <info>string</info>    <strong>$name</strong>           Name of the SQL aggregate to be created or redefined.
  <info>callable</info>  <strong>$stepCallback</strong>   Callback function called for each row of the result set. Your PHP
                            function should accumulate the result and store it in the aggregation
                            context.
                            
                            This function need to be defined as:
                            <info>mixed</info>step<info>mixed</info><strong>$context</strong><info>int</info><strong>$rownumber</strong><info>mixed</info><strong>$value</strong><info>mixed</info><strong>$values</strong> <strong>$context</strong><info>null</info>
                            for the first row; on subsequent rows it will have the value that was
                            previously returned from the step function; you should use this to
                            maintain the aggregate state. <strong>$rownumber</strong> The current row number. <strong>$value</strong>
                            The first argument passed to the aggregate. <strong>$values</strong> Further arguments
                            passed to the aggregate.  The return value of this function will be used
                            as the <strong>$context</strong> argument in the next call of the step or finalize
                            functions.
                            
                            <info>null</info> for the first row; on subsequent rows it will have the value that
                            was previously returned from the step function; you should use this to
                            maintain the aggregate state.
                            
                            The current row number.
                            
                            The first argument passed to the aggregate.
                            
                            Further arguments passed to the aggregate.
  <info>mixed</info>     <strong>$context</strong>        <info>null</info> for the first row; on subsequent rows it will have the value that
                            was previously returned from the step function; you should use this to
                            maintain the aggregate state.
  <info>int</info>       <strong>$rownumber</strong>      The current row number.
  <info>mixed</info>     <strong>$value</strong>          The first argument passed to the aggregate.
  <info>mixed</info>     <strong>$values</strong>         Further arguments passed to the aggregate.
  <info>callable</info>  <strong>$finalCallback</strong>  Callback function to aggregate the "stepped" 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. scalar type).
                            
                            This function need to be defined as: <info>mixed</info>fini<info>mixed</info><strong>$context</strong><info>int</info><strong>$rownumber</strong>
                            <strong>$context</strong> Holds the return value from the very last call to the step
                            function. <strong>$rownumber</strong> Always <return>0</return>.  The return value of this function will
                            be used as the return value for the aggregate.
                            
                            Holds the return value from the very last call to the step function.
                            
                            Always <return>0</return>.
  <info>mixed</info>     <strong>$context</strong>        Holds the return value from the very last call to the step function.
  <info>int</info>       <strong>$rownumber</strong>      Always <return>0</return>.
  <info>int</info>       <strong>$argCount</strong>       The number of arguments that the SQL aggregate takes. If this parameter
                            is negative, then the SQL aggregate may take any number of arguments.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> upon successful creation of the aggregate,  或者在失败时返回 <info>false</info>.


id: SQLite3::createCollation
type: function
doc:
<comment>Description:</comment>
  Registers a PHP function for use as an SQL collating function
  
  Registers a PHP function or user-defined function for use as a collating function within SQL
  statements.

<comment>Param:</comment>
  <info>string</info>    <strong>$name</strong>      Name of the SQL collating function to be created or redefined
  <info>callable</info>  <strong>$callback</strong>  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 <strong>strcmp()</strong> does, i.e. it should return -1, 1, or 0 if the first
                       string sorts before, sorts after, or is equal to the second.
                       
                       This function need to be defined as: <info>int</info>collation<info>mixed</info><strong>$value1</strong><info>mixed</info><strong>$value2</strong>

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * The SQLite collation documentation: http://sqlite.org/datatype3.html#collation


id: SQLite3::createFunction
type: function
doc:
<comment>Description:</comment>
  Registers a PHP function for use as an SQL scalar function
  
  Registers a PHP function or user-defined function for use as an SQL scalar function for use within
  SQL statements.

<comment>Param:</comment>
  <info>string</info>    <strong>$name</strong>      Name of the SQL function to be created or redefined.
  <info>callable</info>  <strong>$callback</strong>  The name of a PHP function or user-defined function to apply as a callback,
                       defining the behavior of the SQL function.
                       
                       This function need to be defined as: <info>mixed</info>callback<info>mixed</info><strong>$value</strong><info>mixed</info><strong>$values</strong>
                       <strong>$value</strong> The first argument passed to the SQL function. <strong>$values</strong> Further
                       arguments passed to the SQL function.
                       
                       The first argument passed to the SQL function.
                       
                       Further arguments passed to the SQL function.
  <info>mixed</info>     <strong>$value</strong>     The first argument passed to the SQL function.
  <info>mixed</info>     <strong>$values</strong>    Further arguments passed to the SQL function.
  <info>int</info>       <strong>$argCount</strong>  The number of arguments that the SQL function takes. If this parameter is <return>-1</return>,
                       then the SQL function may take any number of arguments.
  <info>int</info>       <strong>$flags</strong>     A bitwise conjunction of flags. Currently, only <info>SQLITE3_DETERMINISTIC</info> is
                       supported, which specifies that the function always returns the same result
                       given the same inputs within a single SQL statement.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> upon successful creation of the function, <info>false</info> on failure.


id: SQLite3::enableExceptions
type: function
doc:
<comment>Description:</comment>
  Enable throwing exceptions
    
  
  Controls whether the <class>SQLite3</class> instance will throw exceptions or warnings on error.

<comment>Param:</comment>
  <info>bool</info>  <strong>$enable</strong>  When <info>true</info>, the <class>SQLite3</class> instance, and  <class>SQLite3Stmt</class> and <class>SQLite3Result</class> instances
                 derived from it, will throw exceptions on error.
                 
                 When <info>false</info>, the <class>SQLite3</class> instance, and <class>SQLite3Stmt</class> and <class>SQLite3Result</class> instances
                 derived from it, will raise warnings on error.
                 
                 For either mode, the error code and message, if any, will be available via
                 SQLite3::lastErrorCode and SQLite3::lastErrorMsg respectively.

<comment>Return:</comment>
  <info>bool</info>  Returns the old value; <info>true</info> if exceptions were enabled, <info>false</info> otherwise.


id: SQLite3::escapeString
type: function
doc:
<comment>Description:</comment>
  Returns a string that has been properly escaped
  
  Returns a string that has been properly escaped for safe inclusion in an SQL statement.
  
  此函数（还）不能安全地适用于二进制对象！
  
  To properly handle BLOB fields which may contain NUL characters, use <strong>SQLite3Stmt::bindParam()</strong>
  instead.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  The string to be escaped.

<comment>Return:</comment>
  <info>string</info>  Returns a properly escaped string that may be used safely in an SQL statement.


id: SQLite3::exec
type: function
doc:
<comment>Description:</comment>
  Executes a result-less query against a given database
  
  Executes a result-less query against a given database.
  
  SQLite3 may need to create temporary files during the execution of queries, so the respective
  directories may have to be writable.

<comment>Param:</comment>
  <info>string</info>  <strong>$query</strong>  The SQL query to execute (typically an INSERT, UPDATE, or DELETE query).

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the query succeeded, <info>false</info> on failure.


id: SQLite3::lastErrorCode
type: function
doc:
<comment>Description:</comment>
  Returns the numeric result code of the most recent failed SQLite request
    
  
  Returns the numeric result code of the most recent failed SQLite request.

<comment>Return:</comment>
  <info>int</info>  Returns an integer value representing the numeric result code of the most recent failed
       SQLite request.


id: SQLite3::lastErrorMsg
type: function
doc:
<comment>Description:</comment>
  Returns English text describing the most recent failed SQLite request
    
  
  Returns English text describing the most recent failed SQLite request.

<comment>Return:</comment>
  <info>string</info>  Returns an English string describing the most recent failed SQLite request.


id: SQLite3::lastInsertRowID
type: function
doc:
<comment>Description:</comment>
  Returns the row ID of the most recent INSERT into the database
  
  Returns the row ID of the most recent INSERT into the database.

<comment>Return:</comment>
  <info>int</info>  Returns the row ID of the most recent INSERT into the database. If no successful INSERTs into
       rowid tables have ever occurred on this database connection, then SQLite3::lastInsertRowID
       returns <return>0</return>.


id: SQLite3::loadExtension
type: function
doc:
<comment>Description:</comment>
  Attempts to load an SQLite extension library
  
  Attempts to load an SQLite extension library.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  The name of the library to load. The library must be located in the directory
                 specified in the configure option sqlite3.extension_dir.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the extension is successfully loaded, <info>false</info> on failure.


id: SQLite3::open
type: function
doc:
<comment>Description:</comment>
  Opens an SQLite database
  
  Opens an SQLite 3 Database. If the build includes encryption, then it will attempt to use the key.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>       Path to the SQLite database, or <return>:memory:</return> to use in-memory database.
  <info>int</info>     <strong>$flags</strong>          Optional flags used to determine how to open the SQLite database. By
                          default, open uses <return>SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE</return>.
                          <return>SQLITE3_OPEN_READONLY</return>: Open the database for reading only.
                          <return>SQLITE3_OPEN_READWRITE</return>: Open the database for reading and writing.
                          <return>SQLITE3_OPEN_CREATE</return>: Create the database if it does not exist.
                          
                          <return>SQLITE3_OPEN_READONLY</return>: Open the database for reading only.
                          
                          <return>SQLITE3_OPEN_READWRITE</return>: Open the database for reading and writing.
                          
                          <return>SQLITE3_OPEN_CREATE</return>: Create the database if it does not exist.
  <info>string</info>  <strong>$encryptionKey</strong>  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.

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: SQLite3::openBlob
type: function
doc:
<comment>Description:</comment>
  Opens a stream resource to read a BLOB
  
  Opens a stream resource to read or write a BLOB, which would be selected by:
  
  SELECT <strong>$column</strong> FROM <strong>$database</strong>.<strong>$table</strong> WHERE rowid = <strong>$rowid</strong>
  
  It is not possible to change the size of a BLOB by writing to the stream. Instead, an UPDATE
  statement has to be executed, possibly using SQLite's zeroblob() function to set the desired BLOB
  size.

<comment>Param:</comment>
  <info>string</info>  <strong>$table</strong>     The table name.
  <info>string</info>  <strong>$column</strong>    The column name.
  <info>int</info>     <strong>$rowid</strong>     The row ID.
  <info>string</info>  <strong>$database</strong>  The symbolic name of the DB
  <info>int</info>     <strong>$flags</strong>     Either <info>SQLITE3_OPEN_READONLY</info> or  <info>SQLITE3_OPEN_READWRITE</info> to open the stream for
                     reading only, or for reading and writing, respectively.

<comment>Return:</comment>
  <info>resource|false</info>  Returns a stream resource,  或者在失败时返回 <info>false</info>.


id: SQLite3::prepare
type: function
doc:
<comment>Description:</comment>
  Prepares an SQL statement for execution
  
  Prepares an SQL statement for execution and returns an <class>SQLite3Stmt</class> object.

<comment>Param:</comment>
  <info>string</info>  <strong>$query</strong>  The SQL query to prepare.

<comment>Return:</comment>
  <info>SQLite3Stmt|false</info>  Returns an <class>SQLite3Stmt</class> object on success 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * SQLite3Stmt::paramCount
   * SQLite3Stmt::bindValue
   * SQLite3Stmt::bindParam


id: SQLite3::query
type: function
doc:
<comment>Description:</comment>
  Executes an SQL query
  
  Executes an SQL query, returning an <class>SQLite3Result</class> object. If the query does not yield a result
  (such as DML statements) the returned <class>SQLite3Result</class> object is not really usable. Use SQLite3::exec
  for such queries instead.

<comment>Param:</comment>
  <info>string</info>  <strong>$query</strong>  The SQL query to execute.

<comment>Return:</comment>
  <info>SQLite3Result|false</info>  Returns an <class>SQLite3Result</class> object,  或者在失败时返回 <info>false</info>.


id: SQLite3::querySingle
type: function
doc:
<comment>Description:</comment>
  Executes a query and returns a single result
  
  Executes a query and returns a single result.

<comment>Param:</comment>
  <info>string</info>  <strong>$query</strong>      The SQL query to execute.
  <info>bool</info>    <strong>$entireRow</strong>  By default, <strong>querySingle()</strong> returns the value of the first column returned by
                      the query. If <strong>$entireRow</strong> is <info>true</info>, then it returns an array of the entire first
                      row.

<comment>Return:</comment>
  <info>mixed</info>  Returns the value of the first column of results or an array of the entire first row (if
         <strong>$entireRow</strong> is <info>true</info>).
         
         If the query is valid but no results are returned, then <info>null</info> will be returned if <strong>$entireRow</strong>
         is <info>false</info>, otherwise an empty array is returned.
         
         Invalid or failing queries will return <info>false</info>.


id: SQLite3::setAuthorizer
type: function
doc:
<comment>Description:</comment>
  Configures a callback to be used as an authorizer to limit what a statement can do
  
  Sets a callback that will be called by SQLite every time an action is performed (reading,
  deleting, updating, etc.). This is used when preparing a SQL statement from an untrusted source to
  ensure that the SQL statements do not try to access data they are not allowed to see, or that they
  do not try to execute malicious statements that damage the database. For example, an application
  may allow a user to enter arbitrary SQL queries for evaluation by a database. But the application
  does not want the user to be able to make arbitrary changes to the database. An authorizer could
  then be put in place while the user-entered SQL is being prepared that disallows everything except
  SELECT statements.
  
  The authorizer callback may be called multiple times for each statement prepared by SQLite. A
  <return>SELECT</return> or <return>UPDATE</return> query will call the authorizer for every column that would be read or updated.
  
  The authorizer is called with up to five parameters. The first parameter is always given, and is
  an <info>int</info> (action code) matching a constant from <return>SQLite3</return>. The other parameters are only passed for
  some actions. The following table describes the second and third parameters according to the
  action: List of action codes and parametersActionSecond parameterThird
  parameter<info>SQLite3::CREATE_INDEX</info>Index NameTable Name<info>SQLite3::CREATE_TABLE</info>Table
  Name<info>null</info><info>SQLite3::CREATE_TEMP_INDEX</info>Index NameTable Name<info>SQLite3::CREATE_TEMP_TABLE</info>Table
  Name<info>null</info><info>SQLite3::CREATE_TEMP_TRIGGER</info>Trigger NameTable Name<info>SQLite3::CREATE_TEMP_VIEW</info>View
  Name<info>null</info><info>SQLite3::CREATE_TRIGGER</info>Trigger NameTable Name<info>SQLite3::CREATE_VIEW</info>View
  Name<info>null</info><info>SQLite3::DELETE</info>Table Name<info>null</info><info>SQLite3::DROP_INDEX</info>Index NameTable
  Name<info>SQLite3::DROP_TABLE</info>Table Name<info>null</info><info>SQLite3::DROP_TEMP_INDEX</info>Index NameTable
  Name<info>SQLite3::DROP_TEMP_TABLE</info>Table Name<info>null</info><info>SQLite3::DROP_TEMP_TRIGGER</info>Trigger NameTable
  Name<info>SQLite3::DROP_TEMP_VIEW</info>View Name<info>null</info><info>SQLite3::DROP_TRIGGER</info>Trigger NameTable
  Name<info>SQLite3::DROP_VIEW</info>View Name<info>null</info><info>SQLite3::INSERT</info>Table Name<info>null</info><info>SQLite3::PRAGMA</info>Pragma NameFirst
  argument passed to the pragma, or <info>null</info><info>SQLite3::READ</info>Table NameColumn
  Name<info>SQLite3::SELECT</info><info>null</info><info>null</info><info>SQLite3::TRANSACTION</info>Operation<info>null</info><info>SQLite3::UPDATE</info>Table NameColumn
  Name<info>SQLite3::ATTACH</info>Filename<info>null</info><info>SQLite3::DETACH</info>Database Name<info>null</info><info>SQLite3::ALTER_TABLE</info>Database
  NameTable Name<info>SQLite3::REINDEX</info>Index Name<info>null</info><info>SQLite3::ANALYZE</info>Table
  Name<info>null</info><info>SQLite3::CREATE_VTABLE</info>Table NameModule Name<info>SQLite3::DROP_VTABLE</info>Table NameModule
  Name<info>SQLite3::FUNCTION</info><info>null</info>Function Name<info>SQLite3::SAVEPOINT</info>OperationSavepoint
  Name<info>SQLite3::RECURSIVE</info><info>null</info><info>null</info>
  
  The 4th parameter will be the name of the database (<return>"main"</return>, <return>"temp"</return>, etc.) if applicable.
  
  The 5th parameter to the authorizer callback is the name of the inner-most trigger or view that is
  responsible for the access attempt or <info>null</info> if this access attempt is directly from top-level SQL
  code.
  
  When the callback returns <info>SQLite3::OK</info>, that means the operation requested is accepted. When the
  callback returns <info>SQLite3::DENY</info>, the call that triggered the authorizer will fail with an error
  message explaining that access is denied.
  
  If the action code is <info>SQLite3::READ</info> and the callback returns <info>SQLite3::IGNORE</info> then the prepared
  statement is constructed to substitute a <info>null</info> value in place of the table column that would have
  been read if <info>SQLite3::OK</info> had been returned. The <info>SQLite3::IGNORE</info> return can be used to deny an
  untrusted user access to individual columns of a table.
  
  When a table is referenced by a <return>SELECT</return> but no column values are extracted from that table (for
  example in a query like <return>"SELECT count(*) FROM table"</return>) then the <info>SQLite3::READ</info> authorizer callback
  is invoked once for that table with a column name that is an empty string.
  
  If the action code is <info>SQLite3::DELETE</info> and the callback returns <info>SQLite3::IGNORE</info> then the DELETE
  operation proceeds but the truncate optimization is disabled and all rows are deleted
  individually.
  
  Only a single authorizer can be in place on a database connection at a time. Each call to
  SQLite3::setAuthorizer overrides the previous call. Disable the authorizer by installing a <info>null</info>
  callback. The authorizer is disabled by default.
  
  The authorizer callback must not do anything that will modify the database connection that invoked
  the authorizer callback.
  
  Note that the authorizer is only called when a statement is prepared, not when it's executed.
  
  More details can be found in the SQLite3 documentation.

<comment>Param:</comment>
  <info>callable|null</info>  <strong>$callback</strong>  The <info>callable</info> to be called.
                            
                            If <info>null</info> is passed instead, this will disable the current authorizer
                            callback.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


