# php_manual

id: pg_meta_data
type: function
doc:
<comment>Description:</comment>
  获得表的元数据
    
  
  <strong>pg_metadata()</strong> 以数组形式返回 <return>table_name</return> 的表定义。

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  <class>PgSql\Connection</class> 实例。
  <info>string</info>            <strong>$table_name</strong>  表名。
  <info>bool</info>              <strong>$extended</strong>    用于返回扩展元数据的 flag。默认为 <info>false</info>。

<comment>Return:</comment>
  <info>array|false</info>  以 <info>array</info> 形式返回表定义， 或者在失败时返回 <info>false</info>。

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


id: pg_num_fields
type: function
doc:
<comment>Description:</comment>
  返回结果中字段的数量
  
  <strong>pg_num_fields()</strong> 返回 <class>PgSql\Result</class> 实例中字段（列）的数量。
  
  本函数以前的名字为 <strong>pg_numfields()</strong>。

<comment>Param:</comment>
  <info>PgSql\Result</info>  <strong>$result</strong>  <class>PgSql\Result</class> 实例，由
                         <strong>pg_query()</strong>、<strong>pg_query_params()</strong> 或者 <strong>pg_execute()</strong>（等）返回。

<comment>Return:</comment>
  <info>int</info>  结果中的字段（列）的数量。错误时返回 -1。

<comment>See Also:</comment>
   * <strong>pg_num_rows()</strong>
   * <strong>pg_affected_rows()</strong>


id: pg_num_rows
type: function
doc:
<comment>Description:</comment>
  返回结果中行的数量
  
  <strong>pg_num_rows()</strong> 返回 <class>PgSql\Result</class> 实例中的行的数量。
  
  本函数以前的名字为 <strong>pg_numrows()</strong>。

<comment>Param:</comment>
  <info>PgSql\Result</info>  <strong>$result</strong>  <class>PgSql\Result</class> 实例，由
                         <strong>pg_query()</strong>、<strong>pg_query_params()</strong> 或者 <strong>pg_execute()</strong>（等）返回。

<comment>Return:</comment>
  <info>int</info>  结果中行的数量。错误时返回 <return>-1</return>。

<comment>See Also:</comment>
   * <strong>pg_num_fields()</strong>
   * <strong>pg_affected_rows()</strong>


id: pg_options
type: function
doc:
<comment>Description:</comment>
  获得和 connection 相关的选项
  
  <strong>pg_options()</strong> 将返回字符串，包含指定 PostgreSQL <strong>$connection</strong> 实例的特定选项。

<comment>Param:</comment>
  <info>PgSql\Connection|null</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                      When <strong>$connection</strong> is <info>null</info>, the default connection is used.
                                      The default connection is the last connection made by
                                      <strong>pg_connect()</strong>
                                      or <strong>pg_pconnect()</strong>.
                                      As of PHP 8.1.0, using the default connection is deprecated.
                                      
                                      As of PHP 8.1.0, using the default connection is deprecated.

<comment>Return:</comment>
  <info>string</info>  包含 <strong>$connection</strong> 选项的 <info>string</info>。

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


id: pg_parameter_status
type: function
doc:
<comment>Description:</comment>
  Looks up a current parameter setting of the server
  
  Looks up a current parameter setting of the server.
  
  Certain parameter values are reported by the server automatically at  connection startup or
  whenever their values change. <strong>pg_parameter_status()</strong> can be  used to interrogate these settings. It
  returns the current value of a  parameter if known, or <info>false</info> if the parameter is not known.
  
  Parameters reported as of PostgreSQL 8.0 include <return>server_version</return>,  <return>server_encoding</return>,
  <return>client_encoding</return>,  <return>is_superuser</return>, <return>session_authorization</return>,  <return>DateStyle</return>, <return>TimeZone</return>, and
  <return>integer_datetimes</return>. (<return>server_encoding</return>, <return>TimeZone</return>, and  <return>integer_datetimes</return> were not reported by
  releases before 8.0.) Note that  <return>server_version</return>, <return>server_encoding</return> and <return>integer_datetimes</return>  cannot
  change after PostgreSQL startup.
  
  PostgreSQL 7.3 or lower servers do not report parameter settings, <strong>pg_parameter_status()</strong> includes
  logic to obtain values for <return>server_version</return> and  <return>client_encoding</return> anyway. Applications are encouraged
  to use <strong>pg_parameter_status()</strong> rather than ad  hoc code to determine these values.
  
  On a pre-7.4 PostgreSQL server, changing <return>client_encoding</return> via <return>SET</return> after connection startup will
  not be reflected by <strong>pg_parameter_status()</strong>.

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                 When <strong>$connection</strong> is unspecified, the default connection is used.
                                 The default connection is the last connection made by <strong>pg_connect()</strong>
                                 or <strong>pg_pconnect()</strong>.
                                 As of PHP 8.1.0, using the default connection is deprecated.
                                 
                                 As of PHP 8.1.0, using the default connection is deprecated.
  <info>string</info>            <strong>$param_name</strong>  Possible <strong>$param_name</strong> values include <return>server_version</return>,
                                 <return>server_encoding</return>, <return>client_encoding</return>,  <return>is_superuser</return>,
                                 <return>session_authorization</return>,  <return>DateStyle</return>, <return>TimeZone</return>, and
                                 <return>integer_datetimes</return>.  Note that this value is case-sensitive.

<comment>Return:</comment>
  <info>string</info>  A <info>string</info> containing the value of the parameter, <info>false</info> on failure or invalid <strong>$param_name</strong>.


id: pg_pconnect
type: function
doc:
<comment>Description:</comment>
  打开一个持久的 PostgreSQL 连接
  
  <strong>pg_pconnect()</strong> 打开一个到 PostgreSQL 数据库的持久连接。返回其它 PostgreSQL 函数所需要的
  <class>PgSql\Connection</class> 实例。
  
  如果使用与已有连接相同的 <strong>$connection_string</strong> 对 <strong>pg_pconnect()</strong> 进行第二次调用，则将返回已有连接，除
  非将 <info>PGSQL_CONNECT_FORCE_NEW</info> 传递给 <strong>$flags</strong>。
  
  要打开持久连接功能，php.ini 中的 pgsql.allow_persistent 参数必须为 "On"（也是默认值）。最大持久连
  接数目由 php.ini 中的 pgsql.max_persistent 参数定义（默认为 -1 表示没有限制）。所有连接的数目可由
  php.ini 中的 pgsql.max_links 参数设置。
  
  <strong>pg_close()</strong> 不能关闭由 <strong>pg_pconnect()</strong> 打开的持久连接。

<comment>Param:</comment>
  <info>string</info>  <strong>$connection_string</strong>  <strong>$connection_string</strong> 可以为空以使用所有默认参数，也可以包含一个或多个由
                              空格分隔的参数设置。每个参数设置的形式为 <return>keyword = value</return>。等号旁边的空
                              格是可选的。要写入空值或包含空格的值，请用单引号将其括起来，例如，
                              <return>keyword =  'a value'</return>。值中的单引号和反斜线必须用反斜线转义，即 \' 和
                              \\。
                              
                              当前可识别的参数关键字是：<strong>$host</strong>、<strong>$hostaddr</strong>、<strong>$port</strong>、<strong>$dbname</strong>、<strong>$user</strong>、
                              <strong>$password</strong>、<strong>$connect_timeout</strong>、<strong>$options</strong>、<strong>$tty</strong>（已忽略）、<strong>$sslmode</strong>、
                              <strong>$requiressl</strong>（已弃用以支持 <strong>$sslmode</strong>）和 <strong>$service</strong>。存在哪些参数取决于
                              PostgreSQL 版本。
  <info>int</info>     <strong>$flags</strong>              如果传递了 <info>PGSQL_CONNECT_FORCE_NEW</info>，则会创建新连接，即使
                              <strong>$connection_string</strong> 与现有连接相同。

<comment>Return:</comment>
  <info>PgSql\Connection|false</info>  成功时返回 <class>PgSql\Connection</class> 实例， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>pg_connect()</strong>
   * 持久数据库连接


id: pg_ping
type: function
doc:
<comment>Description:</comment>
  Ping 数据库连接
  
  <strong>pg_ping()</strong> ping 数据库连接，如果中断则尝试重新连接。

<comment>Param:</comment>
  <info>PgSql\Connection|null</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                      When <strong>$connection</strong> is <info>null</info>, the default connection is used.
                                      The default connection is the last connection made by
                                      <strong>pg_connect()</strong>
                                      or <strong>pg_pconnect()</strong>.
                                      As of PHP 8.1.0, using the default connection is deprecated.
                                      
                                      As of PHP 8.1.0, using the default connection is deprecated.

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

<comment>See Also:</comment>
   * <strong>pg_connection_status()</strong>
   * <strong>pg_connection_reset()</strong>


id: pg_port
type: function
doc:
<comment>Description:</comment>
  返回 connection 相关的端口号
    
  
  <strong>pg_port()</strong> 返回连接指定 PostgreSQL <strong>$connection</strong> 实例的端口号。

<comment>Param:</comment>
  <info>PgSql\Connection|null</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                      When <strong>$connection</strong> is <info>null</info>, the default connection is used.
                                      The default connection is the last connection made by
                                      <strong>pg_connect()</strong>
                                      or <strong>pg_pconnect()</strong>.
                                      As of PHP 8.1.0, using the default connection is deprecated.
                                      
                                      As of PHP 8.1.0, using the default connection is deprecated.

<comment>Return:</comment>
  <info>string</info>  <info>string</info>，包含 <strong>$connection</strong> 连接到的数据库服务器的端口号，错误时为空字符串。


id: pg_prepare
type: function
doc:
<comment>Description:</comment>
  Submits a request to create a prepared statement with the 
    given parameters, and waits for completion
  
  <strong>pg_prepare()</strong> creates a prepared statement for later execution with  <strong>pg_execute()</strong> or
  <strong>pg_send_execute()</strong>.  This feature allows commands that will be used repeatedly to  be parsed and
  planned just once, rather than each time they are executed.  <strong>pg_prepare()</strong> is supported only
  against PostgreSQL 7.4 or higher connections; it will fail when using earlier versions.
  
  The function creates a prepared statement named <strong>$stmtname</strong> from the <strong>$query</strong>  string, which must
  contain a single SQL command. <strong>$stmtname</strong> may be "" to  create an unnamed statement, in which case
  any pre-existing unnamed  statement is automatically replaced; otherwise it is an error if the
  statement name is already defined in the current session. If any parameters  are used, they are
  referred to in the <strong>$query</strong> as $1, $2, etc.
  
  Prepared statements for use with <strong>pg_prepare()</strong> can also be created by  executing SQL <return>PREPARE</return>
  statements. (But <strong>pg_prepare()</strong> is more flexible since it  does not require parameter types to be
  pre-specified.) Also, although there  is no PHP function for deleting a prepared statement, the
  SQL <return>DEALLOCATE</return> statement can be used for that purpose.

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                 When <strong>$connection</strong> is unspecified, the default connection is used.
                                 The default connection is the last connection made by <strong>pg_connect()</strong>
                                 or <strong>pg_pconnect()</strong>.
                                 As of PHP 8.1.0, using the default connection is deprecated.
                                 
                                 As of PHP 8.1.0, using the default connection is deprecated.
  <info>string</info>            <strong>$stmtname</strong>    The name to give the prepared statement.  Must be unique
                                 per-connection.  If "" is specified, then an unnamed statement is
                                 created, overwriting any previously defined unnamed statement.
  <info>string</info>            <strong>$query</strong>       The parameterized SQL statement.  Must contain only a single
                                 statement. (multiple statements separated by semi-colons are not
                                 allowed.)  If any parameters  are used, they are referred to as $1,
                                 $2, etc.

<comment>Return:</comment>
  <info>PgSql\Result|false</info>  An <class>PgSql\Result</class> instance on success,  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>pg_execute()</strong>
   * <strong>pg_send_execute()</strong>


id: pg_put_line
type: function
doc:
<comment>Description:</comment>
  向 PostgreSQL 后端发送以 NULL 字符结尾的字符串
  
  <strong>pg_put_line()</strong> 向 PostgreSQL 后端服务器发送以 NULL 字符结尾的字符串。这需要与 PostgreSQL 的 <return>COPY
  FROM</return> 命令结合使用。
  
  <return>COPY</return> 是 PostgreSQL 支持的高速数据加载接口。数据在传入时不会解析且在单个事务中。
  
  使用原生 <strong>pg_put_line()</strong> 命令的替代方法是使用 <strong>pg_copy_from()</strong>。这是一个简单得多的接口。
  
  应用程序必须明确地在 <strong>pg_end_copy()</strong> 之前最后一行发送两个字符“\.”来向后端表明发送数据结束。
  
  Use of the <strong>pg_put_line()</strong> causes most large object operations, including <strong>pg_lo_read()</strong> and
  <strong>pg_lo_tell()</strong>, to subsequently fail. You can use <strong>pg_copy_from()</strong> and <strong>pg_copy_to()</strong> instead.

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                 When <strong>$connection</strong> is unspecified, the default connection is used.
                                 The default connection is the last connection made by <strong>pg_connect()</strong>
                                 or <strong>pg_pconnect()</strong>.
                                 As of PHP 8.1.0, using the default connection is deprecated.
                                 
                                 As of PHP 8.1.0, using the default connection is deprecated.
  <info>string</info>            <strong>$data</strong>        要直接发送到 PostgreSQL 后端的一行文本。自动添加 <return>NULL</return> 终止符。

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

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


id: pg_query
type: function
doc:
<comment>Description:</comment>
  执行查询
  
  <strong>pg_query()</strong> 在特定数据库 <strong>$connection</strong> 上执行 <strong>$query</strong>。<strong>pg_query_params()</strong> 在大多数情况下应该是首选。
  
  如果发生错误并返回 <info>false</info>，那么在连接有效时可以使用 <strong>pg_last_error()</strong> 函数检索错误的详细信息。
  
   尽管可以省略 <strong>$connection</strong>，但不建议这样做，因为可能会导致脚本中的错误难以发现。 
  
  尽管可以省略 <strong>$connection</strong>，但不建议这样做，因为可能会导致脚本中的错误难以发现。
  
  本函数以前的名字为 <strong>pg_exec()</strong>。<strong>pg_exec()</strong> 因为兼容性原因仍可使用，但鼓励用户使用新名称。

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                 When <strong>$connection</strong> is unspecified, the default connection is used.
                                 The default connection is the last connection made by <strong>pg_connect()</strong>
                                 or <strong>pg_pconnect()</strong>.
                                 As of PHP 8.1.0, using the default connection is deprecated.
                                 
                                 As of PHP 8.1.0, using the default connection is deprecated.
  <info>string</info>            <strong>$query</strong>       要执行的 SQL 语句。当多个语句传递给函数时，将作为一个事务自动执行，
                                 除非查询字符串中包含明确的 BEGIN/COMMIT 命令。但是，不建议在一个函
                                 数调用中使用多个事务。
                                 
                                 用户提供的数据作为字符串插入值非常危险，很可能导致 SQL 注入漏洞。在
                                 大多数情况下，应该首选 <strong>pg_query_params()</strong>，将用户提供的值作为参数传
                                 递，而不是将它们替换为查询字符串。
                                 
                                 任何用户提供的数据，都应该正确转义，然后直接替换为查询字符串。

<comment>Return:</comment>
  <info>PgSql\Result|false</info>  成功时为 <class>PgSql\Result</class> 实例， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>pg_connect()</strong>
   * <strong>pg_pconnect()</strong>
   * <strong>pg_fetch_array()</strong>
   * <strong>pg_fetch_object()</strong>
   * <strong>pg_num_rows()</strong>
   * <strong>pg_affected_rows()</strong>


id: pg_query_params
type: function
doc:
<comment>Description:</comment>
  Submits a command to the server and waits for the result, with the ability to pass parameters
  separately from the SQL command text
  
  Submits a command to the server and waits for the result, with the ability  to pass parameters
  separately from the SQL command text.
  
  <strong>pg_query_params()</strong> is like <strong>pg_query()</strong>,  but offers additional functionality: parameter  values can
  be specified separately from the command string proper.  <strong>pg_query_params()</strong> is supported only
  against PostgreSQL 7.4 or higher connections; it will fail when using earlier versions.
  
  If parameters are used, they are referred to in the <strong>$query</strong> string as $1, $2, etc. The same
  parameter may appear more than once in the <strong>$query</strong>; the same value will be used in that case.
  <strong>$params</strong> specifies the actual values of the parameters. A <info>null</info> value in this array means the
  corresponding parameter is SQL <return>NULL</return>.
  
  The primary advantage of <strong>pg_query_params()</strong> over <strong>pg_query()</strong>  is that parameter values  may be
  separated from the <strong>$query</strong> string, thus avoiding the need for tedious  and error-prone quoting and
  escaping. Unlike <strong>pg_query()</strong>,  <strong>pg_query_params()</strong> allows at  most one SQL command in the given
  string. (There can be semicolons in it,  but not more than one nonempty command.)

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                 When <strong>$connection</strong> is unspecified, the default connection is used.
                                 The default connection is the last connection made by <strong>pg_connect()</strong>
                                 or <strong>pg_pconnect()</strong>.
                                 As of PHP 8.1.0, using the default connection is deprecated.
                                 
                                 As of PHP 8.1.0, using the default connection is deprecated.
  <info>string</info>            <strong>$query</strong>       The parameterized SQL statement.  Must contain only a single
                                 statement. (multiple statements separated by semi-colons are not
                                 allowed.)  If any parameters  are used, they are referred to as $1,
                                 $2, etc.
                                 
                                 User-supplied values should always be passed as parameters, not
                                 interpolated into the query string, where they form possible  SQL
                                 injection attack vectors and introduce bugs when handling data
                                 containing quotes. If for some reason you cannot use a parameter,
                                 ensure that interpolated values are properly escaped.
  <info>array</info>             <strong>$params</strong>      An array of parameter values to substitute for the $1, $2, etc.
                                 placeholders in the original prepared query string.  The number of
                                 elements in the array must match the number of placeholders.
                                 
                                 Values intended for <return>bytea</return> fields are not supported as parameters.
                                 Use <strong>pg_escape_bytea()</strong> instead, or use the large object functions.

<comment>Return:</comment>
  <info>PgSql\Result|false</info>  An <class>PgSql\Result</class> instance on success,  或者在失败时返回 <info>false</info>.

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


id: pg_result_error
type: function
doc:
<comment>Description:</comment>
  获得跟 result 相关的错误信息
    
  
  <strong>pg_result_error()</strong> 返回和 <strong>$result</strong> 实例关联的错误信息。因此用户更有机会可以得到比 <strong>pg_last_error()</strong> 更
  好的错误信息。
  
  函数 <strong>pg_result_error_field()</strong> 可以比 <strong>pg_result_error()</strong> 给出更多关于 result 错误的细节。
  
  因为如果查询失败 <strong>pg_query()</strong> 返回 <info>false</info>，必须使用 <strong>pg_send_query()</strong> 和 <strong>pg_get_result()</strong> 来获取 result
  句柄。

<comment>Param:</comment>
  <info>PgSql\Result</info>  <strong>$result</strong>  <class>PgSql\Result</class> 实例，由
                         <strong>pg_query()</strong>、<strong>pg_query_params()</strong> 或者 <strong>pg_execute()</strong>（等）返回。

<comment>Return:</comment>
  <info>string|false</info>  返回 <info>string</info>。如果没有错误返回空字符串。如果有跟 <strong>$result</strong> 参数相关的错误，则返回
                <info>false</info>。

<comment>See Also:</comment>
   * <strong>pg_result_error_field()</strong>
   * <strong>pg_query()</strong>
   * <strong>pg_send_query()</strong>
   * <strong>pg_get_result()</strong>
   * <strong>pg_last_error()</strong>
   * <strong>pg_last_notice()</strong>


id: pg_result_error_field
type: function
doc:
<comment>Description:</comment>
  Returns an individual field of an error report
  
  <strong>pg_result_error_field()</strong> returns one of the detailed error message fields associated with <strong>$result</strong>
  instance. It is only available against a PostgreSQL 7.4 or above server.  The error field is
  specified by the <strong>$field_code</strong>.
  
  Because <strong>pg_query()</strong> and <strong>pg_query_params()</strong> return <info>false</info> if the query fails, you must use
  <strong>pg_send_query()</strong> and <strong>pg_get_result()</strong> to get the result handle.
  
  If you need to get additional error information from failed <strong>pg_query()</strong> queries,   use
  <strong>pg_set_error_verbosity()</strong> and <strong>pg_last_error()</strong> and then parse the result.

<comment>Param:</comment>
  <info>PgSql\Result</info>  <strong>$result</strong>      <class>PgSql\Result</class> 实例，由
                             <strong>pg_query()</strong>、<strong>pg_query_params()</strong> 或者 <strong>pg_execute()</strong>（等）返回。
  <info>int</info>           <strong>$field_code</strong>  Possible <strong>$field_code</strong> values are: <info>PGSQL_DIAG_SEVERITY</info>,
                             <info>PGSQL_DIAG_SQLSTATE</info>, <info>PGSQL_DIAG_MESSAGE_PRIMARY</info>,
                             <info>PGSQL_DIAG_MESSAGE_DETAIL</info>, <info>PGSQL_DIAG_MESSAGE_HINT</info>,
                             <info>PGSQL_DIAG_STATEMENT_POSITION</info>, <info>PGSQL_DIAG_INTERNAL_POSITION</info> (PostgreSQL
                             8.0+ only), <info>PGSQL_DIAG_INTERNAL_QUERY</info> (PostgreSQL 8.0+ only),
                             <info>PGSQL_DIAG_CONTEXT</info>, <info>PGSQL_DIAG_SOURCE_FILE</info>, <info>PGSQL_DIAG_SOURCE_LINE</info> or
                             <info>PGSQL_DIAG_SOURCE_FUNCTION</info>.

<comment>Return:</comment>
  <info>string|false|null</info>  A <info>string</info> containing the contents of the error field, <info>null</info> if the field does not
                     exist or <info>false</info> on failure.

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


id: pg_result_seek
type: function
doc:
<comment>Description:</comment>
  在 result 实例中设定内部行偏移量
  
  <strong>pg_result_seek()</strong> 在 <strong>$result</strong> 实例中设定内部行偏移量。

<comment>Param:</comment>
  <info>PgSql\Result</info>  <strong>$result</strong>  <class>PgSql\Result</class> 实例，由
                         <strong>pg_query()</strong>、<strong>pg_query_params()</strong> 或者 <strong>pg_execute()</strong>（等）返回。
  <info>int</info>           <strong>$row</strong>     在 <class>PgSql\Result</class> 实例中将内部偏移量移动到的行。行号从零开始。

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

<comment>See Also:</comment>
   * <strong>pg_fetch_row()</strong>
   * <strong>pg_fetch_assoc()</strong>
   * <strong>pg_fetch_array()</strong>
   * <strong>pg_fetch_object()</strong>
   * <strong>pg_fetch_result()</strong>


id: pg_result_status
type: function
doc:
<comment>Description:</comment>
  获得查询结果的状态
    
  
  <strong>pg_result_status()</strong> 返回 <class>PgSql\Result</class> 实例的状态，或者与 result 相关的 PostgreSQL 命令完成标记。

<comment>Param:</comment>
  <info>PgSql\Result</info>  <strong>$result</strong>  <class>PgSql\Result</class> 实例，由
                         <strong>pg_query()</strong>、<strong>pg_query_params()</strong> 或者 <strong>pg_execute()</strong>（等）返回。
  <info>int</info>           <strong>$mode</strong>    要么指定 <info>PGSQL_STATUS_LONG</info> 返回 <strong>$result</strong> 的数字状态，要么指定
                         <info>PGSQL_STATUS_STRING</info>  返回 <strong>$result</strong> 的命令标记。如果未指定，默认是
                         <info>PGSQL_STATUS_LONG</info>。

<comment>Return:</comment>
  <info>string|int</info>  如果指定 <info>PGSQL_STATUS_LONG</info>，可能返回的值是 <info>PGSQL_EMPTY_QUERY</info>、<info>PGSQL_COMMAND_OK</info>、
              <info>PGSQL_TUPLES_OK</info>、<info>PGSQL_COPY_OUT</info>、<info>PGSQL_COPY_IN</info>、<info>PGSQL_BAD_RESPONSE</info>、
              <info>PGSQL_NONFATAL_ERROR</info> 和 <info>PGSQL_FATAL_ERROR</info>。否则，返回包含 PostgreSQL 命令标记的
              <info>string</info>。

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


id: pg_select
type: function
doc:
<comment>Description:</comment>
  选择记录
    
  
  <strong>pg_select()</strong> 根据 <return>conditions</return> 数组中的 <return>field=&gt;value</return> 值来选择记录。成功的查询返回和 <return>conditions</return> 指
  定的条件相匹配的包括记录和字段的数组。
  
  如果设置了 <return>flags</return>，<strong>pg_convert()</strong> 会按照指定 flag 作用于 <return>conditions</return> 上。
  
  如果设置了 <strong>$mode</strong>，返回值将以数组形式返回，其中使用 <info>PGSQL_NUM</info> 表示索引数组，使用 <info>PGSQL_ASSOC</info> 表示关
  联数组（默认），或者同时使用 <info>PGSQL_BOTH</info> 表示两者。
  
  默认情况下 <strong>pg_select()</strong> 传递原始值。值必须转义或指定 PGSQL_DML_ESCAPE。PGSQL_DML_ESCAPE 引用并转义
  参数/标识符。因此，表/列名称变得区分大小写。
  
  注意转义和预处理查询都不能保护 LIKE 查询、JSON、Array、Regex 等，这些参数要根据上下文来处理。即转
  义/验证值。

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  <class>PgSql\Connection</class> 实例。
  <info>string</info>            <strong>$table_name</strong>  要选择记录的表名。
  <info>array</info>             <strong>$conditions</strong>  <info>array</info>，其键是表 <strong>$table_name</strong> 中的字段名称，其值是检索记录必须满足的
                                 条件。
  <info>int</info>               <strong>$flags</strong>       任意数量的 <info>PGSQL_CONV_FORCE_NULL</info>、<info>PGSQL_DML_NO_CONV</info>、
                                 <info>PGSQL_DML_ESCAPE</info>、<info>PGSQL_DML_EXEC</info>、<info>PGSQL_DML_ASYNC</info> 或
                                 <info>PGSQL_DML_STRING</info> 的组合。当 <info>PGSQL_DML_STRING</info> 是 <strong>$flags</strong> 的一部分，然
                                 后将返回查询字符串。当设置了 <info>PGSQL_DML_NO_CONV</info> 或 <info>PGSQL_DML_ESCAPE</info>
                                 时，不会在内部调用 <strong>pg_convert()</strong>。
  <info>int</info>               <strong>$mode</strong>        <info>PGSQL_ASSOC</info>、<info>PGSQL_NUM</info> 或 <info>PGSQL_BOTH</info> 中的一个。 如果设置了
                                 <info>PGSQL_ASSOC</info>，返回值将是关联 <info>array</info>；如果设置了 <info>PGSQL_NUM</info>，返回值将是
                                 索引 <info>array</info>；如果设置了 <info>PGSQL_BOTH</info>，返回值将是同时包含关联和索引的
                                 <info>array</info>。

<comment>Return:</comment>
  <info>array|string|false</info>  成功时，如果通过 <strong>$flags</strong> 传递 <info>PGSQL_DML_STRING</info>，返回 <info>string</info>，否则返回 <info>array</info>，
                      或者在失败时返回 <info>false</info>。

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


id: pg_send_execute
type: function
doc:
<comment>Description:</comment>
  Sends a request to execute a prepared statement with given parameters, without waiting for the
  result(s)
  
  Sends a request to execute a prepared statement with given parameters,  without waiting for the
  result(s).
  
  This is similar to <strong>pg_send_query_params()</strong>, but the command to be executed is specified  by naming
  a previously-prepared statement, instead of giving a query string. The  function's parameters are
  handled identically to <strong>pg_execute()</strong>.  Like <strong>pg_execute()</strong>, it will not work on pre-7.4 versions of
  PostgreSQL.

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>      <class>PgSql\Connection</class> 实例。
  <info>string</info>            <strong>$statement_name</strong>  The name of the prepared statement to execute.  If "" is
                                     specified, then the unnamed statement is executed.  The name
                                     must have been previously prepared using <strong>pg_prepare()</strong>,
                                     <strong>pg_send_prepare()</strong> or a <return>PREPARE</return> SQL command.
  <info>array</info>             <strong>$params</strong>          An array of parameter values to substitute for the $1, $2, etc.
                                     placeholders in the original prepared query string.  The number
                                     of elements in the array must match the number of placeholders.

<comment>Return:</comment>
  <info>int|bool</info>  Returns <info>true</info> on success, <info>false</info> or <return>0</return> on failure.  Use <strong>pg_get_result()</strong> to determine the
            query result.

<comment>See Also:</comment>
   * <strong>pg_prepare()</strong>
   * <strong>pg_send_prepare()</strong>
   * <strong>pg_execute()</strong>


id: pg_send_prepare
type: function
doc:
<comment>Description:</comment>
  Sends a request to create a prepared statement with the given parameters, without waiting for
  completion
  
  Sends a request to create a prepared statement with the given parameters,  without waiting for
  completion.
  
  This is an asynchronous version of <strong>pg_prepare()</strong>: it returns <info>true</info> if it was able to  dispatch the
  request, and <info>false</info> if not. After a successful call, call  <strong>pg_get_result()</strong> to determine whether the
  server successfully created the  prepared statement. The function's parameters are handled
  identically to  <strong>pg_prepare()</strong>. Like <strong>pg_prepare()</strong>, it will not work  on pre-7.4 versions of
  PostgreSQL.

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>      <class>PgSql\Connection</class> 实例。
  <info>string</info>            <strong>$statement_name</strong>  The name to give the prepared statement.  Must be unique
                                     per-connection.  If "" is specified, then an unnamed statement
                                     is created, overwriting any previously defined unnamed
                                     statement.
  <info>string</info>            <strong>$query</strong>           The parameterized SQL statement.  Must contain only a single
                                     statement. (multiple statements separated by semi-colons are
                                     not allowed.)  If any parameters  are used, they are referred
                                     to as $1, $2, etc.

<comment>Return:</comment>
  <info>int|bool</info>  Returns <info>true</info> on success, <info>false</info> or <return>0</return> on failure.  Use <strong>pg_get_result()</strong> to determine the
            query result.

<comment>See Also:</comment>
   * <strong>pg_connect()</strong>
   * <strong>pg_pconnect()</strong>
   * <strong>pg_execute()</strong>
   * <strong>pg_send_execute()</strong>
   * <strong>pg_send_query_params()</strong>


id: pg_send_query
type: function
doc:
<comment>Description:</comment>
  发送异步查询
    
  
  <strong>pg_send_query()</strong> 向 <strong>$connection</strong> 发送异步查询。跟 <strong>pg_query()</strong> 不同，它可以一次性向 PostgreSQL 发送多
  个查询并用 <strong>pg_get_result()</strong> 依次得到结果。
  
  当执行查询时不会阻塞脚本执行。用 <strong>pg_connection_busy()</strong> 来检查连接是否繁忙（即查询正在执行中）。可以
  使用 <strong>pg_cancel_query()</strong> 取消查询。
  
  尽管用户可以同时发送多个查询，但连接繁忙的情况下无法发送多个查询。如果连接繁忙时发送了查询，则会等
  待上一个查询结束，并且丢弃上个查询的所有结果。

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  <class>PgSql\Connection</class> 实例。
  <info>string</info>            <strong>$query</strong>       要执行的 SQL 语句或者语句集合。
                                 
                                 应该正确转义查询中的数据。

<comment>Return:</comment>
  <info>int|bool</info>  成功时返回 <info>true</info>，失败时返回 <info>false</info> 或 <return>0</return>。使用 <strong>pg_get_result()</strong> 来确定查询结果。

<comment>See Also:</comment>
   * <strong>pg_query()</strong>
   * <strong>pg_cancel_query()</strong>
   * <strong>pg_get_result()</strong>
   * <strong>pg_connection_busy()</strong>


id: pg_send_query_params
type: function
doc:
<comment>Description:</comment>
  Submits a command and separate parameters to the server without waiting for the result(s)
  
  Submits a command and separate parameters to the server without  waiting for the result(s).
  
  This is equivalent to <strong>pg_send_query()</strong> except that query  parameters can be specified separately
  from the  <strong>$query</strong> string. The function's parameters are  handled identically to <strong>pg_query_params()</strong>.
  Like  <strong>pg_query_params()</strong>, it will not work on pre-7.4 PostgreSQL  connections, and it allows only
  one command in the query string.

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  <class>PgSql\Connection</class> 实例。
  <info>string</info>            <strong>$query</strong>       The parameterized SQL statement.  Must contain only a single
                                 statement. (multiple statements separated by semi-colons are not
                                 allowed.)  If any parameters  are used, they are referred to as $1,
                                 $2, etc.
  <info>array</info>             <strong>$params</strong>      An array of parameter values to substitute for the $1, $2, etc.
                                 placeholders in the original prepared query string.  The number of
                                 elements in the array must match the number of placeholders.

<comment>Return:</comment>
  <info>int|bool</info>  Returns <info>true</info> on success, <info>false</info> or <return>0</return> on failure.  Use <strong>pg_get_result()</strong> to determine the
            query result.

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


id: pg_set_client_encoding
type: function
doc:
<comment>Description:</comment>
  设定客户端编码
    
  
  <strong>pg_set_client_encoding()</strong> 设定客户端编码，成功返回 0，出错返回 -1。
  
  PostgreSQL 会自动将后端数据库编码中的数据转换成前端编码。
  
  本函数以前的名字为 <strong>pg_setclientencoding()</strong>。

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                 When <strong>$connection</strong> is unspecified, the default connection is used.
                                 The default connection is the last connection made by <strong>pg_connect()</strong>
                                 or <strong>pg_pconnect()</strong>.
                                 As of PHP 8.1.0, using the default connection is deprecated.
                                 
                                 As of PHP 8.1.0, using the default connection is deprecated.
  <info>string</info>            <strong>$encoding</strong>    必需的客户端编码。<return>SQL_ASCII</return>、<return>EUC_JP</return>、<return>EUC_CN</return>、<return>EUC_KR</return>、<return>EUC_TW</return>、
                                 <return>UNICODE</return>、<return>MULE_INTERNAL</return>、<return>LATINX</return> (X=1...9)、<return>KOI8</return>、<return>WIN</return>、<return>ALT</return>、<return>SJIS</return>、
                                 <return>BIG5</return> 或 <return>WIN1250</return> 中的一个。
                                 
                                 确切有效的编码列表取决于 PostgreSQL 版本，因此查阅 PostgreSQL 手册
                                 获取更具体的列表。

<comment>Return:</comment>
  <info>int</info>  成功时返回 <return>0</return> 失败时返回 <return>-1</return>。

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


id: pg_set_error_context_visibility
type: function
doc:
<comment>Description:</comment>
  Determines the visibility of the context's error messages returned by pg_last_error
     and pg_result_error
    
  
  Determines the visibility of the context's error messages returned by <strong>pg_last_error()</strong> and
  <strong>pg_result_error()</strong>

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  <class>PgSql\Connection</class> 实例。
  <info>int</info>               <strong>$visibility</strong>  The required visibility: <info>PGSQL_SHOW_CONTEXT_NEVER</info>,
                                 <info>PGSQL_SHOW_CONTEXT_ERRORS</info> or <info>PGSQL_SHOW_CONTEXT_ALWAYS</info>.

<comment>Return:</comment>
  <info>int</info>  The previous visibility level: <info>PGSQL_SHOW_CONTEXT_NEVER</info>, <info>PGSQL_SHOW_CONTEXT_ERRORS</info> or
       <info>PGSQL_SHOW_CONTEXT_ALWAYS</info>.

<comment>See Also:</comment>
   * <strong>pg_last_error()</strong>
   * <strong>pg_result_error()</strong>


id: pg_set_error_verbosity
type: function
doc:
<comment>Description:</comment>
  Determines the verbosity of messages returned by pg_last_error 
     and pg_result_error
    
  
  Determines the verbosity of messages returned by <strong>pg_last_error()</strong>  and <strong>pg_result_error()</strong>.
  
  <strong>pg_set_error_verbosity()</strong> sets the verbosity mode, returning the connection's previous  setting. In
  <info>PGSQL_ERRORS_TERSE</info> mode, returned messages include severity, primary text, and  position only;
  this will normally fit on a single line. The default mode (<info>PGSQL_ERRORS_DEFAULT</info>) produces messages
  that include the above plus any detail, hint, or context  fields (these may span multiple lines).
  The <info>PGSQL_ERRORS_VERBOSE</info> mode includes all available  fields. Changing the verbosity does not
  affect the messages available from  already-existing result objects, only subsequently-created
  ones.

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                 When <strong>$connection</strong> is unspecified, the default connection is used.
                                 The default connection is the last connection made by <strong>pg_connect()</strong>
                                 or <strong>pg_pconnect()</strong>.
                                 As of PHP 8.1.0, using the default connection is deprecated.
                                 
                                 As of PHP 8.1.0, using the default connection is deprecated.
  <info>int</info>               <strong>$verbosity</strong>   The required verbosity: <info>PGSQL_ERRORS_TERSE</info>, <info>PGSQL_ERRORS_DEFAULT</info> or
                                 <info>PGSQL_ERRORS_VERBOSE</info>.

<comment>Return:</comment>
  <info>int</info>  The previous verbosity level: <info>PGSQL_ERRORS_TERSE</info>, <info>PGSQL_ERRORS_DEFAULT</info> or
       <info>PGSQL_ERRORS_VERBOSE</info>.

<comment>See Also:</comment>
   * <strong>pg_last_error()</strong>
   * <strong>pg_result_error()</strong>


id: pg_socket
type: function
doc:
<comment>Description:</comment>
  Get a read only handle to the socket underlying a PostgreSQL connection
    
  
  <strong>pg_socket()</strong> returns a read only <info>resource</info> corresponding to the socket underlying the given
  PostgreSQL connection.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  <class>PgSql\Connection</class> 实例。

<comment>Return:</comment>
  <info>resource|false</info>  A socket resource on success 或者在失败时返回 <info>false</info>.


id: pg_trace
type: function
doc:
<comment>Description:</comment>
  启用 PostgreSQL 连接的追踪
  
  <strong>pg_trace()</strong> 启用 PostgreSQL 前后端通讯的追踪并记录到文件。要完全理解结果，需要熟悉 PostgreSQL 通讯
  协议的内部工作原理。
  
  对不熟悉的人来说，追踪发送到服务器的查询错误依然有用，例如可以用 grep '^To backend' trace.log 来查
  看实际发送到 PostgreSQL 服务器的查询。更多信息参考 PostgreSQL 手册。

<comment>Param:</comment>
  <info>string</info>                 <strong>$filename</strong>    写入追踪日志的文件完整路径和文件名，与 <strong>fopen()</strong> 一致。
  <info>string</info>                 <strong>$mode</strong>        可选的文件访问模式，同 <strong>fopen()</strong>。
  <info>PgSql\Connection|null</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                      When <strong>$connection</strong> is <info>null</info>, the default connection is used.
                                      The default connection is the last connection made by
                                      <strong>pg_connect()</strong>
                                      or <strong>pg_pconnect()</strong>.
                                      As of PHP 8.1.0, using the default connection is deprecated.
                                      
                                      As of PHP 8.1.0, using the default connection is deprecated.

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

<comment>See Also:</comment>
   * <strong>fopen()</strong>
   * <strong>pg_untrace()</strong>


id: pg_transaction_status
type: function
doc:
<comment>Description:</comment>
  Returns the current in-transaction status of the server
  
  Returns the current in-transaction status of the server.
  
  <strong>pg_transaction_status()</strong> will give incorrect results when using a PostgreSQL 7.3 server that has
  the parameter <return>autocommit</return> set to off.  The server-side autocommit feature has been deprecated and
  does not exist in later server versions.

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  <class>PgSql\Connection</class> 实例。

<comment>Return:</comment>
  <info>int</info>  The status can be <info>PGSQL_TRANSACTION_IDLE</info> (currently idle), <info>PGSQL_TRANSACTION_ACTIVE</info> (a
       command is in progress), <info>PGSQL_TRANSACTION_INTRANS</info> (idle, in a valid transaction block), or
       <info>PGSQL_TRANSACTION_INERROR</info> (idle, in a failed transaction block). <info>PGSQL_TRANSACTION_UNKNOWN</info> is
       reported if the connection is bad. <info>PGSQL_TRANSACTION_ACTIVE</info> is reported only when a query has
       been sent to the server and not yet completed.


id: pg_tty
type: function
doc:
<comment>Description:</comment>
  返回跟连接相关的 tty 名
    
  
  <strong>pg_tty()</strong> 返回指定 PostgreSQL <strong>$connection</strong> 实例在服务器端调试输出发送的 tty 名。
  
  <strong>pg_tty()</strong> 已经过时，因为服务器不再关注 TTY 设置，但为了向后兼容性，该函数仍然保留。

<comment>Param:</comment>
  <info>PgSql\Connection|null</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                      When <strong>$connection</strong> is <info>null</info>, the default connection is used.
                                      The default connection is the last connection made by
                                      <strong>pg_connect()</strong>
                                      or <strong>pg_pconnect()</strong>.
                                      As of PHP 8.1.0, using the default connection is deprecated.
                                      
                                      As of PHP 8.1.0, using the default connection is deprecated.

<comment>Return:</comment>
  <info>string</info>  <info>string</info>，包含 <strong>$connection</strong> 的调试 TTY。


id: pg_unescape_bytea
type: function
doc:
<comment>Description:</comment>
  反转义 bytea 类型的二进制数据
    
  
  <strong>pg_unescape_bytea()</strong> 反转义 PostgreSQL bytea 数据值。返回反转义后的字符串，可能包含二进制数据。
  
  当 <return>SELECT</return> bytea 类型时，PostgreSQL 返回前缀为“\”的八进制字节值（例如 \032）。用户需要手动将其转换
  回二进制格式。
  
  本函数需要 PostgreSQL 7.2 及其以后的版本。在 PostgreSQL 7.2.0 和 7.2.1 中，当启用了多字节支持时
  bytea 值必需进行类型转换，例如 <return>INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea);</return> ；
  PostgreSQL 7.2.2 及其以后的版本不需要类型转换。唯一的例外是当客户端和后端的字符编码不匹配时，有可
  能出现多字节流错误。用户必须将其转换为 bytea 来避免此错误。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  <info>string</info>，包含 PostgreSQL bytea 数据，需要转换为 PHP 二进制字符串。

<comment>Return:</comment>
  <info>string</info>  包含反转义数据的 <info>string</info>。

<comment>See Also:</comment>
   * <strong>pg_escape_bytea()</strong>
   * <strong>pg_escape_string()</strong>


id: pg_untrace
type: function
doc:
<comment>Description:</comment>
  禁用 PostgreSQL 连接的追踪
  
  停止由 <strong>pg_trace()</strong> 启用的追踪。

<comment>Param:</comment>
  <info>PgSql\Connection|null</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                      When <strong>$connection</strong> is <info>null</info>, the default connection is used.
                                      The default connection is the last connection made by
                                      <strong>pg_connect()</strong>
                                      or <strong>pg_pconnect()</strong>.
                                      As of PHP 8.1.0, using the default connection is deprecated.
                                      
                                      As of PHP 8.1.0, using the default connection is deprecated.

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

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


id: pg_update
type: function
doc:
<comment>Description:</comment>
  更新表
    
  
  <strong>pg_update()</strong> 更新匹配 <strong>$conditions</strong> 和 <strong>$values</strong> 的记录。
  
  如果指定 <strong>$flags</strong>，则 <strong>pg_convert()</strong> 使用指定 flag 应用于 <strong>$values</strong>。
  
  默认情况下 <strong>pg_update()</strong> 传递原始值。值必须转义或必须在 <strong>$flags</strong> 中指定 <info>PGSQL_DML_ESCAPE</info> flag。
  <info>PGSQL_DML_ESCAPE</info> 引用并转义参数/标识符。因此，表/列名称变得区分大小写。
  
  注意转义和预处理查询都不能保护 LIKE 查询、JSON、Array、Regex 等，这些参数要根据上下文来处理。即转
  义/验证值。

<comment>Param:</comment>
  <info>PgSql\Connection</info>  <strong>$connection</strong>  <class>PgSql\Connection</class> 实例。
  <info>string</info>            <strong>$table_name</strong>  要更新记录的表名。
  <info>array</info>             <strong>$values</strong>      <info>array</info>，其键是表 <strong>$table_name</strong> 中的字段名称，其值是要更新的匹配行。
  <info>array</info>             <strong>$conditions</strong>  <info>array</info>，其键是表 <strong>$table_name</strong> 中的字段名称，其值是更新行必须满足的条
                                 件。
  <info>int</info>               <strong>$flags</strong>       任意数量的 <info>PGSQL_CONV_FORCE_NULL</info>、<info>PGSQL_DML_NO_CONV</info>、
                                 <info>PGSQL_DML_ESCAPE</info>、<info>PGSQL_DML_EXEC</info>、<info>PGSQL_DML_ASYNC</info> 或
                                 <info>PGSQL_DML_STRING</info> 的组合。当 <info>PGSQL_DML_STRING</info> 是 <strong>$flags</strong> 的一部分，然
                                 后将返回查询字符串。当设置了 <info>PGSQL_DML_NO_CONV</info> 或 <info>PGSQL_DML_ESCAPE</info>
                                 时，不会在内部调用 <strong>pg_convert()</strong>。

<comment>Return:</comment>
  <info>string|bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。如果通过 <strong>$flags</strong> 传递 <info>PGSQL_DML_STRING</info>，成功
               时返回 <info>string</info>。

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


id: pg_version
type: function
doc:
<comment>Description:</comment>
  Returns an array with client, protocol and server version (when available)
    
  
  <strong>pg_version()</strong> returns an array with the client, protocol and server version. Protocol and server
  versions are only available if PHP was compiled with PostgreSQL 7.4 or later.
  
  For more detailed server information, use <strong>pg_parameter_status()</strong>.

<comment>Param:</comment>
  <info>PgSql\Connection|null</info>  <strong>$connection</strong>  An <class>PgSql\Connection</class> instance.
                                      When <strong>$connection</strong> is <info>null</info>, the default connection is used.
                                      The default connection is the last connection made by
                                      <strong>pg_connect()</strong>
                                      or <strong>pg_pconnect()</strong>.
                                      As of PHP 8.1.0, using the default connection is deprecated.
                                      
                                      As of PHP 8.1.0, using the default connection is deprecated.

<comment>Return:</comment>
  <info>array</info>  Returns an array with <return>client</return>, <return>protocol</return>  and <return>server</return> keys and values (if available).

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


id: php_ini_loaded_file
type: function
doc:
<comment>Description:</comment>
  取得已加载的 php.ini 文件的路径
  
  检查是否有加载的 php.ini 文件，并取回它的路径。

<comment>Return:</comment>
  <info>string|false</info>  已加载的 php.ini 路径，或在没有时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>php_ini_scanned_files()</strong>
   * <strong>phpinfo()</strong>
   * 配置文件


id: php_ini_scanned_files
type: function
doc:
<comment>Description:</comment>
  返回从额外 ini 目录里解析的 .ini 文件列表
  
  <strong>php_ini_scanned_files()</strong> 在 php.ini  之后解析的配置文件的逗号分割列表。搜索的目录由编译时选项设置，
  也可以在运行时由环境变量设置：更多信息可以从安装指南中找到。
  
  返回的配置文件包含完整路径。

<comment>Return:</comment>
  <info>string|false</info>  成功时返回逗号分隔的 .ini 文件字符串。每个逗号后紧跟新的一行。如果未设置配置指令
                --with-config-file-scan-dir 并且没有设置环境变量 PHP_INI_SCAN_DIR 将会返回 <info>false</info>。如
                果它设置了，并且目录是空的，将会返回一个空字符串。如果有未识别的文件，此文件也会进入
                返回的字符串，但是会导致一个 PHP 错误。此 PHP 错误即会在编译时出现也会在使用
                <strong>php_ini_scanned_files()</strong> 函数时出现。

<comment>See Also:</comment>
   * <strong>ini_set()</strong>
   * <strong>phpinfo()</strong>
   * <strong>php_ini_loaded_file()</strong>


id: php_sapi_name
type: function
doc:
<comment>Description:</comment>
  返回 web 服务器和 PHP 之间的接口类型
  
  返回描述 PHP 所使用的接口类型（the Server API, SAPI）的小写字符串。 例如，CLI 的 PHP 下这个字符串
  会是 "cli"，Apache 下可能会有几个不同的值，取决于具体使用的 SAPI。 以下列出了可能的值。

<comment>Return:</comment>
  <info>string|false</info>  返回接口类型的小写字符串， 或者在失败时返回 <info>false</info>。
                
                尽管不够全面，可能返回的值包括了 <return>apache</return>、<return>apache2handler</return>、<return>cgi</return>（直到 PHP 5.3）、
                <return>cgi-fcgi</return>、<return>cli</return>、<return>cli-server</return>、<return>embed</return>、<return>fpm-fcgi</return>、<return>litespeed</return>、<return>phpdbg</return>。

<comment>See Also:</comment>
   * PHP_SAPI


id: php_strip_whitespace
type: function
doc:
<comment>Description:</comment>
  返回删除注释和空格后的PHP源码
  
  返回删除注释和空格后 <strong>$filename</strong> 的PHP源码。这对实际代码数量和注释数量的对比很有用。 此函数与 命令行
  下执行 php -w 相似。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  PHP文件的路径。

<comment>Return:</comment>
  <info>string</info>  在成功时返回过滤后的代码，或者在失败时返回空字符串。
          
          此函数遵守 short_open_tag ini 指令的值。


id: php_uname
type: function
doc:
<comment>Description:</comment>
  返回运行 PHP 的系统的有关信息
  
  <strong>php_uname()</strong> 返回了运行 PHP 的操作系统的描述。 这和 <strong>phpinfo()</strong> 最顶端上输出的是同一个字符串。 如果仅
  仅要获取操作系统的名称。可以考虑使用常量 <info>PHP_OS</info>，不过要注意该常量会包含 PHP 构建（built）时的操作
  系统名。
  
  在一些旧的 UNIX 平台，它有可能无法检测到当前系统的信息，然后会还原显示成构建 PHP 时的系统信息。 这
  仅仅在你的 uname() 函数库不存在或无法运行时发生。

<comment>Param:</comment>
  <info>string</info>  <strong>$mode</strong>  <strong>$mode</strong> 是单个字符，用于定义要返回什么信息： <return>'a'</return>：此为默认。包含序列 <return>"s n r v m"</return> 里的
                 所有模式。 <return>'s'</return>：操作系统名称。例如： <return>FreeBSD</return>。 <return>'n'</return>：主机名。例如：
                 <return>localhost.example.com</return>。 <return>'r'</return>：版本名称，例如： <return>5.1.2-RELEASE</return>。 <return>'v'</return>：版本信息。操作系
                 统之间有很大的不同。 <return>'m'</return>：机器类型。例如：<return>i386</return>。
                 
                 <return>'a'</return>：此为默认。包含序列 <return>"s n r v m"</return> 里的所有模式。
                 
                 <return>'s'</return>：操作系统名称。例如： <return>FreeBSD</return>。
                 
                 <return>'n'</return>：主机名。例如： <return>localhost.example.com</return>。
                 
                 <return>'r'</return>：版本名称，例如： <return>5.1.2-RELEASE</return>。
                 
                 <return>'v'</return>：版本信息。操作系统之间有很大的不同。
                 
                 <return>'m'</return>：机器类型。例如：<return>i386</return>。

<comment>Return:</comment>
  <info>string</info>  返回描述字符串。

<comment>See Also:</comment>
   * <strong>phpversion()</strong>
   * <strong>php_sapi_name()</strong>
   * <strong>phpinfo()</strong>


id: php_user_filter
type: class
doc:
<comment>Description:</comment>
  Children of this class are passed to <strong>stream_filter_register()</strong>. Note that the __construct method is
  not called; instead, php_user_filter::onCreate should be used for initialization.


id: php_user_filter::filter
type: function
doc:
<comment>Description:</comment>
  Called when applying the filter
  
  This method is called whenever data is read from or written to the attached stream (such as with
  <strong>fread()</strong> or <strong>fwrite()</strong>).

<comment>Param:</comment>
  <info>resource</info>  <strong>$in</strong>        <strong>$in</strong> is a resource pointing to a <return>bucket brigade</return> which contains one or more
                       <return>bucket</return> objects containing data to be filtered.
  <info>resource</info>  <strong>$out</strong>       <strong>$out</strong> is a resource pointing to a second <return>bucket brigade</return> into which your
                       modified buckets should be placed.
  <info>int</info>       <strong>$consumed</strong>  <strong>$consumed</strong>, which must always be declared by reference, should be incremented
                       by the length of the data which your filter reads in and alters.  In most
                       cases this means you will increment <strong>$consumed</strong> by <return>$bucket-&gt;datalen</return> for each
                       <return>$bucket</return>.
  <info>bool</info>      <strong>$closing</strong>   If the stream is in the process of closing (and therefore this is the last
                       pass through the filterchain), the <strong>$closing</strong> parameter will be set to <info>true</info>.

<comment>Return:</comment>
  <info>int</info>  The filter method must return one of three values upon completion. Return
       ValueMeaning<info>PSFS_PASS_ON</info> Filter processed successfully with data available in the <strong>$out</strong> <return>bucket
       brigade</return>. <info>PSFS_FEED_ME</info> Filter processed successfully, however no data was available to return.
       More data is required from the stream or prior filter. <info>PSFS_ERR_FATAL</info> (default) The filter
       experienced an unrecoverable error and cannot continue.


id: php_user_filter::onClose
type: function
doc:
<comment>Description:</comment>
  Called when closing the filter
  
  This method is called upon filter shutdown (typically, this is also during stream shutdown), and
  is executed after the <return>flush</return> method is called.  If any resources were allocated or initialized
  during <return>onCreate()</return> this would be the time to destroy or dispose of them.

<comment>Return:</comment>
  <info>void</info>  Return value is ignored.


id: php_user_filter::onCreate
type: function
doc:
<comment>Description:</comment>
  Called when creating the filter
  
  This method is called during instantiation of the filter class object.  If your filter allocates
  or initializes any other resources (such as a buffer), this is the place to do it.
  
  When your filter is first instantiated, and <return>yourfilter-&gt;onCreate()</return> is called, a number of
  properties will be available as shown in the table below.
  
  PropertyContents<return>FilterClass-&gt;filtername</return> A string containing the name the filter was
  instantiated with. Filters may be registered under multiple names or under wildcards. Use this
  property to determine which name was used. <return>FilterClass-&gt;params</return> The contents of the <strong>$params</strong>
  parameter passed to <strong>stream_filter_append()</strong> or <strong>stream_filter_prepend()</strong>. <return>FilterClass-&gt;stream</return> The
  stream resource being filtered. Maybe available only during filter calls when the  <return>closing</return>
  parameter is set to <info>false</info>.

<comment>Return:</comment>
  <info>bool</info>  Your implementation of this method should return <info>false</info> on failure, or <info>true</info> on success.


id: phpcredits
type: function
doc:
<comment>Description:</comment>
  打印 PHP 贡献者名单
  
  这个函数打印出了 PHP 开发者、模块等贡献者名单。 它生成了合适、可嵌入信息到页面中的 HTML 代码。

<comment>Param:</comment>
  <info>int</info>  <strong>$flags</strong>  生成自定义的贡献者页面，你也许想要使用 <strong>$flags</strong> 参数。
               
               预定义的 <strong>phpcredits()</strong> flags名称描述CREDITS_ALL 所有贡献者，等同于使用： <info>CREDITS_DOCS</info>
               + <info>CREDITS_GENERAL</info> + <info>CREDITS_GROUP</info> + <info>CREDITS_MODULES</info> + <info>CREDITS_FULLPAGE</info>。 它以适当的标
               签产生了完整独立的 HTML 页面。 CREDITS_DOCS文档组贡献名单CREDITS_FULLPAGE 常用于和其
               他标志进行组合。 表示需要打印包含其他标志表示信息的独立 HTML 页面。 CREDITS_GENERAL
               普遍名单：语言设计与理念、PHP作者以及 SAPI 模块。 CREDITS_GROUP核心开发者名单
               CREDITS_MODULES PHP 扩展模块以及它们的作者的清单 CREDITS_SAPI PHP 的服务器 API 模块以
               及他们的作者的清单

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>phpversion()</strong>
   * <strong>phpinfo()</strong>


id: phpdbg_break_file
type: function
doc:
<comment>Description:</comment>
  Inserts a breakpoint at a line in a file
  
  Insert a breakpoint at the given <strong>$line</strong> in the given <strong>$file</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$file</strong>  The name of the file.
  <info>int</info>     <strong>$line</strong>  The line number.

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

<comment>See Also:</comment>
   * <strong>phpdbg_break_function()</strong>
   * <strong>phpdbg_break_method()</strong>
   * <strong>phpdbg_break_next()</strong>
   * <strong>phpdbg_clear()</strong>


id: phpdbg_break_function
type: function
doc:
<comment>Description:</comment>
  Inserts a breakpoint at entry to a function
  
  Insert a breakpoint at the entry to the given <strong>$function</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$function</strong>  The name of the function.

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

<comment>See Also:</comment>
   * <strong>phpdbg_break_file()</strong>
   * <strong>phpdbg_break_method()</strong>
   * <strong>phpdbg_break_next()</strong>
   * <strong>phpdbg_clear()</strong>


id: phpdbg_break_method
type: function
doc:
<comment>Description:</comment>
  Inserts a breakpoint at entry to a method
  
  Insert a breakpoint at the entry to the given <strong>$method</strong> of the given <strong>$class</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$class</strong>   The name of the class.
  <info>string</info>  <strong>$method</strong>  The name of the method.

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

<comment>See Also:</comment>
   * <strong>phpdbg_break_file()</strong>
   * <strong>phpdbg_break_function()</strong>
   * <strong>phpdbg_break_next()</strong>
   * <strong>phpdbg_clear()</strong>


id: phpdbg_break_next
type: function
doc:
<comment>Description:</comment>
  Inserts a breakpoint at the next opcode
  
  Insert a breakpoint at the next opcode.

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

<comment>See Also:</comment>
   * <strong>phpdbg_break_file()</strong>
   * <strong>phpdbg_break_function()</strong>
   * <strong>phpdbg_break_method()</strong>
   * <strong>phpdbg_clear()</strong>


id: phpdbg_clear
type: function
doc:
<comment>Description:</comment>
  Clears all breakpoints
  
  Clear all breakpoints that have been set, either via one of the <strong>phpdbg_break_*()</strong> functions or
  interactively in the console.
  
  本函数还未编写文档，仅有参数列表。

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

<comment>See Also:</comment>
   * <strong>phpdbg_break_file()</strong>
   * <strong>phpdbg_break_function()</strong>
   * <strong>phpdbg_break_method()</strong>
   * <strong>phpdbg_break_next()</strong>


id: phpdbg_color
type: function
doc:
<comment>Description:</comment>
  Sets the color of certain elements
  
  Set the <strong>$color</strong> of the given <strong>$element</strong>.

<comment>Param:</comment>
  <info>int</info>     <strong>$element</strong>  One of the <info>PHPDBG_COLOR_*</info> constants.
  <info>string</info>  <strong>$color</strong>    The name of the color. One of <return>white</return>, <return>red</return>, <return>green</return>, <return>yellow</return>, <return>blue</return>, <return>purple</return>, <return>cyan</return> or
                    <return>black</return>, optionally with either a trailing <return>-bold</return> or <return>-underline</return>, for instance,
                    <return>white-bold</return> or <return>green-underline</return>.

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

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


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

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

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


id: phpdbg_exec
type: function
doc:
<comment>Description:</comment>
  Attempts to set the execution context
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>string</info>  <strong>$context</strong>  

<comment>Return:</comment>
  <info>string|bool</info>  If the execution context was set previously it is returned. If the execution context
               was not set previously <info>true</info> is returned. If the request to set the context fails,
               <info>false</info> is returned, and an <info>E_WARNING</info> raised.


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

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

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


id: phpdbg_prompt
type: function
doc:
<comment>Description:</comment>
  Sets the command prompt
  
  Set the command prompt to the given <strong>$string</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  The string to use as command prompt.

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

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


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

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


id: phpinfo
type: function
doc:
<comment>Description:</comment>
  输出关于 PHP 配置的信息
  
  输出 PHP 当前状态的大量信息，包含了 PHP 编译选项、启用的扩展、PHP 版本、服务器信息和环境变量（如果
  编译为一个模块的话）、PHP 环境变量、操作系统版本信息、path 变量、配置选项的本地值和主值、HTTP 头和
  PHP授权信息（License）。
  
  因为每个系统安装得有所不同，<strong>phpinfo()</strong> 常用于在系统上检查配置设置和预定义变量。
  
  <strong>phpinfo()</strong> 同时是个很有价值的、包含所有 EGPCS(Environment、GET、POST、Cookie、Server) 数据的调试工
  具。

<comment>Param:</comment>
  <info>int</info>  <strong>$flags</strong>  可以用以下的一个或多个 constants 用位运算传递给可选的 <strong>$flags</strong> 参数来定制输出的信息。
               该参数可以把常量相加或者用按位或操作符按位运算。
               
               <strong>phpinfo()</strong> 选项Name (constant)ValueDescriptionINFO_GENERAL1 配置的命令行、php.ini 的文
               件位置、建立的时间、Web 服务器、系统及更多其他信息。 INFO_CREDITS2 PHP 贡献者名单。参
               加 <strong>phpcredits()</strong>。 INFO_CONFIGURATION4 当前PHP指令的本地值和主值。参见 <strong>ini_get()</strong>。
               INFO_MODULES8 已加载的模块和模块相应的设置。参见 <strong>get_loaded_extensions()</strong>。
               INFO_ENVIRONMENT16 环境变量信息也可以用 $_ENV 获取。 INFO_VARIABLES32 显示所有来自
               EGPCS (Environment, GET, POST, Cookie, Server) 的  预定义变量。 INFO_LICENSE64 PHP许
               可证信息。参见 license FAQ。 INFO_ALL-1 显示以上所有信息。

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>phpversion()</strong>
   * <strong>phpcredits()</strong>
   * <strong>ini_get()</strong>
   * <strong>ini_set()</strong>
   * <strong>get_loaded_extensions()</strong>
   * 预定义变量


id: phpversion
type: function
doc:
<comment>Description:</comment>
  获取当前的PHP版本
  
  返回了包含当前运行 PHP 解释器或扩展版本信息的 string。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$extension</strong>  可选的扩展名。

<comment>Return:</comment>
  <info>string|false</info>  以 <info>string</info> 形式返回当前 PHP 版本。如果为 <strong>$extension</strong> 提供了 <info>string</info> 类型的参数，
                <strong>phpversion()</strong>  会返回该扩展的版本。如果没有对应的版本信息，或者该扩展未启用，则返回
                <info>false</info>。

<comment>See Also:</comment>
   * 常量 PHP_VERSION
   * <strong>version_compare()</strong>
   * <strong>phpinfo()</strong>
   * <strong>phpcredits()</strong>
   * <strong>zend_version()</strong>


id: pi
type: function
doc:
<comment>Description:</comment>
  得到圆周率值
  
  返回圆周率的近似值。也可以使用 <info>M_PI</info> 常量，该常量产生与 <strong>pi()</strong> 完全相同的结果。

<comment>Return:</comment>
  <info>float</info>  圆周率（pi）的浮点近似值。


id: png2wbmp
type: function
doc:
<comment>Description:</comment>
  将 PNG 图像文件转换为 WBMP 图像文件
  
  转换 PNG 文件到 WBMP 文件。

<comment>Param:</comment>
  <info>string</info>  <strong>$pngname</strong>      PNG 文件的路径。
  <info>string</info>  <strong>$wbmpname</strong>     目标 WBMP 文件的路径。
  <info>int</info>     <strong>$dest_height</strong>  目标图像的高度。
  <info>int</info>     <strong>$dest_width</strong>   目标图像的宽度。
  <info>int</info>     <strong>$threshold</strong>    阈值，在 0 到 8 之间（含）。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。
        
        如果 libgd 输出图像失败，函数会返回 <info>true</info>。

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


id: popen
type: function
doc:
<comment>Description:</comment>
  打开进程文件指针
  
  打开一个指向进程的管道，该进程由派生给定的 command 命令执行而产生。

<comment>Param:</comment>
  <info>string</info>  <strong>$command</strong>  命令。
  <info>string</info>  <strong>$mode</strong>     模式。<return>'r'</return> 表示阅读，<return>'w'</return> 表示写入。
                    
                    在 Windows 上，<strong>popen()</strong> 默认是文本模式，即任何从管道中读取/写入的 <return>\n</return> 字符都将转换
                    为 <return>\r\n</return>。如果避免这种情况，可以通过将 <strong>$mode</strong> 设置为 <return>'rb'</return> 和 <return>'wb'</return> 来强制执行二进制
                    模式。

<comment>Return:</comment>
  <info>resource|false</info>  返回一个和 <strong>fopen()</strong> 所返回的相同的文件指针，只不过它是单向的（只能用于读或写）并且
                  必须用 <strong>pclose()</strong> 来关闭。此指针可以用于 <strong>fgets()</strong>，<strong>fgetss()</strong> 和 <strong>fwrite()</strong>。 当模式为
                  'r'，返回的文件指针等于命令的 STDOUT，当模式为 'w'，返回的文件指针等于命令的
                  STDIN。
                  
                  如果出错返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>pclose()</strong>
   * <strong>fopen()</strong>
   * <strong>proc_open()</strong>


id: posix_access
type: function
doc:
<comment>Description:</comment>
  Determine accessibility of a file
    
  
  <strong>posix_access()</strong> checks the user's permission of a file.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The name of the file to be tested.
  <info>int</info>     <strong>$flags</strong>     A mask consisting of one or more of <info>POSIX_F_OK</info>, <info>POSIX_R_OK</info>, <info>POSIX_W_OK</info> and
                     <info>POSIX_X_OK</info>.
                     
                     <info>POSIX_R_OK</info>, <info>POSIX_W_OK</info> and <info>POSIX_X_OK</info> request checking whether the file exists
                     and has read, write and execute permissions, respectively. <info>POSIX_F_OK</info> just
                     requests checking for the existence of the file.

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

<comment>See Also:</comment>
   * <strong>posix_get_last_error()</strong>
   * <strong>posix_strerror()</strong>


id: posix_ctermid
type: function
doc:
<comment>Description:</comment>
  Get path name of controlling terminal
  
  Generates a <info>string</info> which is the pathname for the current  controlling terminal for the process.
  On error this will set errno,  which can be checked using <strong>posix_get_last_error()</strong>

<comment>Return:</comment>
  <info>string|false</info>  Upon successful completion, returns <info>string</info> of the pathname to  the current
                controlling terminal.  Otherwise <info>false</info> is returned and errno is set, which can be
                checked with <strong>posix_get_last_error()</strong>.

<comment>See Also:</comment>
   * <strong>posix_ttyname()</strong>
   * <strong>posix_get_last_error()</strong>


id: posix_eaccess
type: function
doc:
<comment>Description:</comment>
  Determine accessibility of a file
    
  
  <strong>posix_eaccess()</strong> checks the effective user's permission of a file

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The name of a file to be tested.
  <info>int</info>     <strong>$flags</strong>     A mask consisting of one or more of <info>POSIX_F_OK</info>, <info>POSIX_R_OK</info>, <info>POSIX_W_OK</info> and
                     <info>POSIX_X_OK</info>.
                     
                     <info>POSIX_R_OK</info>, <info>POSIX_W_OK</info> and <info>POSIX_X_OK</info> request checking whether the file exists
                     and has read, write and execute permissions, respectively. <info>POSIX_F_OK</info> just
                     requests checking for the existence of the file.

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

<comment>See Also:</comment>
   * <strong>posix_get_last_error()</strong>
   * <strong>posix_strerror()</strong>
   * <strong>posix_access()</strong>


id: posix_errno
type: function
doc:
<comment>Description:</comment>
  别名 posix_get_last_error
  
  此函数是该函数的别名： <strong>posix_get_last_error()</strong>.


id: posix_fpathconf
type: function
doc:
<comment>Description:</comment>
  Returns the value of a configurable limit
  
  Returns the value of a configurable limit from <strong>$name</strong> for a file descriptor <strong>$resource</strong>

<comment>Param:</comment>
  <info>resource|int</info>  <strong>$file_descriptor</strong>  The file descriptor, which is expected to be either a file
                                  <info>resource</info> or an <info>int</info>. An <info>int</info> will be assumed to be a file descriptor
                                  that can be passed directly to the underlying system call.
  <info>int</info>           <strong>$name</strong>             The name of the configurable limit, one of the following.
                                  <info>POSIX_PC_LINK_MAX</info>, <info>POSIX_PC_MAX_CANON</info> <info>POSIX_PC_MAX_INPUT</info>,
                                  <info>POSIX_PC_NAME_MAX</info> <info>POSIX_PC_PATH_MAX</info>, <info>POSIX_PC_PIPE_BUF</info>
                                  <info>POSIX_PC_CHOWN_RESTRICTED</info>, <info>POSIX_PC_NO_TRUNC</info>
                                  <info>POSIX_PC_ALLOC_SIZE_MIN</info>, <info>POSIX_PC_SYMLINK_MAX</info>

<comment>Return:</comment>
  <info>int|false</info>  Returns the configurable limit or <info>false</info>.

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


id: posix_get_last_error
type: function
doc:
<comment>Description:</comment>
  Retrieve the error number set by the last posix function that failed
  
  Retrieve the error number set by the last posix function that failed. The system error message
  associated with the errno may be checked with <strong>posix_strerror()</strong>.

<comment>Return:</comment>
  <info>int</info>  Returns the errno (error number) set by the last posix function that failed.  If no errors
       exist, 0 is returned.

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


id: posix_getcwd
type: function
doc:
<comment>Description:</comment>
  Pathname of current directory
  
  Gets the absolute pathname of the script's current working directory. On error, it sets errno
  which can be checked using <strong>posix_get_last_error()</strong>

<comment>Return:</comment>
  <info>string|false</info>  Returns a <info>string</info> of the absolute pathname on success.   On error, returns <info>false</info> and
                sets errno which can be checked with <strong>posix_get_last_error()</strong>.


id: posix_getegid
type: function
doc:
<comment>Description:</comment>
  Return the effective group ID of the current process
  
  Return the numeric effective group ID of the current process.

<comment>Return:</comment>
  <info>int</info>  Returns an <info>int</info> of the effective group ID.

<comment>See Also:</comment>
   * <strong>posix_getgrgid()</strong>
   * <strong>posix_getgid()</strong>
   * <strong>posix_setgid()</strong>


id: posix_geteuid
type: function
doc:
<comment>Description:</comment>
  Return the effective user ID of the current process
  
  Return the numeric effective user ID of the current process. See also <strong>posix_getpwuid()</strong> for
  information on how to convert this into a useable username.

<comment>Return:</comment>
  <info>int</info>  Returns the user id, as an <info>int</info>

<comment>See Also:</comment>
   * <strong>posix_getpwuid()</strong>
   * <strong>posix_getuid()</strong>
   * <strong>posix_setuid()</strong>
   * POSIX man page GETEUID(2)


id: posix_getgid
type: function
doc:
<comment>Description:</comment>
  Return the real group ID of the current process
  
  Return the numeric real group ID of the current process.

<comment>Return:</comment>
  <info>int</info>  Returns the real group id, as an <info>int</info>.

<comment>See Also:</comment>
   * <strong>posix_getgrgid()</strong>
   * <strong>posix_getegid()</strong>
   * <strong>posix_setgid()</strong>
   * POSIX man page GETGID(2)


id: posix_getgrgid
type: function
doc:
<comment>Description:</comment>
  Return info about a group by group id
  
  Gets information about a group provided its id.

<comment>Param:</comment>
  <info>int</info>  <strong>$group_id</strong>  The group id.

<comment>Return:</comment>
  <info>array|false</info>  The array elements returned are: The group information arrayElementDescriptionname
               The name element contains the name of the group. This is a short, usually less than
               16 character "handle" of the group, not the real, full name. passwd The passwd
               element contains the group's password in an encrypted format. Often, for example on a
               system employing "shadow" passwords, an asterisk is returned instead. gid Group ID,
               should be the same as the <strong>$group_id</strong> parameter used when calling the function, and
               hence redundant. members This consists of an <info>array</info> of <info>string</info>'s for all the members in
               the group.  The function returns <info>false</info> on failure.

<comment>See Also:</comment>
   * <strong>posix_getegid()</strong>
   * <strong>posix_getgrnam()</strong>
   * <strong>filegroup()</strong>
   * <strong>stat()</strong>
   * POSIX man page GETGRNAM(3)


id: posix_getgrnam
type: function
doc:
<comment>Description:</comment>
  Return info about a group by name
  
  Gets information about a group provided its name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  The name of the group

<comment>Return:</comment>
  <info>array|false</info>  Returns an <info>array</info> on success,  或者在失败时返回 <info>false</info>. The array elements returned
               are: The group information arrayElementDescriptionname The name element contains the
               name of the group. This is a short, usually less than 16 character "handle" of the
               group, not the real, full name.  This should be the same as the <strong>$name</strong> parameter used
               when calling the function, and hence redundant. passwd The passwd element contains
               the group's password in an encrypted format. Often, for example on a system employing
               "shadow" passwords, an asterisk is returned instead. gid Group ID of the group in
               numeric form. members This consists of an <info>array</info> of <info>string</info>'s for all the members in
               the group.

<comment>See Also:</comment>
   * <strong>posix_getegid()</strong>
   * <strong>posix_getgrgid()</strong>
   * <strong>filegroup()</strong>
   * <strong>stat()</strong>
   * POSIX man page GETGRNAM(3)


id: posix_getgroups
type: function
doc:
<comment>Description:</comment>
  Return the group set of the current process
  
  Gets the group set of the current process.

<comment>Return:</comment>
  <info>array|false</info>  Returns an array of integers containing the numeric group ids of the group set of the
               current process,  或者在失败时返回 <info>false</info>.

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


id: posix_getlogin
type: function
doc:
<comment>Description:</comment>
  Return login name
  
  Returns the login name of the user owning the current process.

<comment>Return:</comment>
  <info>string|false</info>  Returns the login name of the user, as a <info>string</info>,  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>posix_getpwnam()</strong>
   * POSIX man page GETLOGIN(3)


id: posix_getpgid
type: function
doc:
<comment>Description:</comment>
  Get process group id for job control
  
  Returns the process group identifier of the process <strong>$process_id</strong> 或者在失败时返回 <info>false</info>.

<comment>Param:</comment>
  <info>int</info>  <strong>$process_id</strong>  The process id.

<comment>Return:</comment>
  <info>int|false</info>  Returns the identifier, as an <info>int</info>.

<comment>See Also:</comment>
   * <strong>posix_getppid()</strong>
   * man page SETPGID(2)


id: posix_getpgrp
type: function
doc:
<comment>Description:</comment>
  Return the current process group identifier
  
  Return the process group identifier of the current process.

<comment>Return:</comment>
  <info>int</info>  Returns the identifier, as an <info>int</info>.

<comment>See Also:</comment>
   * POSIX.1 and the getpgrp(2) manual page on the POSIX system for
     more information on process groups.


id: posix_getpid
type: function
doc:
<comment>Description:</comment>
  返回当前进程 id
  
  Return the process identifier of the current process. 返回当前进程的 id

<comment>Return:</comment>
  <info>int</info>  返回进程 id 号，是整型（<info>int</info>）。

<comment>See Also:</comment>
   * <strong>posix_kill()</strong>
   * POSIX man page GETPID(2)


id: posix_getppid
type: function
doc:
<comment>Description:</comment>
  Return the parent process identifier
  
  Return the process identifier of the parent process of the current process.

<comment>Return:</comment>
  <info>int</info>  Returns the identifier, as an <info>int</info>.


id: posix_getpwnam
type: function
doc:
<comment>Description:</comment>
  Return info about a user by username
  
  Returns an <info>array</info> of information about the given user.

<comment>Param:</comment>
  <info>string</info>  <strong>$username</strong>  An alphanumeric username.

<comment>Return:</comment>
  <info>array|false</info>  On success an array with the following elements is returned, else  <info>false</info> is returned:
               The user information arrayElementDescriptionname The name element contains the
               username of the user. This is a short, usually less than 16 character "handle" of the
               user, not the real, full name. This should be the same as the <strong>$username</strong> parameter
               used when calling the function, and hence redundant. passwd The passwd element
               contains the user's password in an encrypted format. Often, for example on a system
               employing "shadow" passwords, an asterisk is returned instead. uid User ID of the
               user in numeric form. gid The group ID of the user. Use the function <strong>posix_getgrgid()</strong>
               to resolve the group name and a list of its members. gecos GECOS is an obsolete term
               that refers to the finger information field on a Honeywell batch processing system.
               The field, however, lives on, and its contents have been formalized by POSIX. The
               field contains a comma separated list containing the user's full name, office phone,
               office number, and home phone number. On most systems, only the user's full name is
               available. dir This element contains the absolute path to the home directory of the
               user. shell The shell element contains the absolute path to the executable of the
               user's default shell.

<comment>See Also:</comment>
   * <strong>posix_getpwuid()</strong>
   * POSIX man page GETPWNAM(3)


id: posix_getpwuid
type: function
doc:
<comment>Description:</comment>
  Return info about a user by user id
  
  Returns an <info>array</info> of information about the user  referenced by the given user ID.

<comment>Param:</comment>
  <info>int</info>  <strong>$user_id</strong>  The user identifier.

<comment>Return:</comment>
  <info>array|false</info>  Returns an associative array with the following elements: The user information
               arrayElementDescriptionname The name element contains the username of the user. This
               is a short, usually less than 16 character "handle" of the user, not the real, full
               name. passwd The passwd element contains the user's password in an encrypted format.
               Often, for example on a system employing "shadow" passwords, an asterisk is returned
               instead. uid User ID, should be the same as the <strong>$user_id</strong> parameter used when calling
               the function, and hence redundant. gid The group ID of the user. Use the function
               <strong>posix_getgrgid()</strong> to resolve the group name and a list of its members. gecos GECOS is
               an obsolete term that refers to the finger information field on a Honeywell batch
               processing system. The field, however, lives on, and its contents have been
               formalized by POSIX. The field contains a comma separated list containing the user's
               full name, office phone, office number, and home phone number. On most systems, only
               the user's full name is available. dir This element contains the absolute path to the
               home directory of the user. shell The shell element contains the absolute path to the
               executable of the user's default shell.  The function returns <info>false</info> on failure.

<comment>See Also:</comment>
   * <strong>posix_getpwnam()</strong>
   * POSIX man page GETPWNAM(3)


id: posix_getrlimit
type: function
doc:
<comment>Description:</comment>
  Return info about system resource limits
  
  <strong>posix_getrlimit()</strong> returns an <info>array</info> of information about the current resource's soft and hard
  limits.
  
  Each resource has an associated soft and hard limit.  The soft limit is the value that the kernel
  enforces for the corresponding resource.  The hard limit acts as a ceiling for the soft limit. An
  unprivileged process may only set its soft limit to a value from 0 to the hard limit, and
  irreversibly lower its hard limit.

<comment>Param:</comment>
  <info>int|null</info>  <strong>$resource</strong>  If <info>null</info> all resource limits will be fetched. Otherwise, the only limits of
                       the resource type provided will be returned.

<comment>Return:</comment>
  <info>array|false</info>  Returns an associative <info>array</info> of elements for each limit that is defined. Each limit
               has a soft and a hard limit. List of possible limits returnedLimit nameLimit
               descriptioncore The maximum size of the core file.  When 0, not core files are
               created.  When core files are larger than this size, they will be truncated at this
               size. totalmem The maximum size of the memory of the process, in bytes. virtualmem
               The maximum size of the virtual memory for the process, in bytes. data The maximum
               size of the data segment for the process, in bytes. stack The maximum size of the
               process stack, in bytes. rss The maximum number of virtual pages resident in RAM
               maxproc The maximum number of processes that can be created for the real user ID of
               the calling process. memlock The maximum number of bytes of memory that may be locked
               into RAM. cpu The amount of time the process is allowed to use the CPU. filesize The
               maximum size of the data segment for the process, in bytes. openfiles One more than
               the maximum number of open file descriptors.  The function returns <info>false</info> on failure.

<comment>See Also:</comment>
   * man page GETRLIMIT(2)
   * <strong>posix_setrlimit()</strong>


id: posix_getsid
type: function
doc:
<comment>Description:</comment>
  Get the current sid of the process
  
  Return the session id of the process <strong>$process_id</strong>. The session id of a process is the process group
  id of the session leader.

<comment>Param:</comment>
  <info>int</info>  <strong>$process_id</strong>  The process identifier. If set to 0, the current process is assumed.  If an
                    invalid <strong>$process_id</strong> is specified, then <info>false</info> is returned and an error is set
                    which can be checked with <strong>posix_get_last_error()</strong>.

<comment>Return:</comment>
  <info>int|false</info>  Returns the identifier, as an <info>int</info>,  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>posix_getpgid()</strong>
   * <strong>posix_setsid()</strong>
   * POSIX man page GETSID(2)


id: posix_getuid
type: function
doc:
<comment>Description:</comment>
  Return the real user ID of the current process
  
  Return the numeric real user ID of the current process.

<comment>Return:</comment>
  <info>int</info>  Returns the user id, as an <info>int</info>

<comment>See Also:</comment>
   * <strong>posix_getpwuid()</strong>
   * POSIX man page GETUID(2)


id: posix_initgroups
type: function
doc:
<comment>Description:</comment>
  Calculate the group access list
  
  Calculates the group access list for the user specified in name.

<comment>Param:</comment>
  <info>string</info>  <strong>$username</strong>  The user to calculate the list for.
  <info>int</info>     <strong>$group_id</strong>  Typically the group number from the password file.

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

<comment>See Also:</comment>
   * The Unix manual page for initgroups(3).


id: posix_isatty
type: function
doc:
<comment>Description:</comment>
  Determine if a file descriptor is an interactive terminal
  
  Determines if the file descriptor <strong>$file_descriptor</strong> refers to a valid terminal type device.

<comment>Param:</comment>
  <info>resource|int</info>  <strong>$file_descriptor</strong>  The file descriptor, which is expected to be either a file
                                  <info>resource</info> or an <info>int</info>. An <info>int</info> will be assumed to be a file descriptor
                                  that can be passed directly to the underlying system call.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if <strong>$file_descriptor</strong> is an open descriptor connected to a terminal and <info>false</info>
        otherwise.

<comment>See Also:</comment>
   * <strong>posix_ttyname()</strong>
   * <strong>stream_isatty()</strong>


id: posix_kill
type: function
doc:
<comment>Description:</comment>
  Send a signal to a process
  
  Send the signal <strong>$signal</strong> to the process with the process identifier <strong>$process_id</strong>.

<comment>Param:</comment>
  <info>int</info>  <strong>$process_id</strong>  The process identifier.
  <info>int</info>  <strong>$signal</strong>      One of the PCNTL signals constants.

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

<comment>See Also:</comment>
   * 
     The kill(2) manual page of the POSIX system, which contains additional
     information about negative process identifiers, the special pid 0, the
     special pid -1, and the signal number 0.
    


id: posix_mkfifo
type: function
doc:
<comment>Description:</comment>
  Create a fifo special file (a named pipe)
  
  <strong>posix_mkfifo()</strong> creates a special <return>FIFO</return> file which exists in the file system and acts as a
  bidirectional communication endpoint for processes.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>     Path to the <return>FIFO</return> file.
  <info>int</info>     <strong>$permissions</strong>  The second parameter <strong>$permissions</strong> has to be given in octal notation (e.g.
                        0644). The permission of the newly created <return>FIFO</return> also depends on the setting
                        of the current <strong>umask()</strong>. The permissions of the created file are (mode &
                        ~umask).

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


id: posix_mknod
type: function
doc:
<comment>Description:</comment>
  Create a special or ordinary file (POSIX.1)
    
  
  Creates a special or ordinary file.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The file to create
  <info>int</info>     <strong>$flags</strong>     This parameter is constructed by a bitwise OR between file type (one of the
                     following constants: <info>POSIX_S_IFREG</info>, <info>POSIX_S_IFCHR</info>, <info>POSIX_S_IFBLK</info>, <info>POSIX_S_IFIFO</info>
                     or <info>POSIX_S_IFSOCK</info>) and permissions.
  <info>int</info>     <strong>$major</strong>     The major device kernel identifier (required to pass when using <info>S_IFCHR</info> or
                     <info>S_IFBLK</info>).
  <info>int</info>     <strong>$minor</strong>     The minor device kernel identifier.

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

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


id: posix_pathconf
type: function
doc:
<comment>Description:</comment>
  Returns the value of a configurable limit
  
  本函数还未编写文档，仅有参数列表。
  
  Returns the value of a configurable limit from <strong>$name</strong> for a <strong>$file</strong>

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>  The name of the file whose limit you want to get.
  <info>int</info>     <strong>$name</strong>  The name of the configurable limit, one of the following. <info>POSIX_PC_LINK_MAX</info>,
                 <info>POSIX_PC_MAX_CANON</info> <info>POSIX_PC_MAX_INPUT</info>, <info>POSIX_PC_NAME_MAX</info> <info>POSIX_PC_PATH_MAX</info>,
                 <info>POSIX_PC_PIPE_BUF</info> <info>POSIX_PC_CHOWN_RESTRICTED</info>, <info>POSIX_PC_NO_TRUNC</info>
                 <info>POSIX_PC_ALLOC_SIZE_MIN</info>, <info>POSIX_PC_SYMLINK_MAX</info>

<comment>Return:</comment>
  <info>int|false</info>  Returns the configurable limit or <info>false</info>.

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


id: posix_setegid
type: function
doc:
<comment>Description:</comment>
  Set the effective GID of the current process
  
  Set the effective group ID of the current process. This is a privileged function and needs
  appropriate privileges (usually root) on the system to be able to perform this function.

<comment>Param:</comment>
  <info>int</info>  <strong>$group_id</strong>  The group id.

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

<comment>See Also:</comment>
   * <strong>posix_getgrgid()</strong>
   * <strong>posix_getgid()</strong>
   * <strong>posix_setgid()</strong>


id: posix_seteuid
type: function
doc:
<comment>Description:</comment>
  Set the effective UID of the current process
  
  Set the effective user ID of the current process. This is a privileged function and needs
  appropriate privileges (usually root) on the system to be able to perform this function.

<comment>Param:</comment>
  <info>int</info>  <strong>$user_id</strong>  The user id.

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

<comment>See Also:</comment>
   * <strong>posix_geteuid()</strong>
   * <strong>posix_setuid()</strong>
   * <strong>posix_getuid()</strong>


id: posix_setgid
type: function
doc:
<comment>Description:</comment>
  Set the GID of the current process
  
  Set the real group ID of the current process. This is a privileged function and needs appropriate
  privileges (usually root) on the system to be able to perform this function. The appropriate order
  of function calls is <strong>posix_setgid()</strong> first, <strong>posix_setuid()</strong> last.
  
  If the caller is a super user, this will also set the effective group id.

<comment>Param:</comment>
  <info>int</info>  <strong>$group_id</strong>  The group id.

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

<comment>See Also:</comment>
   * <strong>posix_getgrgid()</strong>
   * <strong>posix_getgid()</strong>


id: posix_setpgid
type: function
doc:
<comment>Description:</comment>
  Set process group id for job control
  
  Let the process <strong>$process_id</strong> join the process group <strong>$process_group_id</strong>.

<comment>Param:</comment>
  <info>int</info>  <strong>$process_id</strong>        The process id.
  <info>int</info>  <strong>$process_group_id</strong>  The process group id.

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

<comment>See Also:</comment>
   * 
     See POSIX.1 and the setsid(2) manual page on the POSIX system for more
     information on process groups and job control.
    


id: posix_setrlimit
type: function
doc:
<comment>Description:</comment>
  Set system resource limits
  
  <strong>posix_setrlimit()</strong> sets the soft and hard limits for a given system resource.
  
  Each resource has an associated soft and hard limit.  The soft limit is the value that the kernel
  enforces for the corresponding resource.  The hard limit acts as a ceiling for the soft limit. An
  unprivileged process may only set its soft limit to a value from 0 to the hard limit, and
  irreversibly lower its hard limit.

<comment>Param:</comment>
  <info>int</info>  <strong>$resource</strong>    The resource limit constant corresponding to the limit that is being set.
  <info>int</info>  <strong>$soft_limit</strong>  The soft limit, in whatever unit the resource limit requires, or
                    <info>POSIX_RLIMIT_INFINITY</info>.
  <info>int</info>  <strong>$hard_limit</strong>  The hard limit, in whatever unit the resource limit requires, or
                    <info>POSIX_RLIMIT_INFINITY</info>.

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

<comment>See Also:</comment>
   * man page SETRLIMIT(2)
   * <strong>posix_getrlimit()</strong>


id: posix_setsid
type: function
doc:
<comment>Description:</comment>
  Make the current process a session leader
  
  Make the current process a session leader.

<comment>Return:</comment>
  <info>int</info>  Returns the session id, or -1 on errors.

<comment>See Also:</comment>
   * 
     The POSIX.1 and the setsid(2) manual page on the POSIX system for more
     information on process groups and job control.
    


id: posix_setuid
type: function
doc:
<comment>Description:</comment>
  Set the UID of the current process
  
  Set the real user ID of the current process. This is a privileged function that needs appropriate
  privileges (usually root) on the system to be able to perform this function.

<comment>Param:</comment>
  <info>int</info>  <strong>$user_id</strong>  The user id.

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

<comment>See Also:</comment>
   * <strong>posix_setgid()</strong>
   * <strong>posix_seteuid()</strong>
   * <strong>posix_getuid()</strong>
   * <strong>posix_geteuid()</strong>


id: posix_strerror
type: function
doc:
<comment>Description:</comment>
  Retrieve the system error message associated with the given errno
  
  Returns the POSIX system error message associated with the given <strong>$error_code</strong>.  You may get the
  <strong>$error_code</strong> parameter by calling <strong>posix_get_last_error()</strong>.

<comment>Param:</comment>
  <info>int</info>  <strong>$error_code</strong>  A POSIX error number, returned by  <strong>posix_get_last_error()</strong>. If set to 0, then the
                    string "Success" is returned.

<comment>Return:</comment>
  <info>string</info>  Returns the error message, as a string.

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


id: posix_sysconf
type: function
doc:
<comment>Description:</comment>
  Returns system runtime information
  
  Returns system runtime information.

<comment>Param:</comment>
  <info>int</info>  <strong>$conf_id</strong>  Identifier of the variable with the following constants <info>POSIX_SC_ARG_MAX</info>,
                 <info>POSIX_SC_PAGESIZE</info> <info>POSIX_SC_NPROCESSORS_CONF</info>, <info>POSIX_SC_NPROCESSORS_ONLN</info>

<comment>Return:</comment>
  <info>int</info>  Returns the numeric value related to <strong>$conf_id</strong>


id: posix_times
type: function
doc:
<comment>Description:</comment>
  Get process times
  
  Gets information about the current CPU usage.

<comment>Return:</comment>
  <info>array|false</info>  Returns a hash of strings with information about the current process CPU usage. The
               indices of the hash are:  ticks - the number of clock ticks that have elapsed since
               reboot.  utime - user time used by the current process.  stime - system time used by
               the current process.  cutime - user time used by current process and children.
               cstime - system time used by current process and children.  The function returns
               <info>false</info> on failure.
               
               ticks - the number of clock ticks that have elapsed since reboot.
               
               utime - user time used by the current process.
               
               stime - system time used by the current process.
               
               cutime - user time used by current process and children.
               
               cstime - system time used by current process and children.


id: posix_ttyname
type: function
doc:
<comment>Description:</comment>
  Determine terminal device name
  
  Returns a <info>string</info> for the absolute path to the current terminal device that is open on the file
  descriptor <strong>$file_descriptor</strong>.

<comment>Param:</comment>
  <info>resource|int</info>  <strong>$file_descriptor</strong>  The file descriptor, which is expected to be either a file
                                  <info>resource</info> or an <info>int</info>. An <info>int</info> will be assumed to be a file descriptor
                                  that can be passed directly to the underlying system call.

<comment>Return:</comment>
  <info>string|false</info>  On success, returns a <info>string</info> of the absolute path of the <strong>$file_descriptor</strong>. On
                failure, returns <info>false</info>

<comment>See Also:</comment>
   * <strong>posix_isatty()</strong>
   * <strong>stream_isatty()</strong>


id: posix_uname
type: function
doc:
<comment>Description:</comment>
  Get system name
  
  Gets information about the system.
  
  Posix requires that assumptions must not be made about the format of the values, e.g. the
  assumption that a release may contain three digits or anything else returned by this function.

<comment>Return:</comment>
  <info>array|false</info>  Returns a hash of strings with information about the system. The indices of the hash
               are  sysname - operating system name (e.g. Linux)  nodename - system name (e.g.
               valiant)  release - operating system release (e.g. 2.2.10)  version - operating
               system version (e.g. #4 Tue Jul 20 17:01:36 MEST 1999)  machine - system architecture
               (e.g. i586)  domainname - DNS domainname (e.g. example.com)
               
               sysname - operating system name (e.g. Linux)
               
               nodename - system name (e.g. valiant)
               
               release - operating system release (e.g. 2.2.10)
               
               version - operating system version (e.g. #4 Tue Jul 20 17:01:36 MEST 1999)
               
               machine - system architecture (e.g. i586)
               
               domainname - DNS domainname (e.g. example.com)
               
               domainname is a GNU extension and not part of POSIX.1, so this field is only
               available on GNU systems or when using the GNU libc.
               
               The function returns <info>false</info> on failure.


id: pow
type: function
doc:
<comment>Description:</comment>
  指数表达式
  
  返回 <strong>$num</strong> 的 <strong>$exponent</strong> 次方的幂。
  
  可以使用 ** 运算符代替。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$num</strong>       底数
  <info>mixed</info>  <strong>$exponent</strong>  指数

<comment>Return:</comment>
  <info>int|float|object</info>  <strong>$num</strong> 的 <strong>$exponent</strong> 次方。如果两个参数都是非负整数且结果可以用整数表示，则返回 <info>int</info>
                    类型，否则返回 <info>float</info>。

<comment>See Also:</comment>
   * <strong>exp()</strong>
   * <strong>sqrt()</strong>
   * <strong>bcpow()</strong>
   * <strong>gmp_pow()</strong>


id: preg_filter
type: function
doc:
<comment>Description:</comment>
  执行一个正则表达式搜索和替换
  
  <strong>preg_filter()</strong>等价于<strong>preg_replace()</strong> 除了它仅仅返回(可能经过转化)与目标匹配的结果. 这个函数怎样工作的
  更详细信息请阅读 <strong>preg_replace()</strong>文档.

<comment>Return:</comment>
  <info>string|array|null</info>  如果<strong>$subject</strong>是一个<info>数组</info>，返回一个<info>数组</info>， 其他情况返回一个<info>字符串</info>。
                     
                     如果没有找到匹配或者发生了错误，当<strong>$subject</strong>是<info>数组</info> 时返回一个空<info>数组</info>，其他情况返回
                     <info>null</info>。

<comment>See Also:</comment>
   * PCRE 模式
   * <strong>preg_quote()</strong>
   * <strong>preg_replace()</strong>
   * <strong>preg_replace_callback()</strong>
   * <strong>preg_grep()</strong>
   * <strong>preg_last_error()</strong>


id: preg_grep
type: function
doc:
<comment>Description:</comment>
  返回匹配模式的数组条目
  
  返回给定数组<strong>$array</strong>中与模式<strong>$pattern</strong> 匹配的元素组成的数组。

<comment>Param:</comment>
  <info>string</info>  <strong>$pattern</strong>  要搜索的模式，字符串形式。
  <info>array</info>   <strong>$array</strong>    输入数组。
  <info>int</info>     <strong>$flags</strong>    如果设置为<info>PREG_GREP_INVERT</info>，这个函数返回输入数组中与 给定模式<strong>$pattern</strong>不匹配的元
                    素组成的数组。

<comment>Return:</comment>
  <info>array|false</info>  返回使用<strong>$array</strong>中key做索引的数组。 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * PCRE 模式
   * <strong>preg_quote()</strong>
   * <strong>preg_match_all()</strong>
   * <strong>preg_filter()</strong>
   * <strong>preg_last_error()</strong>


id: preg_last_error
type: function
doc:
<comment>Description:</comment>
  返回最后一个PCRE正则执行产生的错误代码
  
  返回最后一次PCRE正则执行的错误代码。
  
  <strong>preg_last_error()</strong> 示例
  ]]>以上示例会输出：
  
  以上示例会输出：

<comment>Return:</comment>
  <info>int</info>  返回下面常量中的一个(查看它们自身的解释):
       <info>PREG_NO_ERROR</info><info>PREG_INTERNAL_ERROR</info><info>PREG_BACKTRACK_LIMIT_ERROR</info> （参见 pcre.backtrack_limit）
       <info>PREG_RECURSION_LIMIT_ERROR</info> （参见 pcre.recursion_limit）
       <info>PREG_BAD_UTF8_ERROR</info><info>PREG_BAD_UTF8_OFFSET_ERROR</info><info>PREG_JIT_STACKLIMIT_ERROR</info>

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


id: preg_last_error_msg
type: function
doc:
<comment>Description:</comment>
  Returns the error message of the last PCRE regex execution
  
  Returns the error message of the last PCRE regex execution.

<comment>Return:</comment>
  <info>string</info>  Returns the error message on success, or <return>"No error"</return> if no error has occurred.

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


id: preg_match
type: function
doc:
<comment>Description:</comment>
  执行匹配正则表达式
  
  搜索<strong>$subject</strong>与<strong>$pattern</strong>给定的正则表达式的一个匹配.

<comment>Param:</comment>
  <info>string</info>  <strong>$pattern</strong>  要搜索的模式，字符串类型。
  <info>string</info>  <strong>$subject</strong>  输入字符串。
  <info>array</info>   <strong>$matches</strong>  如果提供了参数<strong>$matches</strong>，它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的
                    文本， $matches[1] 将包含第一个捕获子组匹配到的文本，以此类推。
  <info>int</info>     <strong>$flags</strong>    <strong>$flags</strong> 可以被设置为以下标记值的组合： <info>PREG_OFFSET_CAPTURE</info> 如果传递了这个标记，对
                    于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的字节数)。 注意：这
                    会改变填充到<strong>$matches</strong>参数的数组，使其每个元素成为一个由 第<return>0</return>个元素是匹配到的字符
                    串，第<return>1</return>个元素是该匹配字符串 在目标字符串<strong>$subject</strong>中的偏移量。
                    ]]>以上示例会输出： Array ( [0] => foobarbaz [1] => 0 )
                     [1] => Array ( [0] => foo [1] => 0 )
                     [2] => Array ( [0] => bar [1] => 3 )
                     [3] => Array ( [0] => baz [1] => 6 )
                    
                    )
                    ]]> <info>PREG_UNMATCHED_AS_NULL</info> 使用该标记，未匹配的子组会报告为 <info>null</info>；未使用时，报告
                    为空的 <info>string</info>。
                    ]]>以上示例会输出： string(2) "ac" [1]=> string(1) "a" [2]=> string(0) "" [3]=>
                    string(1) "c"
                    }
                    array(4) { [0]=> string(2) "ac" [1]=> string(1) "a" [2]=> NULL [3]=> string(1)
                    "c"
                    }
                    ]]> 
                    
                    如果传递了这个标记，对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符
                    串的字节数)。 注意：这会改变填充到<strong>$matches</strong>参数的数组，使其每个元素成为一个由 第
                    <return>0</return>个元素是匹配到的字符串，第<return>1</return>个元素是该匹配字符串 在目标字符串<strong>$subject</strong>中的偏移
                    量。
                    ]]>以上示例会输出： Array ( [0] => foobarbaz [1] => 0 )
                     [1] => Array ( [0] => foo [1] => 0 )
                     [2] => Array ( [0] => bar [1] => 3 )
                     [3] => Array ( [0] => baz [1] => 6 )
                    
                    )
                    ]]>
                    
                    以上示例会输出：
                    
                    使用该标记，未匹配的子组会报告为 <info>null</info>；未使用时，报告为空的 <info>string</info>。 
                    ]]>以上示例会输出： string(2) "ac" [1]=> string(1) "a" [2]=> string(0) "" [3]=>
                    string(1) "c"
                    }
                    array(4) { [0]=> string(2) "ac" [1]=> string(1) "a" [2]=> NULL [3]=> string(1)
                    "c"
                    }
                    ]]>
                    
                    以上示例会输出：
  <info>array</info>   <strong>$matches</strong>  如果传递了这个标记，对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符
                    串的字节数)。 注意：这会改变填充到<strong>$matches</strong>参数的数组，使其每个元素成为一个由 第
                    <return>0</return>个元素是匹配到的字符串，第<return>1</return>个元素是该匹配字符串 在目标字符串<strong>$subject</strong>中的偏移
                    量。
                    ]]>以上示例会输出： Array ( [0] => foobarbaz [1] => 0 )
                     [1] => Array ( [0] => foo [1] => 0 )
                     [2] => Array ( [0] => bar [1] => 3 )
                     [3] => Array ( [0] => baz [1] => 6 )
                    
                    )
                    ]]>
                    
                    以上示例会输出：
  <info>int</info>     <strong>$offset</strong>   通常，搜索从目标字符串的开始位置开始。可选参数 <strong>$offset</strong> 用于 指定从目标字符串的某
                    个位置开始搜索(单位是字节)。
                    
                    使用<strong>$offset</strong>参数不同于向<strong>preg_match()</strong> 传递按照位置通过<return>substr($subject, $offset)</return>截
                    取目标字符串结果， 因为<strong>$pattern</strong>可以包含断言比如^， $ 或者(?\<=x)。 比较：
                    ]]>以上示例会输出： 当这个示例使用截取后传递时 
                    ]]> 将会产生匹配  Array ( [0] => def [1] => 0 )
                    
                    )
                    ]]> 要避免使用 <strong>substr()</strong>，可以用 <return>\G</return> 断言而不是 <return>^</return> 锚，或者 <return>A</return> 修改器，它们都能和
                    <strong>$offset</strong> 参数一起运行。
                    
                    以上示例会输出：
                    
                    当这个示例使用截取后传递时
                    
                    将会产生匹配
                    
                    要避免使用 <strong>substr()</strong>，可以用 <return>\G</return> 断言而不是 <return>^</return> 锚，或者 <return>A</return> 修改器，它们都能和
                    <strong>$offset</strong> 参数一起运行。

<comment>Return:</comment>
  <info>int|false</info>  如果 <strong>$pattern</strong> 匹配到指定 <strong>$subject</strong>，则 <strong>preg_match()</strong> 返回 1，如果没有匹配到则返回 0， 或
             者在失败时返回 <info>false</info>。
             
             此函数可能返回布尔值
             <info>false</info>，但也可能返回等同于 <info>false</info> 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用
             ===
             运算符来测试此函数的返回值。

<comment>See Also:</comment>
   * PCRE 模式
   * <strong>preg_quote()</strong>
   * <strong>preg_match_all()</strong>
   * <strong>preg_replace()</strong>
   * <strong>preg_split()</strong>
   * <strong>preg_last_error()</strong>
   * <strong>preg_last_error_msg()</strong>


id: preg_match_all
type: function
doc:
<comment>Description:</comment>
  执行一个全局正则表达式匹配
  
  搜索<strong>$subject</strong>中所有匹配<strong>$pattern</strong>给定正则表达式 的匹配结果并且将它们以<strong>$flag</strong>指定顺序输出到<strong>$matches</strong>中.
  
  在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索.

<comment>Param:</comment>
  <info>string</info>  <strong>$pattern</strong>  要搜索的模式，字符串形式。
  <info>string</info>  <strong>$subject</strong>  输入字符串。
  <info>array</info>   <strong>$matches</strong>  多维数组，作为输出参数输出所有匹配结果, 数组排序通过<strong>$flags</strong>指定。
  <info>int</info>     <strong>$flags</strong>    可以结合下面标记使用(注意不能同时使用<info>PREG_PATTERN_ORDER</info>和 <info>PREG_SET_ORDER</info>)：
                    <info>PREG_PATTERN_ORDER</info> 结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存
                    第一个子组的所有匹配，以此类推。
                    ]]>以上示例会输出：example: , this is a test
                    example: , this is a test
                    ]]> 因此, $out[0] 是包含匹配完整模式的字符串的数组， $out[1] 是包含闭合标签内的
                    字符串的数组。  如果正则表达式包含了带名称的子组，$matches 额外包含了带名称子组
                    的键。  如果正则表达式里，子组名称重名了，则仅最右侧的子组储存在 $matches[NAME]
                    中。
                    ]]>以上示例会输出：  [1] => bar
                    )
                    ]]> <info>PREG_SET_ORDER</info> 结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组)，
                    $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组，以此类推。
                    ]]>以上示例会输出：example: , example:
                    this is a test, this is a test
                    ]]> <info>PREG_OFFSET_CAPTURE</info> 如果这个标记被传递，每个发现的匹配返回时会增加它相对目标
                    字符串的字节偏移量。 注意这会改变<strong>$matches</strong>中的每一个匹配结果字符串元素，使其 成为
                    一个第<return>0</return>个元素为匹配结果字符串，第<return>1</return>个元素为 匹配结果字符串在<strong>$subject</strong>中的偏移量。
                    ]]>以上示例会输出： Array ( [0] => Array ( [0] => foobarbaz [1] => 0 )
                     )
                     [1] => Array ( [0] => Array ( [0] => foo [1] => 0 )
                     )
                     [2] => Array ( [0] => Array ( [0] => bar [1] => 3 )
                     )
                     [3] => Array ( [0] => Array ( [0] => baz [1] => 6 )
                     )
                    
                    )
                    ]]> <info>PREG_UNMATCHED_AS_NULL</info> 传入此标记，未匹配的子组报告为 <info>null</info>；否则会是空
                    <info>string</info>。
                    
                    结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹
                    配，以此类推。
                    
                    
                    ]]>以上示例会输出：example: , this is a test
                    example: , this is a test
                    ]]> 因此, $out[0] 是包含匹配完整模式的字符串的数组， $out[1] 是包含闭合标签内的
                    字符串的数组。
                    
                    以上示例会输出：
                    
                    因此, $out[0] 是包含匹配完整模式的字符串的数组， $out[1] 是包含闭合标签内的字符
                    串的数组。
                    
                    如果正则表达式包含了带名称的子组，$matches 额外包含了带名称子组的键。
                    
                    如果正则表达式里，子组名称重名了，则仅最右侧的子组储存在 $matches[NAME] 中。 
                    ]]>以上示例会输出：  [1] => bar
                    )
                    ]]>
                    
                    以上示例会输出：
                    
                    结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组)， $matches[1]是包含
                    第二次匹配到的所有匹配(包含子组)的数组，以此类推。
                    ]]>以上示例会输出：example: , example:
                    this is a test, this is a test
                    ]]>
                    
                    以上示例会输出：
                    
                    如果这个标记被传递，每个发现的匹配返回时会增加它相对目标字符串的字节偏移量。 注
                    意这会改变<strong>$matches</strong>中的每一个匹配结果字符串元素，使其 成为一个第<return>0</return>个元素为匹配结果
                    字符串，第<return>1</return>个元素为 匹配结果字符串在<strong>$subject</strong>中的偏移量。
                    ]]>以上示例会输出： Array ( [0] => Array ( [0] => foobarbaz [1] => 0 )
                     )
                     [1] => Array ( [0] => Array ( [0] => foo [1] => 0 )
                     )
                     [2] => Array ( [0] => Array ( [0] => bar [1] => 3 )
                     )
                     [3] => Array ( [0] => Array ( [0] => baz [1] => 6 )
                     )
                    
                    )
                    ]]>
                    
                    以上示例会输出：
                    
                    传入此标记，未匹配的子组报告为 <info>null</info>；否则会是空 <info>string</info>。
                    
                    如果没有给定排序标记，假定设置为<info>PREG_PATTERN_ORDER</info>。
  <info>array</info>   <strong>$matches</strong>  如果这个标记被传递，每个发现的匹配返回时会增加它相对目标字符串的字节偏移量。 注
                    意这会改变<strong>$matches</strong>中的每一个匹配结果字符串元素，使其 成为一个第<return>0</return>个元素为匹配结果
                    字符串，第<return>1</return>个元素为 匹配结果字符串在<strong>$subject</strong>中的偏移量。
                    ]]>以上示例会输出： Array ( [0] => Array ( [0] => foobarbaz [1] => 0 )
                     )
                     [1] => Array ( [0] => Array ( [0] => foo [1] => 0 )
                     )
                     [2] => Array ( [0] => Array ( [0] => bar [1] => 3 )
                     )
                     [3] => Array ( [0] => Array ( [0] => baz [1] => 6 )
                     )
                    
                    )
                    ]]>
                    
                    以上示例会输出：
  <info>int</info>     <strong>$offset</strong>   通常， 查找时从目标字符串的开始位置开始。可选参数<strong>$offset</strong>用于 从目标字符串中指定
                    位置开始搜索(单位是字节)。
                    
                    使用 <strong>$offset</strong> 参数不同于传递 substr($subject, $offset) 的 结果到 <strong>preg_match_all()</strong>
                    作为目标字符串，因为 <strong>$pattern</strong> 可以包含断言比如^， $ 或者 (?\<=x) 。 示例查看 <strong>preg_match()</strong>。

<comment>Return:</comment>
  <info>int|false</info>  返回完整匹配次数（可能是 0）， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * PCRE 匹配
   * <strong>preg_quote()</strong>
   * <strong>preg_match()</strong>
   * <strong>preg_replace()</strong>
   * <strong>preg_split()</strong>
   * <strong>preg_last_error()</strong>


id: preg_quote
type: function
doc:
<comment>Description:</comment>
  转义正则表达式字符
  
  <strong>preg_quote()</strong>需要参数 <strong>$str</strong> 并向其中 每个正则表达式语法中的字符前增加一个反斜线。 这通常用于你有一些
  运行时字符串 需要作为正则表达式进行匹配的时候。
  
  正则表达式特殊字符有： <return>. \ + * ? [ ^ ] $ ( ) { } = ! \< &gt; | : - #</return>
  
  注意 <return>/</return> 不是正则表达式特殊字符。
  
  注意：<strong>preg_quote()</strong> 的应用场景不是用于 <strong>preg_replace()</strong> 的 $replacement  字符串参数。

<comment>Param:</comment>
  <info>string</info>       <strong>$str</strong>        输入字符串
  <info>string|null</info>  <strong>$delimiter</strong>  如果指定了可选参数 <strong>$delimiter</strong>，它也会被转义。这通常用于 转义PCRE函数使用
                           的分隔符。 <return>/</return> 是最常见的分隔符。

<comment>Return:</comment>
  <info>string</info>  返回转义后的字符串。

<comment>See Also:</comment>
   * PCRE 模式
   * <strong>escapeshellcmd()</strong>


id: preg_replace
type: function
doc:
<comment>Description:</comment>
  执行一个正则表达式的搜索和替换
  
  搜索 <strong>$subject</strong> 中匹配 <strong>$pattern</strong> 的部分，以 <strong>$replacement</strong> 进行替换。
  
  匹配一个精确的字符串，而不是一个模式， 可以使用 <strong>str_replace()</strong> 或 <strong>str_ireplace()</strong> 代替这个函数。

<comment>Param:</comment>
  <info>string|array</info>  <strong>$pattern</strong>      要搜索的模式。可以是一个字符串或字符串数组。
                              
                              可以使用一些 PCRE 修饰符。
  <info>string|array</info>  <strong>$replacement</strong>  用于替换的字符串或字符串数组。如果这个参数是一个字符串，并且 <strong>$pattern</strong>
                              是一个数组，那么所有的模式都使用这个字符串进行替换。如果 <strong>$pattern</strong> 和
                              <strong>$replacement</strong> 都是数组，每个 <strong>$pattern</strong> 使用 <strong>$replacement</strong> 中对应的元素进
                              行替换。如果 <strong>$replacement</strong> 中的元素比 <strong>$pattern</strong> 中的少，多出来的
                              <strong>$pattern</strong> 使用空字符串进行替换。
                              
                              <strong>$replacement</strong> 中可以包含后向引用 <return>\\n</return> 或 <return>$n</return>，语法上首选后者。 每个这样的
                              引用将被匹配到的第 n 个捕获子组捕获到的文本替换。 n 可以是0-99，<return>\\0</return> 和
                              <return>$0</return> 代表完整的模式匹配文本。捕获子组的序号计数方式为：代表捕获子组的左
                              括号从左到右， 从1开始数。如果要在 <strong>$replacement</strong> 中使用反斜线，必须使用
                              4 个(<return>"\\\\"</return>，译注：因为这首先是 PHP 的字符串，经过转义后，是两个，再经
                              过正则表达式引擎后才被认为是一个原文反斜线)。
                              
                              当在替换模式下工作并且后向引用后面紧跟着需要是另外一个数字 (比如：在一
                              个匹配模式后紧接着增加一个原文数字)，不能使用 <return>\\1</return> 这样的语法来描述后向
                              引用。比如，<return>\\11</return>将会使<strong>preg_replace()</strong> 不能理解你希望的是一个 <return>\\1</return> 后向引
                              用紧跟一个原文 <return>1</return>，还是一个 <return>\\11</return> 后向引用后面不跟任何东西。 这种情况下
                              解决方案是使用 <return>${1}1</return>。这创建了一个独立的 <return>$1</return> 后向引用, 一个独立的原文
                              <return>1</return>。
                              
                              当使用被弃用的 <return>e</return> 修饰符时, 这个函数会转义一些字符 (即：<return>'</return>、<return>"</return>、 <return>\</return> 和
                              NULL) 然后进行后向引用替换。当这些完成后请确保后向引用解析完后没有单引
                              号或双引号引起的语法错误 (比如： <return>'strlen(\'$1\')+strlen("$2")'</return>)。确保
                              符合 PHP 的 字符串语法，并且符合 eval 语法。因为在完成替换后，引擎会将
                              结果字符串作为 PHP 代码使用 eval 方式进行评估并将返回值作为最终参与替
                              换的字符串。
  <info>string|array</info>  <strong>$subject</strong>      要进行搜索和替换的字符串或字符串数组。
                              
                              如果 <strong>$subject</strong> 是一个数组，搜索和替换回在 <strong>$subject</strong> 的每一个元素上进行,
                              并且返回值也会是一个数组。
                              
                              如果 <strong>$subject</strong> 是关联数组，则键会保留在返回值中。
  <info>int</info>           <strong>$limit</strong>        每个模式在每个 <strong>$subject</strong> 上进行替换的最大次数。默认是 <return>-1</return>(无限)。
  <info>int</info>           <strong>$count</strong>        如果指定，将会被填充为完成的替换次数。

<comment>Return:</comment>
  <info>string|array|null</info>  如果 <strong>$subject</strong> 是一个数组，<strong>preg_replace()</strong> 返回一个数组，其他情况下返回一个字符
                     串。
                     
                     如果匹配被查找到，替换后的 <strong>$subject</strong> 被返回，其他情况下返回没有改变的 <strong>$subject</strong>。
                     如果发生错误，返回 <info>null</info> 。

<comment>See Also:</comment>
   * PCRE 模式
   * <strong>preg_quote()</strong>
   * <strong>preg_filter()</strong>
   * <strong>preg_match()</strong>
   * <strong>preg_replace_callback()</strong>
   * <strong>preg_split()</strong>
   * <strong>preg_last_error()</strong>
   * <strong>str_replace()</strong>


id: preg_replace_callback
type: function
doc:
<comment>Description:</comment>
  执行一个正则表达式搜索并且使用一个回调进行替换
  
  这个函数的行为除了可以指定一个 <strong>$callback</strong> 替代 <strong>$replacement</strong> 进行替换字符串的计算，其他方面等同于
  <strong>preg_replace()</strong>。

<comment>Param:</comment>
  <info>string|array</info>  <strong>$pattern</strong>   要搜索的模式，可以是字符串或一个字符串数组。
  <info>callable</info>      <strong>$callback</strong>  一个回调函数，在每次需要替换时调用，调用时函数得到的参数是从 <strong>$subject</strong> 中
                           匹配到的结果。回调函数返回真正参与替换的字符串。这是该回调函数的签名：
                           
                           <info>string</info>handler<info>array</info><strong>$matches</strong>
                           
                           经常会需要 <strong>$callback</strong> 函数而仅用于 <strong>preg_replace_callback()</strong> 一个地方的调
                           用。在这种情况下，你可以使用 匿名函数 来定义一个匿名函数作为
                           <strong>preg_replace_callback()</strong> 调用时的回调。 这样做你可以保留所有调用信息在同一
                           个位置并且不会因为一个不在任何其他地方使用的回调函数名称而污染函数名称空
                           间。
                           
                           <strong>preg_replace_callback()</strong> 和 匿名函数
                           ]]>
  <info>string|array</info>  <strong>$subject</strong>   要搜索替换的目标字符串或字符串数组。
  <info>int</info>           <strong>$limit</strong>     对于每个模式用于每个 <strong>$subject</strong> 字符串的最大可替换次数。 默认是 <return>-1</return>（无限
                           制）。
  <info>int</info>           <strong>$count</strong>     如果指定，这个变量将被填充为替换执行的次数。
  <info>int</info>           <strong>$flags</strong>     <strong>$flags</strong> 可以是 <info>PREG_OFFSET_CAPTURE</info> 和 <info>PREG_UNMATCHED_AS_NULL</info> 标志的组合，
                           这会影响匹配到的结果的格式。 相关详情请参阅 <strong>preg_match()</strong> 中的描述。

<comment>Return:</comment>
  <info>string|array|null</info>  如果 <strong>$subject</strong> 是一个数组， <strong>preg_replace_callback()</strong> 返回一个数组，其他情况返回字
                     符串。错误发生时返回 <info>null</info>。
                     
                     如果查找到了匹配，返回替换后的目标字符串（或字符串数组），其他情况 <strong>$subject</strong> 将
                     会无变化返回。

<comment>See Also:</comment>
   * PCRE 模式
   * <strong>preg_replace_callback_array()</strong>
   * <strong>preg_quote()</strong>
   * <strong>preg_replace()</strong>
   * <strong>preg_last_error()</strong>
   * 匿名函数


id: preg_replace_callback_array
type: function
doc:
<comment>Description:</comment>
  Perform a regular expression search and replace using callbacks
  
  The behavior of this function is similar to <strong>preg_replace_callback()</strong>, except that callbacks are
  executed on a per-pattern basis.

<comment>Param:</comment>
  <info>array</info>         <strong>$pattern</strong>  An associative array mapping patterns (keys) to <info>callable</info>s (values).
  <info>string|array</info>  <strong>$subject</strong>  The string or an array with strings to search and replace.
  <info>int</info>           <strong>$limit</strong>    The maximum possible replacements for each pattern in each <strong>$subject</strong>
                          string. Defaults to <return>-1</return> (no limit).
  <info>int</info>           <strong>$count</strong>    If specified, this variable will be filled with the number of replacements
                          done.
  <info>int</info>           <strong>$flags</strong>    <strong>$flags</strong> can be a combination of the <info>PREG_OFFSET_CAPTURE</info> and
                          <info>PREG_UNMATCHED_AS_NULL</info> flags, which influence the format of the matches
                          array. See the description in <strong>preg_match()</strong> for more details.

<comment>Return:</comment>
  <info>string|array|null</info>  <strong>preg_replace_callback_array()</strong> returns an array if the <strong>$subject</strong> parameter is an
                     array, or a string otherwise. On errors the return value is <info>null</info>
                     
                     If matches are found, the new subject will be returned, otherwise <strong>$subject</strong> will
                     be returned unchanged.

<comment>See Also:</comment>
   * PCRE Patterns
   * <strong>preg_replace_callback()</strong>
   * <strong>preg_quote()</strong>
   * <strong>preg_replace()</strong>
   * <strong>preg_last_error()</strong>
   * Anonymous functions


id: preg_split
type: function
doc:
<comment>Description:</comment>
  通过一个正则表达式分隔字符串
  
  通过一个正则表达式分隔给定字符串.

<comment>Param:</comment>
  <info>string</info>  <strong>$pattern</strong>  用于搜索的模式，字符串形式。
  <info>string</info>  <strong>$subject</strong>  输入字符串
  <info>int</info>     <strong>$limit</strong>    如果指定，将限制分隔得到的子串最多只有<strong>$limit</strong>个，返回的最后一个 子串将包含所有剩
                    余部分。<strong>$limit</strong>值为-1， 0或null时都代表"不限制"。
  <info>int</info>     <strong>$flags</strong>    <strong>$flags </strong>可以是任何下面标记的组合(以位或运算 <return>|</return> 组合)： <info>PREG_SPLIT_NO_EMPTY</info> 如果这
                    个标记被设置， <strong>preg_split()</strong> 将仅返回分隔后的非空部分。 <info>PREG_SPLIT_DELIM_CAPTURE</info>
                    如果这个标记设置了，用于分隔的模式中的括号表达式将被捕获并返回。
                    <info>PREG_SPLIT_OFFSET_CAPTURE</info> 如果这个标记被设置, 对于每一个出现的匹配返回时将会附加
                    字符串偏移量.  注意：这将会改变返回数组中的每一个元素, 使其每个元素成为一个由第<return>0</return>
                    个元素为分隔后的子串，第<return>1</return>个元素为该子串在<strong>$subject</strong> 中的偏移量组成的数组。
                    
                    如果这个标记被设置， <strong>preg_split()</strong> 将仅返回分隔后的非空部分。
                    
                    如果这个标记设置了，用于分隔的模式中的括号表达式将被捕获并返回。
                    
                    如果这个标记被设置, 对于每一个出现的匹配返回时将会附加字符串偏移量.  注意：这将
                    会改变返回数组中的每一个元素, 使其每个元素成为一个由第<return>0</return> 个元素为分隔后的子串，第
                    <return>1</return>个元素为该子串在<strong>$subject</strong> 中的偏移量组成的数组。
  <info>string</info>  <strong>$subject</strong>  如果这个标记被设置, 对于每一个出现的匹配返回时将会附加字符串偏移量.  注意：这将
                    会改变返回数组中的每一个元素, 使其每个元素成为一个由第<return>0</return> 个元素为分隔后的子串，第
                    <return>1</return>个元素为该子串在<strong>$subject</strong> 中的偏移量组成的数组。

<comment>Return:</comment>
  <info>array|false</info>  返回一个使用 <strong>$pattern</strong> 边界分隔 <strong>$subject</strong> 后得到 的子串组成的数组， 或者在失败时返回
               <info>false</info>。

<comment>See Also:</comment>
   * PCRE 模式
   * <strong>preg_quote()</strong>
   * <strong>implode()</strong>
   * <strong>preg_match()</strong>
   * <strong>preg_match_all()</strong>
   * <strong>preg_replace()</strong>
   * <strong>preg_last_error()</strong>


id: prev
type: function
doc:
<comment>Description:</comment>
  将数组的内部指针倒回一位
  
  将数组的内部指针倒回一位。
  
  <strong>prev()</strong> 和 <strong>next()</strong> 的行为类似，只除了它将内部指针倒回一位而不是前移一位。

<comment>Param:</comment>
  <info>array|object</info>  <strong>$array</strong>  The input array.

<comment>Return:</comment>
  <info>mixed</info>  返回数组内部指针指向的前一个单元的值，或当没有更多单元时返回 <info>false</info>。
         
         此函数可能返回布尔值
         <info>false</info>，但也可能返回等同于 <info>false</info> 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用
         ===
         运算符来测试此函数的返回值。

<comment>See Also:</comment>
   * <strong>current()</strong>
   * <strong>end()</strong>
   * <strong>next()</strong>
   * <strong>reset()</strong>
   * <strong>each()</strong>


id: print
type: function
doc:
<comment>Description:</comment>
  输出字符串
  
  输出 <strong>$expression</strong>。
  
  <return>print</return> 不是函数而是语言结构。它的参数是跟在 <return>print</return> 关键字后面的表达式，并且不用括号分割。
  
  和 <strong>echo()</strong> 最主要的区别是 <return>print</return> 仅接受一个参数，并始终返回 <return>1</return>。

<comment>Param:</comment>
  <info>string</info>  <strong>$expression</strong>  要输出的表达式。即使启用 <return>strict_types</return> 指令，非字符串也会强制转换为字符串。

<comment>Return:</comment>
  <info>int</info>  总是返回 <return>1</return>。

<comment>See Also:</comment>
   * <strong>echo()</strong>
   * <strong>printf()</strong>
   * <strong>flush()</strong>
   * 指定字面字符串的方式


id: print_r
type: function
doc:
<comment>Description:</comment>
  打印人类可读的变量信息
    
  
  <strong>print_r()</strong> 以人类可读的方式显示变量的信息。
  
  <strong>print_r()</strong>、<strong>var_dump()</strong>、<strong>var_export()</strong>  还将显示对象的 protected 和 private 属性。不会显示静态类成
  员。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$value</strong>   要打印的表达式。
  <info>bool</info>   <strong>$return</strong>  想要捕获 <strong>print_r()</strong> 的输出，请使用 <strong>$return</strong> 参数。当此参数为 <info>true</info>，<strong>print_r()</strong> 将返回
                  信息，而不是打印它。

<comment>Return:</comment>
  <info>string|bool</info>  如果是指定 <info>string</info>、<info>int</info> 或 <info>float</info>，会直接打印值本身。如果是指定 <info>array</info>，值将以键和元素的
               格式显示。<info>object</info> 也一样。
               
               当 <strong>$return</strong> 参数设置成 <info>true</info>，本函数会返回 <info>string</info>。否则返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>ob_start()</strong>
   * <strong>var_dump()</strong>
   * <strong>var_export()</strong>


id: printf
type: function
doc:
<comment>Description:</comment>
  输出格式化字符串
  
  依据 <strong>$format</strong> 格式参数产生输出。

<comment>Param:</comment>
  <info>string</info>  <strong>$format</strong>  format 字符串通常由零或多个指令组成：普通字符（不包含 <return>%</return>）——直接复制到结果，转换规
                   范——获取每个参数的结果。
                   
                   转换规范遵循此原型： <return>%[argnum$][flags][width][.precision]specifier</return>.
                   
                   整数后跟美元符号 <return>$</return>，用于指定转换中要处理的参数数量。
                   
                   标志标志说明<return>-</return> 在指定字段宽度时左对齐，默认右对齐 <return>+</return> 正数的加号 <return>+</return>前缀，默认负数的前
                   缀是负号。 <return> </return>(space) 空格填充结果。这是默认设置。 <return>0</return> 仅用 0 进行左侧数字填充。使用
                   <return>s</return> 标志符可以右侧填充。 <return>'</return>(char) 用字符（char）填充结果。
                   
                   要么是整数，表示转换结果应该有多少个字符（最少），要么是 <return>*</return>。如果使用 <return>*</return>，那么宽度
                   将作为额外的整数值提供，位于格式化符号之前。
                   
                   小数点 <return>.</return>，可选的后跟整数或者 <return>*</return>，其含义取决于格式化符号： <return>e</return>、<return>E</return>、<return>f</return>、<return>F</return> 标志符：小数
                   点后需要打印的位数（默认是 6）。 <return>g</return>、<return>G</return>、<return>h</return>、<return>H</return> 标志符：这是要打印的最大有效位数。 <return>s</return>
                   标志符：充当分界点，为字符串设置最大字符限制。   如果小数点没有明确的精度值，则假
                   设是 0。如果使用 <return>*</return>，则精度将作为额外的整数值提供，位于格式化符号之前。
                   
                   <return>e</return>、<return>E</return>、<return>f</return>、<return>F</return> 标志符：小数点后需要打印的位数（默认是 6）。
                   
                   <return>g</return>、<return>G</return>、<return>h</return>、<return>H</return> 标志符：这是要打印的最大有效位数。
                   
                   <return>s</return> 标志符：充当分界点，为字符串设置最大字符限制。
                   
                   如果小数点没有明确的精度值，则假设是 0。如果使用 <return>*</return>，则精度将作为额外的整数值提
                   供，位于格式化符号之前。
                   
                   标志符标志符说明<return>%</return> 字面意思的百分号字符。不需要参数。 <return>b</return> 参数视为整数并以二进制数字
                   呈现。 <return>c</return> 参数视为整数并以 ASCII 字符呈现。 <return>d</return> 参数视为整数并以（有符号）十进制数字
                   呈现。 <return>e</return> 参数当做科学符号处理（例如 1.2e+2）。 <return>E</return> 与 <return>e</return> 标志符相同，但使用大写字母
                   （例如 1.2E+2）。 <return>f</return> 参数当做浮点数处理且作为浮点数呈现（locale aware）。 <return>F</return> 参数当
                   做浮点数处理且作为浮点数呈现（non-locale aware）。 <return>g</return> 通用格式。  Let P equal the
                   precision if nonzero, 6 if the precision is omitted, or 1 if the precision is
                   zero. Then, if a conversion with style E would have an exponent of X:  If P &gt;
                   X ≥ −4, the conversion is with style f and precision P − (X + 1). Otherwise, the
                   conversion is with style e and precision P − 1. <return>G</return> Like the <return>g</return> specifier but uses <return>E</return>
                   and <return>f</return>. <return>h</return> Like the <return>g</return> specifier but uses <return>F</return>. Available as of PHP 8.0.0. <return>H</return> Like the <return>g</return>
                   specifier but uses <return>E</return> and <return>F</return>. Available as of PHP 8.0.0. <return>o</return> 参数视为整数并以八进制数
                   字来呈现。 <return>s</return> 参数视为字符串来呈现。 <return>u</return> 参数视为整数并以无符号十进制数字呈现。 <return>x</return> 参
                   数视为整数并作为十六进制数字呈现（带小写字母）。 <return>X</return> 参数视为整数并作为十六进制数字
                   呈现（带大写字母）。
                   
                   通用格式。
                   
                   Let P equal the precision if nonzero, 6 if the precision is omitted, or 1 if the
                   precision is zero. Then, if a conversion with style E would have an exponent of
                   X:
                   
                   If P &gt; X ≥ −4, the conversion is with style f and precision P − (X + 1).
                   Otherwise, the conversion is with style e and precision P − 1.
                   
                   <return>c</return> 类型标志符忽略填充和宽度
                   
                   Attempting to use a combination of the string and width specifiers with character
                   sets that require more than one byte per character may result in unexpected
                   results
                   
                   变量将会强制转换为适合标志符的类型： 类型处理类型标志符<info>string</info><return>s</return><info>int</info><return>d</return>, <return>u</return>, <return>c</return>, <return>o</return>, <return>x</return>,
                   <return>X</return>, <return>b</return><info>float</info><return>e</return>, <return>E</return>, <return>f</return>, <return>F</return>, <return>g</return>, <return>G</return>, <return>h</return>, <return>H</return>
  <info>mixed</info>   <strong>$values</strong>  

<comment>Return:</comment>
  <info>int</info>  返回输出字符串的长度。

<comment>See Also:</comment>
   * <strong>print()</strong>
   * <strong>sprintf()</strong>
   * <strong>fprintf()</strong>
   * <strong>vprintf()</strong>
   * <strong>vsprintf()</strong>
   * <strong>vfprintf()</strong>
   * <strong>sscanf()</strong>
   * <strong>fscanf()</strong>
   * <strong>number_format()</strong>
   * <strong>date()</strong>
   * <strong>flush()</strong>


id: proc_close
type: function
doc:
<comment>Description:</comment>
  关闭由 proc_open 打开的进程并且返回进程退出码
  
  <strong>proc_close()</strong> 同 <strong>pclose()</strong> 函数类似，只是 <strong>proc_close()</strong> 只能用来关闭由 <strong>proc_open()</strong> 函数打开的进程。
  <strong>proc_close()</strong> 函数会等待进程终止，并返回它的退出代码。调用此函数时，为避免死锁，该进程打开的管道将
  关闭——在管道处于打开状态时，子进程将不能退出。

<comment>Param:</comment>
  <info>resource</info>  <strong>$process</strong>  要关闭的由 <strong>proc_open()</strong> 打开的 <info>resource</info> 。

<comment>Return:</comment>
  <info>int</info>  返回进程的终止状态码。 如果发生错误，将返回  <return>-1</return>。
       
       如果 PHP 是通过 --enable-sigchild 编译的，此函数将没有返回值。


id: proc_get_status
type: function
doc:
<comment>Description:</comment>
  获取由 proc_open 函数打开的进程的信息
  
  <strong>proc_get_status()</strong> 函数可以获取由 <strong>proc_open()</strong> 函数打开的进程的信息。

<comment>Param:</comment>
  <info>resource</info>  <strong>$process</strong>  要检查的由 <strong>proc_open()</strong> 打开的进程 <info>resource</info>。

<comment>Return:</comment>
  <info>array</info>  收集了进程信息的 <info>array</info>。返回的数组包含下列元素：
         
         元素类型描述command<info>string</info> 传入 <strong>proc_open()</strong> 函数的命令行字符串。 pid<info>int</info>进程
         IDrunning<info>bool</info><info>true</info> 表示进程还在运行中， <info>false</info> 表示进程已经终止 signaled<info>bool</info><info>true</info> 表示子进程被
         未捕获的信号所终止。 在 Windows 平台永远为 <info>false</info>。 stopped<info>bool</info><info>true</info> 表示子进程被信号停止。
         在 Windows 平台永远为 <info>false</info>。 exitcode<info>int</info> 进程的退出码（仅在 <return>running</return> 为 <info>false</info> 时有意义）。
         仅在第一次调用此函数时会返回实际的值， 后续的调用将返回 <return>-1</return>。 termsig<info>int</info> 导致子进程终止执行
         的信号值 （仅在 <return>signaled</return> 为 <info>true</info> 时有意义）。 stopsig<info>int</info> 导致子进程停止执行的信号值 （仅在
         <return>stopped</return> 为 <info>true</info> 时有意义）。

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


id: proc_nice
type: function
doc:
<comment>Description:</comment>
  修改当前进程的优先级
  
  <strong>proc_nice()</strong> 修改当前进程的优先级， 修改量由 <strong>$priority</strong> 参数指定。 <strong>$priority</strong> 为正数会降低当前进程优
  先级， 反之，为负数会提高优先级。
  
  <strong>proc_nice()</strong> 和 <strong>proc_open()</strong> 函数以及和 <strong>proc_open()</strong> 相关的函数并无什么关系。

<comment>Param:</comment>
  <info>int</info>  <strong>$priority</strong>  新的优先级值，具体的设定取决于所运行的平台。
                  
                  在 Unix 系统上，较小的值表示较高的优先级，例如：<return>-20</return>， 而正数值表示更低的优先级。
                  
                  在 Windows 平台上，<strong>$priority</strong> 参数 的含义如下：

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。。 如果发生错误，例如用户无权修改当前进程的优先
        级， 会生成 <info>E_WARNING</info> 级别的错误。

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


id: proc_open
type: function
doc:
<comment>Description:</comment>
  执行一个命令，并且打开用来输入/输出的文件指针。
      
  
  类似 <strong>popen()</strong> 函数， 但是 <strong>proc_open()</strong> 提供了更加强大的控制程序执行的能力。

<comment>Param:</comment>
  <info>array|string</info>  <strong>$command</strong>          以 <info>string</info> 形式执行的命令行。特殊字符必须经过转义，并且使用正确的引
                                  号。
                                  
                                  在 Windows 上, 除非在 <strong>$options</strong> 中 把 <return>bypass_shell</return> 设置为  <info>true</info> ，
                                  否则 <strong>$command</strong> 会被传递给 cmd.exe （实际上是 <return>%ComSpec%</return>） 其中的 <return>/c</return>
                                  标志是 未加引号的 字符串 （也就是和 <strong>proc_open()</strong> 一样）。 这可能会
                                  导致 cmd.exe 删除 <strong>$command</strong> 中的引号 （详见 cmd.exe 文档）， 从而导
                                  致意外的，甚至是潜在的危险行为，因为 cmd.exe 错误消息可能包含 （部
                                  分） 传递的 <strong>$command</strong> （见下面的例子）。
                                  
                                  从 PHP 7.4.0 开始，<strong>$command</strong> 参数可以使用 <info>array</info> 类型传递。 在这种情
                                  况下，进程将直接打开（不通过 shell ）。 而 PHP 会处理任何必要的参
                                  数转义。
                                  
                                  在 Windows 上， <info>array</info> 元素的参数转义假定 执行命令的命令行解析与 VC
                                  运行时进行的命令行参数解析兼容。
  <info>array</info>         <strong>$descriptor_spec</strong>  一个索引数组。 数组的键表示描述符，数组元素值表示 PHP 如何将这些描
                                  述符传送至子进程。 0 表示标准输入（stdin），1 表示标准输出
                                  （stdout），2 表示标准错误（stderr）。
                                  
                                  数组中的元素可以是：     包含了要传送至进程的管道的描述信息的数
                                  组。第一个元素为描述符类型，第二个元素是针对该描述符的选项。有效的
                                  类型有：<return>pipe</return>（第二个元素可以是：<return>r</return> 向进程传送该管道的读取端，<return>w</return> 向进
                                  程传送该管道的写入端），以及 <return>file</return>（第二个元素为文件名）。注意除了
                                  <return>w</return> 之外的任何内容都视为 <return>r</return>。  流资源表示真实文件描述符（例如：已打开
                                  的文件，套接字，<info>STDIN</info>）。
                                  
                                  文件描述符的值不限于 0，1 和 2，你可以使用任何有效的文件描述符 并
                                  将其传送至子进程。 这使得你的脚本可以和其他脚本交互操作。 例如，可
                                  以通过指定文件描述符将密码以更加安全的方式 传送至诸如 PGP，GPG 和
                                  openssl 程序， 同时也可以很方便的获取这些程序的状态信息。
  <info>array</info>         <strong>$pipes</strong>            将被置为索引数组， 其中的元素是被执行程序创建的管道对应到 PHP 这一
                                  端的文件指针。
  <info>string|null</info>   <strong>$cwd</strong>              要执行命令的初始工作目录。 必须是 绝对 路径， 设置此参数为 <info>null</info>
                                  表示使用默认值（当前 PHP 进程的工作目录）。
  <info>array|null</info>    <strong>$env_vars</strong>         要执行的命令所使用的环境变量。 设置此参数为 <info>null</info> 表示使用和当前
                                  PHP 进程相同的环境变量。
  <info>array|null</info>    <strong>$options</strong>          你还可以指定一些附加选项。 目前支持的选项包括： <return>suppress_errors</return>
                                  （仅用于 Windows 平台）： 设置为 <info>true</info> 表示抑制本函数产生的错误。
                                  <return>bypass_shell</return> （仅用于 Windows 平台）： 设置为 <info>true</info> 表示绕过
                                  <return>cmd.exe</return> shell。 <return>blocking_pipes</return> （仅用于 Windows 平台）： 设置为
                                  <info>true</info> 表示强制堵塞管道。 <return>create_process_group</return> （仅用于 Windows 平
                                  台）： 设置为 <info>true</info> 表示允许子进程处理 <return>CTRL</return> 事件。
                                  <return>create_new_console</return> （仅用于 Windows 平台）： 表示新进程有一个新的
                                  控制台，用于代替父进程的控制台。

<comment>Return:</comment>
  <info>resource|false</info>  返回表示进程的资源类型， 当使用完毕之后，请调用 <strong>proc_close()</strong> 函数来关闭此资源。 如
                  果失败，返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>popen()</strong>
   * <strong>exec()</strong>
   * <strong>system()</strong>
   * <strong>passthru()</strong>
   * <strong>stream_select()</strong>
   * The 执行运算符


id: proc_terminate
type: function
doc:
<comment>Description:</comment>
  杀死由 proc_open 打开的进程
  
  向 <strong>$process</strong>（由 <strong>proc_open()</strong> 创建）发送信号通知其终止。<strong>proc_terminate()</strong>  调用之后将会立即返回，而不
  会等待进程终止。
  
  <strong>proc_terminate()</strong> 允许终止进程并继续其他的任务。可以使用 <strong>proc_get_status()</strong> 函数轮询进程（查看是否已
  经停止）。

<comment>Param:</comment>
  <info>resource</info>  <strong>$process</strong>  将要关闭的由 <strong>proc_open()</strong> 打开的 <info>resource</info>。
  <info>int</info>       <strong>$signal</strong>   可选参数，仅用于 POSIX 操作系统。可以使用 <return>kill(2)</return> 系统调用指定要发送到进程的信
                      号。默认值为 <return>SIGTERM</return>。

<comment>Return:</comment>
  <info>bool</info>  返回已运行进程的终止状态。

<comment>See Also:</comment>
   * <strong>proc_open()</strong>
   * <strong>proc_close()</strong>
   * <strong>proc_get_status()</strong>


id: property_exists
type: function
doc:
<comment>Description:</comment>
  检查对象或类是否具有该属性
    
  
  本函数检查给出的 <strong>$property</strong> 是否存在于指定的类中。
  
  跟 <strong>isset()</strong> 的区别是即使属性的值为 <info>null</info>，<strong>property_exists()</strong> 也会返回 <info>true</info>。

<comment>Param:</comment>
  <info>object|string</info>  <strong>$object_or_class</strong>  需要检查的类名或者类的对象
  <info>string</info>         <strong>$property</strong>         属性的名称

<comment>Return:</comment>
  <info>bool</info>  如果属性存在则返回 <info>true</info>，不存在则返回 <info>false</info>。如果发生错误则返回 <info>null</info>。

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


id: ps_add_bookmark
type: function
doc:
<comment>Description:</comment>
  Add bookmark to current page
  
  Adds a bookmark for the current page. Bookmarks usually appear in PDF-Viewers left of the page in
  a hierarchical tree. Clicking on a bookmark will jump to the given page.
  
  此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$text</strong>    The text used for displaying the bookmark.
  <info>int</info>       <strong>$parent</strong>  A bookmark previously created by this function which is used as the parent of
                     the new bookmark.
  <info>int</info>       <strong>$open</strong>    If <strong>$open</strong> is unequal to zero the bookmark will be shown open by the pdf viewer.

<comment>Return:</comment>
  <info>int</info>  The returned value is a reference for the bookmark. It is only used if the bookmark shall be
       used as a parent. The value is greater zero if the function succeeds. In case of an error
       zero will be returned.

<comment>See Also:</comment>
   * <strong>ps_add_launchlink()</strong>
   * <strong>ps_add_pdflink()</strong>
   * <strong>ps_add_weblink()</strong>


id: ps_add_launchlink
type: function
doc:
<comment>Description:</comment>
  Adds link which launches file
  
  Places a hyperlink at the given position pointing to a file program which is being started when
  clicked on. The hyperlink's source position is a rectangle with its lower left corner at (llx,
  lly) and its upper right corner at (urx, ury). The rectangle has by default a thin blue border.
  
  此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>     Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$llx</strong>       The x-coordinate of the lower left corner.
  <info>float</info>     <strong>$lly</strong>       The y-coordinate of the lower left corner.
  <info>float</info>     <strong>$urx</strong>       The x-coordinate of the upper right corner.
  <info>float</info>     <strong>$ury</strong>       The y-coordinate of the upper right corner.
  <info>string</info>    <strong>$filename</strong>  The path of the program to be started, when the link is clicked on.

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

<comment>See Also:</comment>
   * <strong>ps_add_locallink()</strong>
   * <strong>ps_add_pdflink()</strong>
   * <strong>ps_add_weblink()</strong>


id: ps_add_locallink
type: function
doc:
<comment>Description:</comment>
  Adds link to a page in the same document
  
  Places a hyperlink at the given position pointing to a page in the same document. Clicking on the
  link will jump to the given page. The first page in a document has number 1.
  
  The hyperlink's source position is a rectangle with its lower left corner at (<strong>$llx</strong>, <strong>$lly</strong>) and its
  upper right corner at (<strong>$urx</strong>, <strong>$ury</strong>). The rectangle has by default a thin blue border.
  
  此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$llx</strong>    The x-coordinate of the lower left corner.
  <info>float</info>     <strong>$lly</strong>    The y-coordinate of the lower left corner.
  <info>float</info>     <strong>$urx</strong>    The x-coordinate of the upper right corner.
  <info>float</info>     <strong>$ury</strong>    The y-coordinate of the upper right corner.
  <info>int</info>       <strong>$page</strong>   The number of the page displayed when clicking on the link.
  <info>string</info>    <strong>$dest</strong>   The parameter <strong>$dest</strong> determines how the document is being viewed. It can be
                    <return>fitpage</return>, <return>fitwidth</return>, <return>fitheight</return>, or <return>fitbbox</return>.

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

<comment>See Also:</comment>
   * <strong>ps_add_launchlink()</strong>
   * <strong>ps_add_pdflink()</strong>
   * <strong>ps_add_weblink()</strong>


id: ps_add_note
type: function
doc:
<comment>Description:</comment>
  Adds note to current page
  
  Adds a note at a certain position on the page. Notes are like little rectangular sheets with text
  on it, which can be placed anywhere on a page. They are shown either folded or unfolded. If
  folded, the specified icon is used as a placeholder.
  
  此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>     Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$llx</strong>       The x-coordinate of the lower left corner.
  <info>float</info>     <strong>$lly</strong>       The y-coordinate of the lower left corner.
  <info>float</info>     <strong>$urx</strong>       The x-coordinate of the upper right corner.
  <info>float</info>     <strong>$ury</strong>       The y-coordinate of the upper right corner.
  <info>string</info>    <strong>$contents</strong>  The text of the note.
  <info>string</info>    <strong>$title</strong>     The title of the note as displayed in the header of the note.
  <info>string</info>    <strong>$icon</strong>      The icon shown if the note is folded. This parameter can be set to <return>comment</return>,
                       <return>insert</return>, <return>note</return>, <return>paragraph</return>, <return>newparagraph</return>, <return>key</return>, or <return>help</return>.
  <info>int</info>       <strong>$open</strong>      If <strong>$open</strong> is unequal to zero the note will be shown unfolded after opening the
                       document with a pdf viewer.

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

<comment>See Also:</comment>
   * <strong>ps_add_pdflink()</strong>
   * <strong>ps_add_launchlink()</strong>
   * <strong>ps_add_locallink()</strong>
   * <strong>ps_add_weblink()</strong>


id: ps_add_pdflink
type: function
doc:
<comment>Description:</comment>
  Adds link to a page in a second pdf document
  
  Places a hyperlink at the given position pointing to a second pdf document. Clicking on the link
  will branch to the document at the given page. The first page in a document has number 1.
  
  The hyperlink's source position is a rectangle with its lower left corner at (<strong>$llx</strong>, <strong>$lly</strong>) and its
  upper right corner at (<strong>$urx</strong>, <strong>$ury</strong>). The rectangle has by default a thin blue border.
  
  此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>     Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$llx</strong>       The x-coordinate of the lower left corner.
  <info>float</info>     <strong>$lly</strong>       The y-coordinate of the lower left corner.
  <info>float</info>     <strong>$urx</strong>       The x-coordinate of the upper right corner.
  <info>float</info>     <strong>$ury</strong>       The y-coordinate of the upper right corner.
  <info>string</info>    <strong>$filename</strong>  The name of the pdf document to be opened when clicking on this link.
  <info>int</info>       <strong>$page</strong>      The page number of the destination pdf document
  <info>string</info>    <strong>$dest</strong>      The parameter <strong>$dest</strong> determines how the document is being viewed. It can be
                       <return>fitpage</return>, <return>fitwidth</return>, <return>fitheight</return>, or <return>fitbbox</return>.

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

<comment>See Also:</comment>
   * <strong>ps_add_launchlink()</strong>
   * <strong>ps_add_locallink()</strong>
   * <strong>ps_add_weblink()</strong>


id: ps_add_weblink
type: function
doc:
<comment>Description:</comment>
  Adds link to a web location
  
  Places a hyperlink at the given position pointing to a web page. The  hyperlink's source position
  is a rectangle with its lower left corner at (<strong>$llx</strong>, <strong>$lly</strong>) and its upper right corner at (<strong>$urx</strong>,
  <strong>$ury</strong>). The rectangle has by default a thin blue border.
  
  此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$llx</strong>    The x-coordinate of the lower left corner.
  <info>float</info>     <strong>$lly</strong>    The y-coordinate of the lower left corner.
  <info>float</info>     <strong>$urx</strong>    The x-coordinate of the upper right corner.
  <info>float</info>     <strong>$ury</strong>    The y-coordinate of the upper right corner.
  <info>string</info>    <strong>$url</strong>    The url of the hyperlink to be opened when clicking on this link, e.g.
                    <return>http://www.php.net</return>.

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

<comment>See Also:</comment>
   * <strong>ps_add_launchlink()</strong>
   * <strong>ps_add_locallink()</strong>
   * <strong>ps_add_pdflink()</strong>


id: ps_arc
type: function
doc:
<comment>Description:</comment>
  Draws an arc counterclockwise
  
  Draws a portion of a circle with at middle point at (<strong>$x</strong>, <strong>$y</strong>). The arc starts at an angle of <strong>$alpha</strong>
  and ends at an angle of <strong>$beta</strong>. It is drawn counterclockwise (use <strong>ps_arcn()</strong> to draw clockwise). The
  subpath added to the current path starts on the arc at angle <strong>$alpha</strong> and ends on the arc at angle
  <strong>$beta</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$x</strong>       The x-coordinate of the circle's middle point.
  <info>float</info>     <strong>$y</strong>       The y-coordinate of the circle's middle point.
  <info>float</info>     <strong>$radius</strong>  The radius of the circle
  <info>float</info>     <strong>$alpha</strong>   The start angle given in degrees.
  <info>float</info>     <strong>$beta</strong>    The end angle given in degrees.

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

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


id: ps_arcn
type: function
doc:
<comment>Description:</comment>
  Draws an arc clockwise
  
  Draws a portion of a circle with at middle point at (<strong>$x</strong>, <strong>$y</strong>). The arc starts at an angle of <strong>$alpha</strong>
  and ends at an angle of <strong>$beta</strong>. It is drawn clockwise (use <strong>ps_arc()</strong> to draw counterclockwise). The
  subpath added to the current path starts on the arc at angle <strong>$beta</strong> and ends on the arc at angle
  <strong>$alpha</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$x</strong>       The x-coordinate of the circle's middle point.
  <info>float</info>     <strong>$y</strong>       The y-coordinate of the circle's middle point.
  <info>float</info>     <strong>$radius</strong>  The radius of the circle
  <info>float</info>     <strong>$alpha</strong>   The starting angle given in degrees.
  <info>float</info>     <strong>$beta</strong>    The end angle given in degrees.

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

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


id: ps_begin_page
type: function
doc:
<comment>Description:</comment>
  Start a new page
  
  Starts a new page. Although the parameters <strong>$width</strong> and <strong>$height</strong> imply a different page size for each
  page, this is not possible in PostScript. The first call of <strong>ps_begin_page()</strong> will set the page size
  for the whole document. Consecutive calls will have no effect, except for creating a new page. The
  situation is different if you intent to convert the PostScript document into PDF. This function
  places pdfmarks into the document which can set the size for each page indiviually. The resulting
  PDF document will have different page sizes.
  
  Though PostScript does not know different page sizes, pslib places a bounding box for each page
  into the document. This size is evaluated by some PostScript viewers and will have precedence over
  the BoundingBox in the Header of the document. This can lead to unexpected results when you set a
  BoundingBox whose lower left corner is not (0, 0), because the bounding box of the page will
  always have a lower left corner (0, 0) and overwrites the global setting.
  
  Each page is encapsulated into save/restore. This means, that most of the settings made on one
  page will not be retained on the next page.
  
  If there is up to the first call of <strong>ps_begin_page()</strong> no call of <strong>ps_findfont()</strong>, then the header of
  the PostScript document will be output and the bounding box will be set to the size of the first
  page. The lower left corner of the bounding box is set to (0, 0). If <strong>ps_findfont()</strong> was called
  before, then the header has been output already, and the document will not have a valid bounding
  box. In order to prevent this, one should call <strong>ps_set_info()</strong> to set the info field <return>BoundingBox</return> and
  possibly <return>Orientation</return> before any <strong>ps_findfont()</strong> or <strong>ps_begin_page()</strong> calls.
  
  Up to version 0.2.6 of pslib, this function will always overwrite the BoundingBox and Orientation,
  if it has been set before with <strong>ps_set_info()</strong> and <strong>ps_findfont()</strong> has not been called before.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$width</strong>   The width of the page in pixel, e.g. 596 for A4 format.
  <info>float</info>     <strong>$height</strong>  The height of the page in pixel, e.g. 842 for A4 format.

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

<comment>See Also:</comment>
   * <strong>ps_end_page()</strong>
   * <strong>ps_findfont()</strong>
   * <strong>ps_set_info()</strong>


id: ps_begin_pattern
type: function
doc:
<comment>Description:</comment>
  Start a new pattern
  
  Starts a new pattern. A pattern is like a page containing e.g. a drawing which can be used for
  filling areas. It is used like a color by calling <strong>ps_setcolor()</strong> and setting the color space to
  <return>pattern</return>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>      Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$width</strong>      The width of the pattern in pixel.
  <info>float</info>     <strong>$height</strong>     The height of the pattern in pixel.
  <info></info>          <strong>$x-step</strong>     The distance in pixel of placements of the pattern in horizontal direction.
  <info></info>          <strong>$y-step</strong>     The distance in pixel of placements of the pattern in vertical direction.
  <info>int</info>       <strong>$painttype</strong>  Must be 1 or 2.

<comment>Return:</comment>
  <info>int|false</info>  The identifier of the pattern  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>ps_end_pattern()</strong>
   * <strong>ps_setcolor()</strong>
   * <strong>ps_shading_pattern()</strong>


id: ps_begin_template
type: function
doc:
<comment>Description:</comment>
  Start a new template
  
  Starts a new template. A template is called a form in the postscript language. It is created
  similar to a pattern but used like an image. Templates are often used for drawings which are
  placed several times through out the document, e.g. like a company logo. All drawing functions may
  be used within a template. The template will not be drawn until it is placed by <strong>ps_place_image()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$width</strong>   The width of the template in pixel.
  <info>float</info>     <strong>$height</strong>  The height of the template in pixel.

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

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


id: ps_circle
type: function
doc:
<comment>Description:</comment>
  Draws a circle
  
  Draws a circle with its middle point at (<strong>$x</strong>, <strong>$y</strong>). The circle starts and ends at position
  (<strong>$x</strong>+<strong>$radius</strong>, <strong>$y</strong>). If this function is called outside a path it will start a new path. If it is
  called within a path it will add the circle as a subpath. If the last drawing operation does not
  end in point (<strong>$x</strong>+<strong>$radius</strong>, <strong>$y</strong>) then there will be a gap in the path.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$x</strong>       The x-coordinate of the circle's middle point.
  <info>float</info>     <strong>$y</strong>       The y-coordinate of the circle's middle point.
  <info>float</info>     <strong>$radius</strong>  The radius of the circle

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

<comment>See Also:</comment>
   * <strong>ps_arc()</strong>
   * <strong>ps_arcn()</strong>


id: ps_clip
type: function
doc:
<comment>Description:</comment>
  Clips drawing to current path
  
  Takes the current path and uses it to define the border of a clipping area. Everything drawn
  outside of that area will not be visible.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

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


id: ps_close
type: function
doc:
<comment>Description:</comment>
  Closes a PostScript document
  
  Closes the PostScript document.
  
  This function writes the trailer of the PostScript document. It also writes the bookmark tree.
  <strong>ps_close()</strong> does not free any resources, which is done by <strong>ps_delete()</strong>.
  
  This function is also called by <strong>ps_delete()</strong> if it has not been called before.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

<comment>See Also:</comment>
   * <strong>ps_open_file()</strong>
   * <strong>ps_delete()</strong>


id: ps_close_image
type: function
doc:
<comment>Description:</comment>
  Closes image and frees memory
  
  Closes an image and frees its resources. Once an image is closed it cannot be used anymore.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>    Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$imageid</strong>  Resource identifier of the image as returned by <strong>ps_open_image()</strong> or
                      <strong>ps_open_image_file()</strong>.

<comment>Return:</comment>
  <info>void|false</info>  Returns <info>null</info> on success 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>ps_open_image()</strong>
   * <strong>ps_open_image_file()</strong>


id: ps_closepath
type: function
doc:
<comment>Description:</comment>
  Closes path
  
  Connects the last point with the first point of a path. The resulting path can be used for
  stroking, filling, clipping, etc..

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

<comment>See Also:</comment>
   * <strong>ps_clip()</strong>
   * <strong>ps_closepath_stroke()</strong>


id: ps_closepath_stroke
type: function
doc:
<comment>Description:</comment>
  Closes and strokes path
  
  Connects the last point with first point of a path and draws the resulting closed line.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

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


id: ps_continue_text
type: function
doc:
<comment>Description:</comment>
  Continue text in next line
  
  Output a text one line below the last line. The line spacing is taken from the value "leading"
  which must be set with <strong>ps_set_value()</strong>. The actual position of the text is determined by the values
  "textx" and "texty" which can be requested with <strong>ps_get_value()</strong>

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$text</strong>   The text to output.

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

<comment>See Also:</comment>
   * <strong>ps_show()</strong>
   * <strong>ps_show_xy()</strong>
   * <strong>ps_show_boxed()</strong>


id: ps_curveto
type: function
doc:
<comment>Description:</comment>
  Draws a curve
  
  Add a section of a cubic Bézier curve described by the three given control points to the current
  path.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$x1</strong>     x-coordinate of first control point.
  <info>float</info>     <strong>$y1</strong>     y-coordinate of first control point.
  <info>float</info>     <strong>$x2</strong>     x-coordinate of second control point.
  <info>float</info>     <strong>$y2</strong>     y-coordinate of second control point.
  <info>float</info>     <strong>$x3</strong>     x-coordinate of third control point.
  <info>float</info>     <strong>$y3</strong>     y-coordinate of third control point.

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

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


id: ps_delete
type: function
doc:
<comment>Description:</comment>
  Deletes all resources of a PostScript document
  
  Mainly frees memory used by the document. Also closes a file, if it was not closed before with
  <strong>ps_close()</strong>. You should in any case close the file with <strong>ps_close()</strong> before, because <strong>ps_close()</strong> not
  just closes the file but also outputs a trailor containing PostScript comments like the number of
  pages in the document and adding the bookmark hierarchy.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

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


id: ps_end_page
type: function
doc:
<comment>Description:</comment>
  End a page
  
  Ends a page which was started with <strong>ps_begin_page()</strong>. Ending a page will leave the current drawing
  context, which e.g. requires to reload fonts if they were loading within the page, and to set many
  other drawing parameters like the line width, or color.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

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


id: ps_end_pattern
type: function
doc:
<comment>Description:</comment>
  End a pattern
  
  Ends a pattern which was started with <strong>ps_begin_pattern()</strong>. Once a pattern has been ended, it can be
  used like a color to fill areas.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

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


id: ps_end_template
type: function
doc:
<comment>Description:</comment>
  End a template
  
  Ends a template which was started with <strong>ps_begin_template()</strong>. Once a template has been ended, it can
  be used like an image.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

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


id: ps_fill
type: function
doc:
<comment>Description:</comment>
  Fills the current path
  
  Fills the path constructed with previously called drawing functions like <strong>ps_lineto()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

<comment>See Also:</comment>
   * <strong>ps_fill_stroke()</strong>
   * <strong>ps_stroke()</strong>


id: ps_fill_stroke
type: function
doc:
<comment>Description:</comment>
  Fills and strokes the current path
  
  Fills and draws the path constructed with previously called drawing functions like <strong>ps_lineto()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

<comment>See Also:</comment>
   * <strong>ps_fill()</strong>
   * <strong>ps_stroke()</strong>


id: ps_findfont
type: function
doc:
<comment>Description:</comment>
  Loads a font
  
  Loads a font for later use. Before text is output with a loaded font it must be set with
  <strong>ps_setfont()</strong>. This function needs the adobe font metric file in order to calculate the space used
  up by the characters. A font which is loaded within a page will only be available on that page.
  Fonts which are to be used in the complete document have to be loaded before the first call of
  <strong>ps_begin_page()</strong>. Calling <strong>ps_findfont()</strong> between pages will make that font available for all
  following pages.
  
  The name of the afm file must be <strong>$fontname</strong><return>.afm</return>. If the font shall be embedded the file
  <strong>$fontname</strong><return>.pfb</return> containing the font outline must be present as well.
  
  Calling <strong>ps_findfont()</strong> before the first page requires to output the postscript header which
  includes the BoundingBox for the whole document. Usually the BoundingBox is set with the first
  call of <strong>ps_begin_page()</strong> which now comes after <strong>ps_findfont()</strong>. Consequently the BoundingBox has not
  been set and a warning will be issued when <strong>ps_findfont()</strong> is called. In order to prevent this
  situation, one should call <strong>ps_set_parameter()</strong> to set the BoundingBox before <strong>ps_findfont()</strong> is
  called.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>     Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$fontname</strong>  The name of the font.
  <info>string</info>    <strong>$encoding</strong>  <strong>ps_findfont()</strong> will try to load the file passed in the parameter <strong>$encoding</strong>.
                       Encoding files are of the same syntax as those used by dvips(1). They contain
                       a font encoding vector (which is currently not used but must be present) and
                       a list of extra ligatures to extend the list of ligatures derived from the
                       afm file.
                       
                       <strong>$encoding</strong> can be <info>null</info> or the empty string if the default encoding (TeXBase1)
                       shall be used.
                       
                       If the encoding is set to <return>builtin</return> then there will be no reencoding and the
                       font specific encoding will be used. This is very useful with symbol fonts.
  <info>bool</info>      <strong>$embed</strong>     If set to a value &gt;0 the font will be embedded into the document. This
                       requires the font outline (.pfb file) to be present.

<comment>Return:</comment>
  <info>int</info>  Returns the identifier of the font or zero in case of an error. The identifier is a positive
       number.

<comment>See Also:</comment>
   * <strong>ps_begin_page()</strong>
   * <strong>ps_setfont()</strong>


id: ps_get_buffer
type: function
doc:
<comment>Description:</comment>
  Fetches the full buffer containig the generated PS data
  
  This function is not implemented yet. It will always return an empty string. The idea for a later
  implementation is to write the contents of the postscript file into an internal buffer if in
  memory creation is requested, and retrieve the buffer content with this function. Currently,
  documents created in memory are send to the browser without buffering.
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

<comment>Return:</comment>
  <info>string</info>  

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


id: ps_get_parameter
type: function
doc:
<comment>Description:</comment>
  Gets certain parameters
  
  Gets several parameters which were directly set by <strong>ps_set_parameter()</strong> or indirectly by one of the
  other functions. Parameters are by definition string values. This function cannot be used to
  retrieve resources which were also set by <strong>ps_set_parameter()</strong>.
  
  The parameter <strong>$name</strong> can have the following values.
  
  <return>fontname</return> The name of the currently active font or the font whose identifier is passed in parameter
  <strong>$modifier</strong>. <return>fontencoding</return> The encoding of the currently active font. <return>dottedversion</return> The version of
  the underlying pslib library in the format \<major&gt;.\<minor&gt;.\<subminor&gt; <return>scope</return> The current drawing scope. Can be object, document, null, page, pattern, path, template, prolog, font, glyph. <return>ligaturedisolvechar</return> The character which dissolves a ligature. If your are using a font which contains the ligature `ff' and `|' is the char to dissolve the ligature, then `f|f' will result in two `f' instead of the ligature `ff'. <return>imageencoding</return> The encoding used for encoding images. Can be either <return>hex</return> or <return>85</return>. hex encoding uses two bytes in the postscript file each byte in the image. 85 stand for Ascii85 encoding. <return>linenumbermode</return> Set to <return>paragraph</return> if lines are numbered within a paragraph or <return>box</return> if they are numbered within the surrounding box. <return>linebreak</return> Only used if text is output with <strong>ps_show_boxed()</strong>. If set to <info>true</info> a carriage return will add a line break. <return>parbreak</return> Only used if text is output with <strong>ps_show_boxed()</strong>. If set to <info>true</info> a carriage return will start a new paragraph. <return>hyphenation</return> Only used if text is output with <strong>ps_show_boxed()</strong>. If set to <info>true</info> the paragraph will be hyphenated if a hypen dictionary is set and exists. <return>hyphendict</return> Filename of the dictionary used for hyphenation pattern.
  
  The name of the currently active font or the font whose identifier is passed in parameter
  <strong>$modifier</strong>.
  
  The encoding of the currently active font.
  
  The version of the underlying pslib library in the format \<major&gt;.\<minor&gt;.\<subminor&gt;
  
  The current drawing scope. Can be object, document, null, page, pattern, path, template, prolog,
  font, glyph.
  
  The character which dissolves a ligature. If your are using a font which contains the ligature
  `ff' and `|' is the char to dissolve the ligature, then `f|f' will result in two `f' instead of
  the ligature `ff'.
  
  The encoding used for encoding images. Can be either <return>hex</return> or <return>85</return>. hex encoding uses two bytes in the
  postscript file each byte in the image. 85 stand for Ascii85 encoding.
  
  Set to <return>paragraph</return> if lines are numbered within a paragraph or <return>box</return> if they are numbered within the
  surrounding box.
  
  Only used if text is output with <strong>ps_show_boxed()</strong>. If set to <info>true</info> a carriage return will add a line
  break.
  
  Only used if text is output with <strong>ps_show_boxed()</strong>. If set to <info>true</info> a carriage return will start a
  new paragraph.
  
  Only used if text is output with <strong>ps_show_boxed()</strong>. If set to <info>true</info> the paragraph will be hyphenated
  if a hypen dictionary is set and exists.
  
  Filename of the dictionary used for hyphenation pattern.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>     Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$name</strong>      Name of the parameter.
  <info>float</info>     <strong>$modifier</strong>  An identifier needed if a parameter of a resource is requested, e.g. the size
                       of an image. In such a case the resource id is passed.

<comment>Return:</comment>
  <info>string|false</info>  Returns the value of the parameter  或者在失败时返回 <info>false</info>.

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


id: ps_get_value
type: function
doc:
<comment>Description:</comment>
  Gets certain values
  
  Gets several values which were set by <strong>ps_set_value()</strong>. Values are by definition float values.
  
  The parameter <strong>$name</strong> can have the following values.
  
  <return>fontsize</return> The size of the currently active font or the font whose identifier is passed in parameter
  <strong>$modifier</strong>. <return>font</return> The currently active font itself. <return>imagewidth</return> The width of the image whose id is
  passed in the parameter <strong>$modifier</strong>. <return>imageheight</return> The height of the image whose id is passed in the
  parameter <strong>$modifier</strong>. <return>capheight</return> The height of a capital M in the currently active font or the font
  whose identifier is passed in parameter <strong>$modifier</strong>. <return>ascender</return> The ascender of the currently active
  font or the font whose identifier is passed in parameter <strong>$modifier</strong>. <return>descender</return> The descender of the
  currently active font or the font whose identifier is passed in parameter <strong>$modifier</strong>. <return>italicangle</return>
  The italicangle of the currently active font or the font whose identifier is passed in parameter
  <strong>$modifier</strong>. <return>underlineposition</return> The underlineposition of the currently active font or the font whose
  identifier is passed in parameter <strong>$modifier</strong>. <return>underlinethickness</return> The underlinethickness of the
  currently active font or the font whose identifier is passed in parameter <strong>$modifier</strong>. <return>textx</return> The
  current x-position for text output. <return>texty</return> The current y-position for text output. <return>textrendering</return>
  The current mode for text rendering. <return>textrise</return> The space by which text is risen above the base
  line. <return>leading</return> The distance between text lines in points. <return>wordspacing</return> The space between words as a
  multiple of the width of a space char. <return>charspacing</return> The space between chars. If charspacing is !=
  0.0 ligatures will always be dissolved. <return>hyphenminchars</return> Minimum number of chars hyphenated at the
  end of a word. <return>parindent</return> Indention of the first n line in a paragraph. <return>numindentlines</return> Number of
  line in a paragraph to indent if parindent != 0.0. <return>parskip</return> Distance between paragraphs.
  <return>linenumberspace</return> Overall space in front of each line for the line number. <return>linenumbersep</return> Space
  between the line and the line number. <return>major</return> The major version number of pslib. <return>minor</return> The minor
  version number of pslib. <return>subminor</return>, <return>revision</return> The subminor version number of pslib.
  
  The size of the currently active font or the font whose identifier is passed in parameter
  <strong>$modifier</strong>.
  
  The currently active font itself.
  
  The width of the image whose id is passed in the parameter <strong>$modifier</strong>.
  
  The height of the image whose id is passed in the parameter <strong>$modifier</strong>.
  
  The height of a capital M in the currently active font or the font whose identifier is passed in
  parameter <strong>$modifier</strong>.
  
  The ascender of the currently active font or the font whose identifier is passed in parameter
  <strong>$modifier</strong>.
  
  The descender of the currently active font or the font whose identifier is passed in parameter
  <strong>$modifier</strong>.
  
  The italicangle of the currently active font or the font whose identifier is passed in parameter
  <strong>$modifier</strong>.
  
  The underlineposition of the currently active font or the font whose identifier is passed in
  parameter <strong>$modifier</strong>.
  
  The underlinethickness of the currently active font or the font whose identifier is passed in
  parameter <strong>$modifier</strong>.
  
  The current x-position for text output.
  
  The current y-position for text output.
  
  The current mode for text rendering.
  
  The space by which text is risen above the base line.
  
  The distance between text lines in points.
  
  The space between words as a multiple of the width of a space char.
  
  The space between chars. If charspacing is != 0.0 ligatures will always be dissolved.
  
  Minimum number of chars hyphenated at the end of a word.
  
  Indention of the first n line in a paragraph.
  
  Number of line in a paragraph to indent if parindent != 0.0.
  
  Distance between paragraphs.
  
  Overall space in front of each line for the line number.
  
  Space between the line and the line number.
  
  The major version number of pslib.
  
  The minor version number of pslib.
  
  The subminor version number of pslib.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>     Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$name</strong>      Name of the value.
  <info>float</info>     <strong>$modifier</strong>  The parameter <strong>$modifier</strong> specifies the resource for which the value is to be
                       retrieved. This can be the id of a font or an image.

<comment>Return:</comment>
  <info>float</info>  Returns the value of the parameter or <info>false</info>.

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


id: ps_hyphenate
type: function
doc:
<comment>Description:</comment>
  Hyphenates a word
  
  Hyphenates the passed word. <strong>ps_hyphenate()</strong> evaluates the value hyphenminchars (set by
  <strong>ps_set_value()</strong>) and the parameter hyphendict (set by <strong>ps_set_parameter()</strong>). hyphendict must be set
  before calling this function.
  
  This function requires the locale category LC_CTYPE to be set properly. This is done when the
  extension is initialized by using the environment variables. On Unix systems read the man page of
  locale for more information.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$text</strong>   <strong>$text</strong> should not contain any non alpha characters. Possible positions for breaks
                    are returned in an array of interger numbers. Each number is the position of the
                    char in  <strong>$text</strong> after which a hyphenation can take place.

<comment>Return:</comment>
  <info>array|false</info>  An array of integers indicating the position of possible breaks in the text  或者在失
               败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>ps_show_boxed()</strong>
   * locale(1)


id: ps_include_file
type: function
doc:
<comment>Description:</comment>
  Reads an external file with raw PostScript code
  
  本函数还未编写文档，仅有参数列表。
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$file</strong>   

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


id: ps_lineto
type: function
doc:
<comment>Description:</comment>
  Draws a line
  
  Adds a straight line from the current point to the given coordinates to the current path. Use
  <strong>ps_moveto()</strong> to set the starting point of the line.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$x</strong>      x-coordinate of the end point of the line.
  <info>float</info>     <strong>$y</strong>      y-coordinate of the end point of the line.

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

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


id: ps_makespotcolor
type: function
doc:
<comment>Description:</comment>
  Create spot color
  
  Creates a spot color from the current fill color. The fill color must be defined in rgb, cmyk or
  gray colorspace. The spot color name can be an arbitrary name. A spot color can be set as any
  color with <strong>ps_setcolor()</strong>. When the document is not printed but displayed by an postscript viewer
  the given color in the specified color space is use.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$name</strong>   Name of the spot color, e.g. Pantone 5565.

<comment>Return:</comment>
  <info>int</info>  The id of the new spot color or 0 in case of an error.

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


id: ps_moveto
type: function
doc:
<comment>Description:</comment>
  Sets current point
  
  Sets the current point to new coordinates. If this is the first call of <strong>ps_moveto()</strong> after a
  previous path has been ended then it will start a new path. If this function is called in the
  middle of a path it will just set the current point and start a subpath.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$x</strong>      x-coordinate of the point to move to.
  <info>float</info>     <strong>$y</strong>      y-coordinate of the point to move to.

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

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


id: ps_new
type: function
doc:
<comment>Description:</comment>
  Creates a new PostScript document object
  
  Creates a new document instance. It does not create the file on disk or in memory, it just sets up
  everything. <strong>ps_new()</strong> is usually followed by a call of <strong>ps_open_file()</strong> to actually create the
  postscript document.

<comment>Return:</comment>
  <info>resource|false</info>  Resource of PostScript document 或者在失败时返回 <info>false</info>. The return value is passed
                  to all other functions as the first argument.

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


id: ps_open_file
type: function
doc:
<comment>Description:</comment>
  Opens a file for output
  
  Creates a new file on disk and writes the PostScript document into it. The file will be closed
  when <strong>ps_close()</strong> is called.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>     Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$filename</strong>  The name of the postscript file. If <strong>$filename</strong> is not passed the document will
                       be created in memory and all output will go straight to the browser.

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

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


id: ps_open_image
type: function
doc:
<comment>Description:</comment>
  Reads an image for later placement
  
  Reads an image which is already available in memory. The parameter <strong>$source</strong> is currently not
  evaluated and assumed to be <return>memory</return>. The image data is a sequence of pixels starting in th upper
  left corner and ending in the lower right corner. Each pixel consists of <strong>$components</strong> color
  components, and each component has <strong>$bpc</strong> bits.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>       Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$type</strong>        The type of the image. Possible values are <return>png</return>, <return>jpeg</return>, or <return>eps</return>.
  <info>string</info>    <strong>$source</strong>      Not used.
  <info>string</info>    <strong>$data</strong>        The image data.
  <info></info>          <strong>$length</strong>      The length of the image data.
  <info>int</info>       <strong>$width</strong>       The width of the image.
  <info>int</info>       <strong>$height</strong>      The height of the image.
  <info>int</info>       <strong>$components</strong>  The number of components for each pixel. This can be 1 (gray scale images),
                         3 (rgb images), or 4 (cmyk, rgba images).
  <info>int</info>       <strong>$bpc</strong>         Number of bits per component (quite often 8).
  <info>string</info>    <strong>$params</strong>      

<comment>Return:</comment>
  <info>int</info>  Returns identifier of image or zero in case of an error. The identifier is a positive number
       greater than 0.

<comment>See Also:</comment>
   * <strong>ps_open_image_file()</strong>
   * <strong>ps_place_image()</strong>
   * <strong>ps_close_image()</strong>


id: ps_open_image_file
type: function
doc:
<comment>Description:</comment>
  Opens image from file
  
  Loads an image for later use.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>        Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$type</strong>         The type of the image. Possible values are <return>png</return>, <return>jpeg</return>, or <return>eps</return>.
  <info>string</info>    <strong>$filename</strong>     The name of the file containing the image data.
  <info>string</info>    <strong>$stringparam</strong>  Not used.
  <info>int</info>       <strong>$intparam</strong>     Not used.

<comment>Return:</comment>
  <info>int</info>  Returns identifier of image or zero in case of an error. The identifier is a positive number
       greater than 0.

<comment>See Also:</comment>
   * <strong>ps_open_image()</strong>
   * <strong>ps_place_image()</strong>
   * <strong>ps_close_image()</strong>


id: ps_open_memory_image
type: function
doc:
<comment>Description:</comment>
  Takes an GD image and returns an image for placement in a PS document
  
  本函数还未编写文档，仅有参数列表。
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$gd</strong>     

<comment>Return:</comment>
  <info>int</info>  


id: ps_place_image
type: function
doc:
<comment>Description:</comment>
  Places image on the page
  
  Places a formerly loaded image on the page. The image can be scaled. If the image shall be rotated
  as well, you will have to rotate the coordinate system before with <strong>ps_rotate()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>    Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$imageid</strong>  The resource identifier of the image as returned by  <strong>ps_open_image()</strong> or
                      <strong>ps_open_image_file()</strong>.
  <info>float</info>     <strong>$x</strong>        x-coordinate of the lower left corner of the image.
  <info>float</info>     <strong>$y</strong>        y-coordinate of the lower left corner of the image.
  <info>float</info>     <strong>$scale</strong>    The scaling factor for the image. A scale of 1.0 will result in a resolution
                      of 72 dpi, because each pixel is equivalent to 1 point.

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

<comment>See Also:</comment>
   * <strong>ps_open_image()</strong>
   * <strong>ps_open_image_file()</strong>


id: ps_rect
type: function
doc:
<comment>Description:</comment>
  Draws a rectangle
  
  Draws a rectangle with its lower left corner at (<strong>$x</strong>, <strong>$y</strong>). The rectangle starts and ends in its
  lower left corner. If this function is called outside a path it will start a new path. If it is
  called within a path it will add the rectangle as a subpath. If the last drawing operation does
  not end in the lower left corner then there will be a gap in the path.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$x</strong>       x-coordinate of the lower left corner of the rectangle.
  <info>float</info>     <strong>$y</strong>       y-coordinate of the lower left corner of the rectangle.
  <info>float</info>     <strong>$width</strong>   The width of the image.
  <info>float</info>     <strong>$height</strong>  The height of the image.

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

<comment>See Also:</comment>
   * <strong>ps_arc()</strong>
   * <strong>ps_cirle()</strong>
   * <strong>ps_lineto()</strong>


id: ps_restore
type: function
doc:
<comment>Description:</comment>
  Restore previously save context
  
  Restores a previously saved graphics context. Any call of <strong>ps_save()</strong> must be accompanied by a call
  to <strong>ps_restore()</strong>. All coordinate transformations, line style settings, color settings, etc. are
  being restored to the state before the call of <strong>ps_save()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

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


id: ps_rotate
type: function
doc:
<comment>Description:</comment>
  Sets rotation factor
  
  Sets the rotation of the coordinate system.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$rot</strong>    Angle of rotation in degree.

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

<comment>See Also:</comment>
   * <strong>ps_scale()</strong>
   * <strong>ps_translate()</strong>


id: ps_save
type: function
doc:
<comment>Description:</comment>
  Save current context
  
  Saves the current graphics context, containing colors, translation and rotation settings and some
  more. A saved context can be restored with <strong>ps_restore()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

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


id: ps_scale
type: function
doc:
<comment>Description:</comment>
  Sets scaling factor
  
  Sets horizontal and vertical scaling of the coordinate system.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$x</strong>      Scaling factor in horizontal direction.
  <info>float</info>     <strong>$y</strong>      Scaling factor in vertical direction.

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

<comment>See Also:</comment>
   * <strong>ps_rotate()</strong>
   * <strong>ps_translate()</strong>


id: ps_set_border_color
type: function
doc:
<comment>Description:</comment>
  Sets color of border for annotations
  
  Links added with one of the functions <strong>ps_add_weblink()</strong>, <strong>ps_add_pdflink()</strong>, etc. will be displayed
  with a surounded rectangle when the postscript document is converted to pdf and viewed in a pdf
  viewer. This rectangle is not visible in the postscript document. This function sets the color of
  the rectangle's border line.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$red</strong>    The red component of the border color.
  <info>float</info>     <strong>$green</strong>  The green component of the border color.
  <info>float</info>     <strong>$blue</strong>   The blue component of the border color.

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

<comment>See Also:</comment>
   * <strong>ps_set_border_dash()</strong>
   * <strong>ps_set_border_style()</strong>


id: ps_set_border_dash
type: function
doc:
<comment>Description:</comment>
  Sets length of dashes for border of annotations
  
  Links added with one of the functions <strong>ps_add_weblink()</strong>, <strong>ps_add_pdflink()</strong>, etc. will be displayed
  with a surounded rectangle when the postscript document is converted to pdf and viewed in a pdf
  viewer. This rectangle is not visible in the postscript document. This function sets the length of
  the black and white portion of a dashed border line.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$black</strong>  The length of the dash.
  <info>float</info>     <strong>$white</strong>  The length of the gap between dashes.

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

<comment>See Also:</comment>
   * <strong>ps_set_border_color()</strong>
   * <strong>ps_set_border_style()</strong>


id: ps_set_border_style
type: function
doc:
<comment>Description:</comment>
  Sets border style of annotations
  
  Links added with one of the functions <strong>ps_add_weblink()</strong>, <strong>ps_add_pdflink()</strong>, etc. will be displayed
  with a surounded rectangle when the postscript document is converted to pdf and viewed in a pdf
  viewer. This rectangle is not visible in the postscript document. This function sets the
  appearance and width of the border line.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$style</strong>  <strong>$style</strong> can be <return>solid</return> or <return>dashed</return>.
  <info>float</info>     <strong>$width</strong>  The line width of the border.

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

<comment>See Also:</comment>
   * <strong>ps_set_border_color()</strong>
   * <strong>ps_set_border_dash()</strong>


id: ps_set_info
type: function
doc:
<comment>Description:</comment>
  Sets information fields of document
  
  Sets certain information fields of the document. This fields will be shown as a comment in the
  header of the PostScript file. If the document is converted to pdf this fields will also be used
  for the document information.
  
  The <return>BoundingBox</return> is usually set to the value given to the first page. This only works if
  <strong>ps_findfont()</strong> has not been called before. In such cases the BoundingBox would be left unset unless
  you set it explicitly with this function.
  
  This function will have no effect anymore when the header of the postscript file has been already
  written. It must be called before the first page or the first call of <strong>ps_findfont()</strong>.

<comment>Param:</comment>
  <info></info>        <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>  <strong>$key</strong>    The name of the information field to set. The values which can be set are
                  <return>Keywords</return>, <return>Subject</return>, <return>Title</return>, <return>Creator</return>, <return>Author</return>, <return>BoundingBox</return>, and <return>Orientation</return>. Be aware
                  that some of them has a meaning to PostScript viewers.
  <info></info>        <strong>$value</strong>  The value of the information field. The field <return>Orientation</return> can be set to either
                  <return>Portrait</return> or <return>Landscape</return>. The <return>BoundingBox</return> is a string consisting of four numbers. The
                  first two numbers are the coordinates of the lower left corner of the page. The
                  last two numbers are the coordinates of the upper right corner.
                  
                  Up to version 0.2.6 of pslib, the BoundingBox and Orientation will be overwritten
                  by <strong>ps_begin_page()</strong>, unless <strong>ps_findfont()</strong> has been called before.

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

<comment>See Also:</comment>
   * <strong>ps_findfont()</strong>
   * <strong>ps_begin_page()</strong>


id: ps_set_parameter
type: function
doc:
<comment>Description:</comment>
  Sets certain parameters
  
  Sets several parameters which are used by many functions. Parameters are by definition string
  values.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$name</strong>   For a list of possible names see <strong>ps_get_parameter()</strong>.
  <info>string</info>    <strong>$value</strong>  The value of the parameter.

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

<comment>See Also:</comment>
   * <strong>ps_get_parameters()</strong>
   * <strong>ps_set_value()</strong>


id: ps_set_text_pos
type: function
doc:
<comment>Description:</comment>
  Sets position for text output
  
  Set the position for the next text output. You may alternatively set the x and y value separately
  by calling <strong>ps_set_value()</strong> and choosing <return>textx</return> respectively <return>texty</return> as the value name.
  
  If you want to output text at a certain position it is more convenient to use <strong>ps_show_xy()</strong> instead
  of setting the text position and calling <strong>ps_show()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$x</strong>      x-coordinate of the new text position.
  <info>float</info>     <strong>$y</strong>      y-coordinate of the new text position.

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

<comment>See Also:</comment>
   * <strong>ps_set_value()</strong>
   * <strong>ps_show()</strong>


id: ps_set_value
type: function
doc:
<comment>Description:</comment>
  Sets certain values
  
  Sets several values which are used by many functions. Parameters are by definition float values.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$name</strong>   The <strong>$name</strong> can be one of the following: textrendering The way how text is shown.
                    textx The x coordinate for text output. texty The y coordinate for text output.
                    wordspacing The distance between words relative to the width of a space. leading
                    The distance between lines in pixels.
                    
                    The way how text is shown.
                    
                    The x coordinate for text output.
                    
                    The y coordinate for text output.
                    
                    The distance between words relative to the width of a space.
                    
                    The distance between lines in pixels.
  <info>float</info>     <strong>$value</strong>  The value of the parameter.

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

<comment>See Also:</comment>
   * <strong>ps_get_value()</strong>
   * <strong>ps_set_parameter()</strong>


id: ps_setcolor
type: function
doc:
<comment>Description:</comment>
  Sets current color
  
  Sets the color for drawing, filling, or both.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>       Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$type</strong>        The parameter <strong>$type</strong> can be  <return>both</return>, <return>fill</return>, or <return>fillstroke</return>.
  <info>string</info>    <strong>$colorspace</strong>  The colorspace should be one of <return>gray</return>, <return>rgb</return>, <return>cmyk</return>,  <return>spot</return>, <return>pattern</return>. Depending
                         on the colorspace either only the first, the first three or all parameters
                         will be used.
  <info>float</info>     <strong>$c1</strong>          Depending on the colorspace this is either the red component (rgb), the
                         cyan component (cmyk), the gray value (gray), the identifier of the spot
                         color or the identifier of the pattern.
  <info>float</info>     <strong>$c2</strong>          Depending on the colorspace this is either the green component (rgb), the
                         magenta component (cmyk).
  <info>float</info>     <strong>$c3</strong>          Depending on the colorspace this is either the blue component (rgb), the
                         yellow component (cmyk).
  <info>float</info>     <strong>$c4</strong>          This must only be set in cmyk colorspace and specifies the black component.

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


id: ps_setdash
type: function
doc:
<comment>Description:</comment>
  Sets appearance of a dashed line
  
  Sets the length of the black and white portions of a dashed line.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$on</strong>     The length of the dash.
  <info>float</info>     <strong>$off</strong>    The length of the gap between dashes.

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

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


id: ps_setflat
type: function
doc:
<comment>Description:</comment>
  Sets flatness
  
  本函数还未编写文档，仅有参数列表。
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$value</strong>  The <strong>$value</strong> must be between 0.2 and 1.

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


id: ps_setfont
type: function
doc:
<comment>Description:</comment>
  Sets font to use for following output
  
  Sets a font, which has to be loaded before with <strong>ps_findfont()</strong>. Outputting text without setting a
  font results in an error.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$fontid</strong>  The font identifier as returned by <strong>ps_findfont()</strong>.
  <info>float</info>     <strong>$size</strong>    The size of the font.

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

<comment>See Also:</comment>
   * <strong>ps_findfont()</strong>
   * <strong>ps_set_text_pos()</strong> for an example.


id: ps_setgray
type: function
doc:
<comment>Description:</comment>
  Sets gray value
  
  Sets the gray value for all following drawing operations.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$gray</strong>   The value must be between 0 (white) and 1 (black).

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

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


id: ps_setlinecap
type: function
doc:
<comment>Description:</comment>
  Sets appearance of line ends
  
  Sets how line ends look like.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$type</strong>   The type of line ends. Possible values are <return>PS_LINECAP_BUTT</return>, <return>PS_LINECAP_ROUND</return>, or
                    <return>PS_LINECAP_SQUARED</return>.

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

<comment>See Also:</comment>
   * <strong>ps_setlinejoin()</strong>
   * <strong>ps_setlinewidth()</strong>
   * <strong>ps_setmiterlimit()</strong>


id: ps_setlinejoin
type: function
doc:
<comment>Description:</comment>
  Sets how contected lines are joined
  
  Sets how lines are joined.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$type</strong>   The way lines are joined. Possible values are <return>PS_LINEJOIN_MITER</return>,
                    <return>PS_LINEJOIN_ROUND</return>, or <return>PS_LINEJOIN_BEVEL</return>.

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

<comment>See Also:</comment>
   * <strong>ps_setlinecap()</strong>
   * <strong>ps_setlinewidth()</strong>
   * <strong>ps_setmiterlimit()</strong>


id: ps_setlinewidth
type: function
doc:
<comment>Description:</comment>
  Sets width of a line
  
  Sets the line width for all following drawing operations.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$width</strong>  The width of lines in points.

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

<comment>See Also:</comment>
   * <strong>ps_setlinecap()</strong>
   * <strong>ps_setlinejoin()</strong>
   * <strong>ps_setmiterlimit()</strong>


id: ps_setmiterlimit
type: function
doc:
<comment>Description:</comment>
  Sets the miter limit
  
  If two lines join in a small angle and the line join is set to <return>PS_LINEJOIN_MITER</return>, then the
  resulting spike will be very long. The miter limit is the maximum ratio of the miter length (the
  length of the spike) and the line width.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$value</strong>  The maximum ratio between the miter length and the line width. Larger values
                    (&gt; 10) will result in very long spikes when two lines meet in a small angle.
                    Keep the default unless you know what you are doing.

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

<comment>See Also:</comment>
   * <strong>ps_setlinecap()</strong>
   * <strong>ps_setlinejoin()</strong>
   * <strong>ps_setlinewidth()</strong>


id: ps_setoverprintmode
type: function
doc:
<comment>Description:</comment>
  Sets overprint mode
  
  本函数还未编写文档，仅有参数列表。
  
  本函数还未编写文档，仅有参数列表。

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$mode</strong>   

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


id: ps_setpolydash
type: function
doc:
<comment>Description:</comment>
  Sets appearance of a dashed line
  
  Sets the length of the black and white portions of a dashed line. <strong>ps_setpolydash()</strong> is used to set
  more complicated dash patterns.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$arr</strong>    <strong>$arr</strong> is a list of length elements alternately for the black and white portion.

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

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


id: ps_shading
type: function
doc:
<comment>Description:</comment>
  Creates a shading for later use
  
  Creates a shading, which can be used by <strong>ps_shfill()</strong> or <strong>ps_shading_pattern()</strong>.
  
  The color of the shading can be in any color space except for <return>pattern</return>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>           Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$type</strong>            The type of shading can be either <return>radial</return> or <return>axial</return>. Each shading starts
                             with the current fill color and ends with the given color values passed
                             in the parameters <strong>$c1</strong> to <strong>$c4</strong> (see <strong>ps_setcolor()</strong> for their meaning).
  <info></info>          <strong>$x0, x1, y0, y1</strong>  The coordinates <strong>$x0</strong>, <strong>$y0</strong>, <strong>$x1</strong>, <strong>$y1</strong> are the start and end point of the
                             shading. If the type of shading is <return>radial</return> the two points are the middle
                             points of a starting and ending circle.
  <info></info>          <strong>$c1, c2, c3, c4</strong>  See <strong>ps_setcolor()</strong> for their meaning.
  <info>string</info>    <strong>$optlist</strong>         If the shading is of type <return>radial</return> the <strong>$optlist</strong> must also contain the
                             parameters <return>r0</return> and <return>r1</return> with the radius of the start and end circle.

<comment>Return:</comment>
  <info>int|false</info>  Returns the identifier of the pattern  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>ps_shading_pattern()</strong>
   * <strong>ps_shfill()</strong>


id: ps_shading_pattern
type: function
doc:
<comment>Description:</comment>
  Creates a pattern based on a shading
  
  Creates a pattern based on a shading, which has to be created before with <strong>ps_shading()</strong>. Shading
  patterns can be used like regular patterns.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>      Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$shadingid</strong>  The identifier of a shading previously created with <strong>ps_shading()</strong>.
  <info>string</info>    <strong>$optlist</strong>    This argument is not currently used.

<comment>Return:</comment>
  <info>int|false</info>  The identifier of the pattern  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>ps_shading()</strong>
   * <strong>ps_shfill()</strong>


id: ps_shfill
type: function
doc:
<comment>Description:</comment>
  Fills an area with a shading
  
  Fills an area with a shading, which has to be created before with <strong>ps_shading()</strong>. This is an
  alternative way to creating a pattern from a shading <strong>ps_shading_pattern()</strong> and using the pattern as
  the filling color.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>      Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$shadingid</strong>  The identifier of a shading previously created with <strong>ps_shading()</strong>.

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

<comment>See Also:</comment>
   * <strong>ps_shading()</strong>
   * <strong>ps_shading_pattern()</strong>


id: ps_show
type: function
doc:
<comment>Description:</comment>
  Output text
  
  Output a text at the current text position. The text position can be set by storing the x and y
  coordinates into the values <return>textx</return> and <return>texty</return> with the function <strong>ps_set_value()</strong>. The function will
  issue an error if a font was not set before with <strong>ps_setfont()</strong>.
  
  <strong>ps_show()</strong> evaluates the following parameters and values as set by <strong>ps_set_parameter()</strong> and
  <strong>ps_set_value()</strong>.
  
  Distance between two consecutive glyphs. If this value is unequal to zero then all ligatures will
  be resolved. Values less than zero are allowed.
  
  Setting this parameter to "false" will turn off kerning. Kerning is turned on by default.
  
  Setting this parameter to "false" will turn off the use of ligatures.  Ligatures are turned on by
  default.
  
  Setting this parameter to "true" will turn on underlining. Underlining is turned off by default.
  
  Setting this parameter to "true" will turn on overlining. Overlining is turned off by default.
  
  Setting this parameter to "true" will turn on striking out. Striking out is turned off by default.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$text</strong>   The text to be output.

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

<comment>See Also:</comment>
   * <strong>ps_continue_text()</strong>
   * <strong>ps_show_xy()</strong>
   * <strong>ps_setfont()</strong>


id: ps_show2
type: function
doc:
<comment>Description:</comment>
  Output a text at current position
  
  Output text at the current position. Do not print more than <strong>$len</strong> characters.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$text</strong>   The text to be output.
  <info>int</info>       <strong>$len</strong>    The maximum number of characters to print.

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


id: ps_show_boxed
type: function
doc:
<comment>Description:</comment>
  Output text in a box
  
  Outputs a text in a given box. The lower left corner of the box is at (<strong>$left</strong>, <strong>$bottom</strong>). Line
  breaks will be inserted where needed. Multiple spaces are treated as one. Tabulators are treated
  as spaces.
  
  The text will be hyphenated if the parameter <strong>$hyphenation</strong> is set to <info>true</info> and the parameter
  <strong>$hyphendict</strong> contains a valid filename for a hyphenation file. The line spacing is taken from the
  value <return>leading</return>. Paragraphs can be separated by an empty line just like in TeX. If the value
  <return>parindent</return> is set to value &gt; 0.0 then the first n lines will be indented. The number n of lines
  is set by the parameter <return>numindentlines</return>. In order to prevent indenting of the first m paragraphs
  set the value <return>parindentskip</return> to a positive number.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>       Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$text</strong>        The text to be output into the given box.
  <info>float</info>     <strong>$left</strong>        x-coordinate of the lower left corner of the box.
  <info>float</info>     <strong>$bottom</strong>      y-coordinate of the lower left corner of the box.
  <info>float</info>     <strong>$width</strong>       Width of the box.
  <info>float</info>     <strong>$height</strong>      Height of the box.
  <info>string</info>    <strong>$hmode</strong>       The parameter <strong>$hmode</strong> can be <return>justify</return>, <return>fulljustify</return>, <return>right</return>, <return>left</return>, or <return>center</return>.
                         The difference of <return>justify</return> and <return>fulljustify</return> just affects the last line of the
                         box. In <return>fulljustify</return> mode the last line will be left and right justified
                         unless this is also the last line of paragraph. In <return>justify</return> mode it will
                         always be left justified.
  <info>string</info>    <strong>$feature</strong>     
  <info></info>          <strong>$hyphendict</strong>  Set to <info>true</info> in order to turn hyphenation on. This requires a dictionary to
                         be set with the parameter <strong>$hyphendict</strong>. Defaults to <info>false</info>.

<comment>Return:</comment>
  <info>int</info>  Number of characters that could not be written.

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


id: ps_show_xy
type: function
doc:
<comment>Description:</comment>
  Output text at given position
  
  Output a text at the given text position.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$text</strong>   The text to be output.
  <info>float</info>     <strong>$x</strong>      x-coordinate of the lower left corner of the box surrounding the text.
  <info>float</info>     <strong>$y</strong>      y-coordinate of the lower left corner of the box surrounding the text.

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

<comment>See Also:</comment>
   * <strong>ps_continue_text()</strong>
   * <strong>ps_show()</strong>


id: ps_show_xy2
type: function
doc:
<comment>Description:</comment>
  Output text at position
  
  本函数还未编写文档，仅有参数列表。
  
  本函数还未编写文档，仅有参数列表。

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


id: ps_string_geometry
type: function
doc:
<comment>Description:</comment>
  Gets geometry of a string
  
  This function is similar to <strong>ps_stringwidth()</strong> but returns an array of dimensions containing the
  width, ascender, and descender of the text.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$text</strong>    The text for which the geometry is to be calculated.
  <info>int</info>       <strong>$fontid</strong>  The identifier of the font to be used. If not font is specified the current
                     font will be used.
  <info>float</info>     <strong>$size</strong>    The size of the font. If no size is specified the current size is used.

<comment>Return:</comment>
  <info>array</info>  An array of the dimensions of a string. The element 'width' contains the width of the
         string as returned by <strong>ps_stringwidth()</strong>. The element 'descender' contains the maximum
         descender and 'ascender' the maximum ascender of the string.

<comment>See Also:</comment>
   * <strong>ps_continue_text()</strong>
   * <strong>ps_stringwidth()</strong>


id: ps_stringwidth
type: function
doc:
<comment>Description:</comment>
  Gets width of a string
  
  Calculates the width of a string in points if it was output in the given font and font size. This
  function needs an Adobe font metrics file to calculate the precise width. If kerning is turned on,
  it will be taken into account.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>string</info>    <strong>$text</strong>    The text for which the width is to be calculated.
  <info>int</info>       <strong>$fontid</strong>  The identifier of the font to be used. If not font is specified the current
                     font will be used.
  <info>float</info>     <strong>$size</strong>    The size of the font. If no size is specified the current size is used.

<comment>Return:</comment>
  <info>float</info>  Width of a string in points.

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


id: ps_stroke
type: function
doc:
<comment>Description:</comment>
  Draws the current path
  
  Draws the path constructed with previously called drawing functions like <strong>ps_lineto()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.

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

<comment>See Also:</comment>
   * <strong>ps_closepath_stroke()</strong>
   * <strong>ps_fill()</strong>
   * <strong>ps_fill_stroke()</strong>


id: ps_symbol
type: function
doc:
<comment>Description:</comment>
  Output a glyph
  
  Output the glyph at position <strong>$ord</strong> in the font encoding vector of the current font. The font
  encoding for a font can be set when loading the font with <strong>ps_findfont()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$ord</strong>    The position of the glyph in the font encoding vector.

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

<comment>See Also:</comment>
   * <strong>ps_symbol_name()</strong>
   * <strong>ps_symbol_width()</strong>


id: ps_symbol_name
type: function
doc:
<comment>Description:</comment>
  Gets name of a glyph
  
  This function needs an Adobe font metrics file to know which glyphs are available.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$ord</strong>     The parameter <strong>$ord</strong> is the position of the glyph in the font encoding vector.
  <info>int</info>       <strong>$fontid</strong>  The identifier of the font to be used. If not font is specified the current
                     font will be used.

<comment>Return:</comment>
  <info>string</info>  The name of a glyph in the given font.

<comment>See Also:</comment>
   * <strong>ps_symbol()</strong>
   * <strong>ps_symbol_width()</strong>


id: ps_symbol_width
type: function
doc:
<comment>Description:</comment>
  Gets width of a glyph
  
  Calculates the width of a glyph in points if it was output in the given font and font size.  This
  function needs an Adobe font metrics file to calculate the precise width.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>   Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>int</info>       <strong>$ord</strong>     The position of the glyph in the font encoding vector.
  <info>int</info>       <strong>$fontid</strong>  The identifier of the font to be used. If not font is specified the current
                     font will be used.
  <info>float</info>     <strong>$size</strong>    The size of the font. If no size is specified the current size is used.

<comment>Return:</comment>
  <info>float</info>  The width of a glyph in points.

<comment>See Also:</comment>
   * <strong>ps_symbol()</strong>
   * <strong>ps_symbol_name()</strong>


id: ps_translate
type: function
doc:
<comment>Description:</comment>
  Sets translation
  
  Sets a new initial point of the coordinate system.

<comment>Param:</comment>
  <info>resource</info>  <strong>$psdoc</strong>  Resource identifier of the postscript file as returned by <strong>ps_new()</strong>.
  <info>float</info>     <strong>$x</strong>      x-coordinate of the origin of the translated coordinate system.
  <info>float</info>     <strong>$y</strong>      y-coordinate of the origin of the translated coordinate system.

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

<comment>See Also:</comment>
   * <strong>ps_scale()</strong>
   * <strong>ps_rotate()</strong>


id: pspell_add_to_personal
type: function
doc:
<comment>Description:</comment>
  Add the word to a personal wordlist
  
  <strong>pspell_add_to_personal()</strong> adds a word to the personal wordlist. If you used <strong>pspell_new_config()</strong>
  with <strong>pspell_config_personal()</strong> to open the dictionary, you can save the wordlist later with
  <strong>pspell_save_wordlist()</strong>.

<comment>Param:</comment>
  <info>PSpell\Dictionary</info>  <strong>$dictionary</strong>  An <class>PSpell\Dictionary</class> instance.
  <info>string</info>             <strong>$word</strong>        The added word.

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


id: pspell_add_to_session
type: function
doc:
<comment>Description:</comment>
  Add the word to the wordlist in the current session
  
  <strong>pspell_add_to_session()</strong> adds a word to the wordlist associated with the current session. It is
  very similar to <strong>pspell_add_to_personal()</strong>

<comment>Param:</comment>
  <info>PSpell\Dictionary</info>  <strong>$dictionary</strong>  An <class>PSpell\Dictionary</class> instance.
  <info>string</info>             <strong>$word</strong>        The added word.

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


id: pspell_check
type: function
doc:
<comment>Description:</comment>
  Check a word
  
  <strong>pspell_check()</strong> checks the spelling of a word.

<comment>Param:</comment>
  <info>PSpell\Dictionary</info>  <strong>$dictionary</strong>  An <class>PSpell\Dictionary</class> instance.
  <info>string</info>             <strong>$word</strong>        The tested word.

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


id: pspell_clear_session
type: function
doc:
<comment>Description:</comment>
  Clear the current session
  
  <strong>pspell_clear_session()</strong> clears the current session. The current wordlist becomes blank, and, for
  example, if you try to save it with <strong>pspell_save_wordlist()</strong>, nothing happens.

<comment>Param:</comment>
  <info>PSpell\Dictionary</info>  <strong>$dictionary</strong>  An <class>PSpell\Dictionary</class> instance.

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


id: pspell_config_create
type: function
doc:
<comment>Description:</comment>
  Create a config used to open a dictionary
  
  Create a config used to open a dictionary.
  
  <strong>pspell_config_create()</strong> has a very similar syntax to <strong>pspell_new()</strong>. In fact, using
  <strong>pspell_config_create()</strong> immediately followed by <strong>pspell_new_config()</strong> will produce the exact same
  result. However, after creating a new config, you can also use <strong>pspell_config_*()</strong> functions before
  calling <strong>pspell_new_config()</strong> to take advantage of some advanced functionality.
  
  For more information and examples, check out inline manual pspell website:http://aspell.net/.

<comment>Param:</comment>
  <info>string</info>  <strong>$language</strong>  The language parameter is the language code which consists of the two letter
                     ISO 639 language code and an optional two letter ISO 3166 country code after a
                     dash or underscore.
  <info>string</info>  <strong>$spelling</strong>  The spelling parameter is the requested spelling for languages with more than
                     one spelling such as English. Known values are 'american', 'british', and
                     'canadian'.
  <info>string</info>  <strong>$jargon</strong>    The jargon parameter contains extra information to distinguish two different
                     words lists that have the same language and spelling parameters.
  <info>string</info>  <strong>$encoding</strong>  The encoding parameter is the encoding that words are expected to be in.  Valid
                     values are 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine
                     unsigned 16', 'machine unsigned 32'. This parameter is largely untested, so be
                     careful when using.

<comment>Return:</comment>
  <info>PSpell\Config</info>  Returns an <class>PSpell\Config</class> instance.


id: pspell_config_data_dir
type: function
doc:
<comment>Description:</comment>
  Location of language data files
  
  本函数还未编写文档，仅有参数列表。
  
  本函数还未编写文档，仅有参数列表。

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


id: pspell_config_dict_dir
type: function
doc:
<comment>Description:</comment>
  Location of the main word list
  
  本函数还未编写文档，仅有参数列表。
  
  本函数还未编写文档，仅有参数列表。

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


id: pspell_config_ignore
type: function
doc:
<comment>Description:</comment>
  Ignore words less than N characters long
  
  <strong>pspell_config_ignore()</strong> should be used on a config before calling <strong>pspell_new_config()</strong>. This
  function allows short words to be skipped by the spell checker.

<comment>Param:</comment>
  <info>PSpell\Config</info>  <strong>$config</strong>      An <class>PSpell\Config</class> instance.
  <info>int</info>            <strong>$min_length</strong>  Words less than <strong>$min_length</strong> characters will be skipped.

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


id: pspell_config_mode
type: function
doc:
<comment>Description:</comment>
  Change the mode number of suggestions returned
  
  <strong>pspell_config_mode()</strong> should be used on a config before calling <strong>pspell_new_config()</strong>. This function
  determines how many suggestions will be returned by <strong>pspell_suggest()</strong>.

<comment>Param:</comment>
  <info>PSpell\Config</info>  <strong>$config</strong>  An <class>PSpell\Config</class> instance.
  <info>int</info>            <strong>$mode</strong>    The mode parameter is the mode in which spellchecker will work. There are
                          several modes available: <info>PSPELL_FAST</info> - Fast mode (least number of
                          suggestions) <info>PSPELL_NORMAL</info> - Normal mode (more suggestions)
                          <info>PSPELL_BAD_SPELLERS</info> - Slow mode (a lot of suggestions)
                          
                          <info>PSPELL_FAST</info> - Fast mode (least number of suggestions)
                          
                          <info>PSPELL_NORMAL</info> - Normal mode (more suggestions)
                          
                          <info>PSPELL_BAD_SPELLERS</info> - Slow mode (a lot of suggestions)

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


id: pspell_config_personal
type: function
doc:
<comment>Description:</comment>
  Set a file that contains personal wordlist
  
  Set a file that contains personal wordlist. The personal wordlist will be loaded and used in
  addition to the standard one after you call <strong>pspell_new_config()</strong>. The file is also the file where
  <strong>pspell_save_wordlist()</strong> will save personal wordlist to.
  
  <strong>pspell_config_personal()</strong> should be used on a config before calling <strong>pspell_new_config()</strong>.

<comment>Param:</comment>
  <info>PSpell\Config</info>  <strong>$config</strong>    An <class>PSpell\Config</class> instance.
  <info>string</info>         <strong>$filename</strong>  The personal wordlist. If the file does not exist, it will be created.
                            The file should be writable by whoever PHP runs as (e.g. nobody).

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


id: pspell_config_repl
type: function
doc:
<comment>Description:</comment>
  Set a file that contains replacement pairs
  
  Set a file that contains replacement pairs.
  
  The replacement pairs improve the quality of the spellchecker. When a word is misspelled, and a
  proper suggestion was not found in the list, <strong>pspell_store_replacement()</strong> can be used to store a
  replacement pair and then <strong>pspell_save_wordlist()</strong> to save the wordlist along with the replacement
  pairs.
  
  <strong>pspell_config_repl()</strong> should be used on a config before calling <strong>pspell_new_config()</strong>.

<comment>Param:</comment>
  <info>PSpell\Config</info>  <strong>$config</strong>    An <class>PSpell\Config</class> instance.
  <info>string</info>         <strong>$filename</strong>  The file should be writable by whoever PHP runs as (e.g. nobody).

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


id: pspell_config_runtogether
type: function
doc:
<comment>Description:</comment>
  Consider run-together words as valid compounds
  
  This function determines whether run-together words will be treated as legal compounds.  That is,
  "thecat" will be a legal compound, although there should be a space between the two words.
  Changing this setting only affects the results returned by <strong>pspell_check()</strong>; <strong>pspell_suggest()</strong> will
  still return suggestions.
  
  <strong>pspell_config_runtogether()</strong> should be used on a config before calling <strong>pspell_new_config()</strong>.

<comment>Param:</comment>
  <info>PSpell\Config</info>  <strong>$config</strong>  An <class>PSpell\Config</class> instance.
  <info>bool</info>           <strong>$allow</strong>   <info>true</info> if run-together words should be treated as legal compounds, <info>false</info>
                          otherwise.

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


id: pspell_config_save_repl
type: function
doc:
<comment>Description:</comment>
  Determine whether to save a replacement pairs list
    along with the wordlist
  
  <strong>pspell_config_save_repl()</strong> determines whether <strong>pspell_save_wordlist()</strong> will save the replacement
  pairs along with the wordlist. Usually there is no need to use this function because if
  <strong>pspell_config_repl()</strong> is used, the replacement pairs will be saved by <strong>pspell_save_wordlist()</strong>
  anyway, and if it is not, the replacement pairs will not be saved.
  
  <strong>pspell_config_save_repl()</strong> should be used on a config before calling <strong>pspell_new_config()</strong>.

<comment>Param:</comment>
  <info>PSpell\Config</info>  <strong>$config</strong>  An <class>PSpell\Config</class> instance.
  <info>bool</info>           <strong>$save</strong>    <info>true</info> if replacement pairs should be saved, <info>false</info> otherwise.

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


id: pspell_new
type: function
doc:
<comment>Description:</comment>
  Load a new dictionary
  
  <strong>pspell_new()</strong> opens up a new dictionary and returns an <class>PSpell\Dictionary</class> instance for use in other
  pspell functions.
  
  For more information and examples, check out inline manual pspell website:http://aspell.net/.

<comment>Param:</comment>
  <info>string</info>  <strong>$language</strong>  The language parameter is the language code which consists of the two letter
                     ISO 639 language code and an optional two letter ISO 3166 country code after a
                     dash or underscore.
  <info>string</info>  <strong>$spelling</strong>  The spelling parameter is the requested spelling for languages with more than
                     one spelling such as English. Known values are 'american', 'british', and
                     'canadian'.
  <info>string</info>  <strong>$jargon</strong>    The jargon parameter contains extra information to distinguish two different
                     words lists that have the same language and spelling parameters.
  <info>string</info>  <strong>$encoding</strong>  The encoding parameter is the encoding that words are expected to be in.  Valid
                     values are 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine
                     unsigned 16', 'machine unsigned 32'. This parameter is largely untested, so be
                     careful when using.
  <info>int</info>     <strong>$mode</strong>      The mode parameter is the mode in which spellchecker will work. There are
                     several modes available: <info>PSPELL_FAST</info> - Fast mode (least number of suggestions)
                     <info>PSPELL_NORMAL</info> - Normal mode (more suggestions) <info>PSPELL_BAD_SPELLERS</info> - Slow mode
                     (a lot of suggestions) <info>PSPELL_RUN_TOGETHER</info> - Consider run-together words as
                     legal compounds.  That is, "thecat" will be a legal compound, although there
                     should be a space between the two words. Changing this setting only affects the
                     results returned by <strong>pspell_check()</strong>; <strong>pspell_suggest()</strong> will still return
                     suggestions.  Mode is a bitmask constructed from different constants listed
                     above. However, <info>PSPELL_FAST</info>, <info>PSPELL_NORMAL</info> and <info>PSPELL_BAD_SPELLERS</info> are mutually
                     exclusive, so you should select only one of them.
                     
                     <info>PSPELL_FAST</info> - Fast mode (least number of suggestions)
                     
                     <info>PSPELL_NORMAL</info> - Normal mode (more suggestions)
                     
                     <info>PSPELL_BAD_SPELLERS</info> - Slow mode (a lot of suggestions)
                     
                     <info>PSPELL_RUN_TOGETHER</info> - Consider run-together words as legal compounds.  That is,
                     "thecat" will be a legal compound, although there should be a space between the
                     two words. Changing this setting only affects the results returned by
                     <strong>pspell_check()</strong>; <strong>pspell_suggest()</strong> will still return suggestions.

<comment>Return:</comment>
  <info>PSpell\Dictionary|false</info>  Returns an <class>PSpell\Dictionary</class> instance on success, 或者在失败时返回 <info>false</info>.


id: pspell_new_config
type: function
doc:
<comment>Description:</comment>
  Load a new dictionary with settings based on a given config
    
  
  <strong>pspell_new_config()</strong> opens up a new dictionary with settings specified in a <strong>$config</strong>, created with
  <strong>pspell_config_create()</strong> and modified with <strong>pspell_config_*()</strong> functions. This method provides you
  with the most flexibility and has all the functionality provided by <strong>pspell_new()</strong> and
  <strong>pspell_new_personal()</strong>.

<comment>Param:</comment>
  <info>PSpell\Config</info>  <strong>$config</strong>  The <strong>$config</strong> parameter is the one returned by <strong>pspell_config_create()</strong> when
                          the config was created.

<comment>Return:</comment>
  <info>PSpell\Dictionary|false</info>  Returns an <class>PSpell\Dictionary</class> instance on success,  或者在失败时返回 <info>false</info>


id: pspell_new_personal
type: function
doc:
<comment>Description:</comment>
  Load a new dictionary with personal wordlist
  
  <strong>pspell_new_personal()</strong> opens up a new dictionary with a personal wordlist. The wordlist can be
  modified and saved with <strong>pspell_save_wordlist()</strong>, if desired. However, the replacement pairs are not
  saved. In order to save replacement pairs, you should create a config using
  <strong>pspell_config_create()</strong>, set the personal wordlist file with <strong>pspell_config_personal()</strong>, set the file
  for replacement pairs with <strong>pspell_config_repl()</strong>, and open a new dictionary with
  <strong>pspell_new_config()</strong>.
  
  For more information and examples, check out inline manual pspell website:http://aspell.net/.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The file where words added to the personal list will be stored. It should be an
                     absolute filename beginning with '/' because otherwise it will be relative to
                     $HOME, which is "/root" for most systems, and is probably not what you want.
  <info>string</info>  <strong>$language</strong>  The language code which consists of the two letter ISO 639 language code and an
                     optional two letter ISO 3166 country code after a dash or underscore.
  <info>string</info>  <strong>$spelling</strong>  The requested spelling for languages with more than one spelling such as
                     English. Known values are 'american', 'british', and 'canadian'.
  <info>string</info>  <strong>$jargon</strong>    Extra information to distinguish two different words lists that have the same
                     language and spelling parameters.
  <info>string</info>  <strong>$encoding</strong>  The encoding that words are expected to be in.  Valid values are <return>utf-8</return>,
                     <return>iso8859-*</return>,  <return>koi8-r</return>, <return>viscii</return>,  <return>cp1252</return>, <return>machine unsigned 16</return>,  <return>machine unsigned 32</return>.
  <info>int</info>     <strong>$mode</strong>      The mode in which spellchecker will work. There are several modes available:
                     <info>PSPELL_FAST</info> - Fast mode (least number of suggestions) <info>PSPELL_NORMAL</info> - Normal
                     mode (more suggestions) <info>PSPELL_BAD_SPELLERS</info> - Slow mode (a lot of suggestions)
                     <info>PSPELL_RUN_TOGETHER</info> - Consider run-together words as legal compounds.  That is,
                     "thecat" will be a legal compound, although there should be a space between the
                     two words. Changing this setting only affects the results returned by
                     <strong>pspell_check()</strong>; <strong>pspell_suggest()</strong> will still return suggestions.  Mode is a
                     bitmask constructed from different constants listed above. However,
                     <info>PSPELL_FAST</info>, <info>PSPELL_NORMAL</info> and <info>PSPELL_BAD_SPELLERS</info> are mutually exclusive, so
                     you should select only one of them.
                     
                     <info>PSPELL_FAST</info> - Fast mode (least number of suggestions)
                     
                     <info>PSPELL_NORMAL</info> - Normal mode (more suggestions)
                     
                     <info>PSPELL_BAD_SPELLERS</info> - Slow mode (a lot of suggestions)
                     
                     <info>PSPELL_RUN_TOGETHER</info> - Consider run-together words as legal compounds.  That is,
                     "thecat" will be a legal compound, although there should be a space between the
                     two words. Changing this setting only affects the results returned by
                     <strong>pspell_check()</strong>; <strong>pspell_suggest()</strong> will still return suggestions.

<comment>Return:</comment>
  <info>PSpell\Dictionary|false</info>  Returns an <class>PSpell\Dictionary</class> instance on success, 或者在失败时返回 <info>false</info>.


id: pspell_save_wordlist
type: function
doc:
<comment>Description:</comment>
  Save the personal wordlist to a file
  
  <strong>pspell_save_wordlist()</strong> saves the personal wordlist from the current session. The location of files
  to be saved specified with <strong>pspell_config_personal()</strong> and (optionally) <strong>pspell_config_repl()</strong>.

<comment>Param:</comment>
  <info>PSpell\Dictionary</info>  <strong>$dictionary</strong>  An <class>PSpell\Dictionary</class> instance.

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


id: pspell_store_replacement
type: function
doc:
<comment>Description:</comment>
  Store a replacement pair for a word
  
  <strong>pspell_store_replacement()</strong> stores a replacement pair for a word, so that replacement can be
  returned by <strong>pspell_suggest()</strong> later. In order to be able to take advantage of this function, you
  have to use <strong>pspell_new_personal()</strong> to open the dictionary. In order to permanently save the
  replacement pair, you have to use <strong>pspell_config_personal()</strong> and <strong>pspell_config_repl()</strong> to set the
  path where to save your custom wordlists, and then use <strong>pspell_save_wordlist()</strong> for the changes to
  be written to disk.

<comment>Param:</comment>
  <info>PSpell\Dictionary</info>  <strong>$dictionary</strong>  An <class>PSpell\Dictionary</class> instance.
  <info>string</info>             <strong>$misspelled</strong>  The misspelled word.
  <info>string</info>             <strong>$correct</strong>     The fixed spelling for the <strong>$misspelled</strong> word.

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


id: pspell_suggest
type: function
doc:
<comment>Description:</comment>
  Suggest spellings of a word
  
  <strong>pspell_suggest()</strong> returns an array of possible spellings for the given word.

<comment>Param:</comment>
  <info>PSpell\Dictionary</info>  <strong>$dictionary</strong>  An <class>PSpell\Dictionary</class> instance.
  <info>string</info>             <strong>$word</strong>        The tested word.

<comment>Return:</comment>
  <info>array|false</info>  Returns an array of possible spellings.


id: putenv
type: function
doc:
<comment>Description:</comment>
  设置环境变量的值
  
  添加 <strong>$assignment</strong> 到服务器环境变量。 环境变量仅存活于当前请求期间。 在请求结束时环境会恢复到初始状
  态。

<comment>Param:</comment>
  <info>string</info>  <strong>$assignment</strong>  设置，例如 <return>"FOO=BAR"</return>

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

<comment>See Also:</comment>
   * <strong>getenv()</strong>
   * <strong>apache_setenv()</strong>


id: quoted_printable_decode
type: function
doc:
<comment>Description:</comment>
  将 quoted-printable 字符串转换为 8-bit 字符串
  
  该函数返回 8 位二进制字符串，对应解码后的带引号可打印的字符串（参考 RFC2045 的 6.7 章节，而不是
  RFC2821 的 4.5.2 章节，因此不会去除行首的附加句号）。
  
  该函数与 <strong>imap_qprint()</strong> 函数十分相似，但是该函数不需要依赖 IMAP 模块。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  输入的字符串。

<comment>Return:</comment>
  <info>string</info>  返回的 8-bit 二进制字符串。

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


id: quoted_printable_encode
type: function
doc:
<comment>Description:</comment>
  将 8-bit 字符串转换成 quoted-printable 字符串
  
  返回 quoted-printable 格式的字符，该格式由 RFC2045 6.7.章节里制定。
  
  该函数与 <strong>imap_8bit()</strong> 函数十分相似，不同的是该函数不需要 IMAP 模块就能运行。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  输入的字符串。

<comment>Return:</comment>
  <info>string</info>  返回编码之后的字符串。

<comment>See Also:</comment>
   * <strong>quoted_printable_decode()</strong>
   * <strong>iconv_mime_encode()</strong>


id: quotemeta
type: function
doc:
<comment>Description:</comment>
  转义元字符集
  
  返回 在下面这些特殊字符前加 反斜线(<return>\</return>) 转义后的字符串。 这些特殊字符包含： . \ + * ? [ ^ ] ( $ )

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  输入字符串

<comment>Return:</comment>
  <info>string</info>  返回 元字符集被转义后的 字符串，如果输入字符串<strong>$string</strong>为空， 则返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>addslashes()</strong>
   * <strong>addcslashes()</strong>
   * <strong>htmlentities()</strong>
   * <strong>htmlspecialchars()</strong>
   * <strong>nl2br()</strong>
   * <strong>stripslashes()</strong>
   * <strong>stripcslashes()</strong>
   * <strong>preg_quote()</strong>


id: rad2deg
type: function
doc:
<comment>Description:</comment>
  将弧度数转换为相应的角度数
    
  
  本函数将 <strong>$num</strong> 从弧度转换为角度。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  一个弧度值

<comment>Return:</comment>
  <info>float</info>  <strong>$num</strong> 相应的角度数

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


id: radius_acct_open
type: function
doc:
<comment>Description:</comment>
  Creates a Radius handle for accounting

<comment>Return:</comment>
  <info>resource</info>  Returns a handle on success, <info>false</info> on error. This function only fails if insufficient
            memory is available.


id: radius_add_server
type: function
doc:
<comment>Description:</comment>
  Adds a server
  
  <strong>radius_add_server()</strong> may be called multiple times, and it may be used together with
  <strong>radius_config()</strong>. At most 10 servers may be specified. When multiple servers are given, they are
  tried in round-robin fashion until a valid response is received, or until each server's <strong>$max_tries</strong>
  limit has been reached.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  
  <info>string</info>    <strong>$hostname</strong>       The <strong>$hostname</strong> parameter specifies the server host, either as a fully
                            qualified domain name or as a dotted-quad IP address in text form.
  <info>int</info>       <strong>$port</strong>           The <strong>$port</strong> specifies the UDP port to contact on the server. If port is
                            given as 0, the library looks up the radius/udp or radacct/udp service
                            in the network services database, and uses the port found there.  If no
                            entry is found, the library uses the standard Radius ports, 1812 for
                            authentication and 1813 for accounting.
  <info>string</info>    <strong>$secret</strong>         The shared secret for the server host is passed to the <strong>$secret</strong>
                            parameter. The Radius protocol ignores all but the leading 128 bytes of
                            the shared secret.
  <info>int</info>       <strong>$timeout</strong>        The timeout for receiving replies from the server is passed to the
                            <strong>$timeout</strong> parameter, in units of seconds.
  <info>int</info>       <strong>$max_tries</strong>      The maximum number of repeated requests to make before giving up is
                            passed into the <strong>$max_tries</strong>.

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

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


id: radius_auth_open
type: function
doc:
<comment>Description:</comment>
  Creates a Radius handle for authentication

<comment>Return:</comment>
  <info>resource</info>  Returns a handle on success, <info>false</info> on error. This function only fails if insufficient
            memory is available.


id: radius_close
type: function
doc:
<comment>Description:</comment>
  Frees all ressources
  
  It is not needed to call this function because php frees all resources at the end of each request.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.

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


id: radius_config
type: function
doc:
<comment>Description:</comment>
  Causes the library to read the given configuration file
  
  Before issuing any Radius requests, the library must be made aware of the servers it can contact.
  The easiest way to configure the library is to call <strong>radius_config()</strong>. <strong>radius_config()</strong> causes the
  library to read a configuration file whose format is described in radius.conf.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  
  <info>string</info>    <strong>$file</strong>           The pathname of the configuration file is passed as the file argument to
                            <strong>radius_config()</strong>. The library can also be configured programmatically by
                            calls to <strong>radius_add_server()</strong>.

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

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


id: radius_create_request
type: function
doc:
<comment>Description:</comment>
  Create accounting or authentication request
  
  A Radius request consists of a code specifying the kind of request, and zero or more attributes
  which provide additional information. To begin constructing a new request, call
  <strong>radius_create_request()</strong>.
  
  Attention: You must call this function, before you can put any attribute!

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  
  <info>int</info>       <strong>$type</strong>           Type is <info>RADIUS_ACCESS_REQUEST</info> or <info>RADIUS_ACCOUNTING_REQUEST</info>.

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

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


id: radius_cvt_addr
type: function
doc:
<comment>Description:</comment>
  Converts raw data to IP-Address
  
  Converts raw data to IP-Address

<comment>Param:</comment>
  <info>string</info>  <strong>$data</strong>  Input data

<comment>Return:</comment>
  <info>string</info>  Returns the IP-Address.

<comment>See Also:</comment>
   * <strong>radius_cvt_int()</strong>
   * <strong>radius_cvt_string()</strong>


id: radius_cvt_int
type: function
doc:
<comment>Description:</comment>
  Converts raw data to integer
  
  Converts raw data to integer

<comment>Param:</comment>
  <info>string</info>  <strong>$data</strong>  Input data

<comment>Return:</comment>
  <info>int</info>  Returns the integer, retrieved from data.

<comment>See Also:</comment>
   * <strong>radius_cvt_addr()</strong>
   * <strong>radius_cvt_string()</strong>


id: radius_cvt_string
type: function
doc:
<comment>Description:</comment>
  Converts raw data to string
  
  Converts raw data to string

<comment>Param:</comment>
  <info>string</info>  <strong>$data</strong>  Input data

<comment>Return:</comment>
  <info>string</info>  Returns the string, retrieved from data.

<comment>See Also:</comment>
   * <strong>radius_cvt_addr()</strong>
   * <strong>radius_cvt_int()</strong>


id: radius_demangle
type: function
doc:
<comment>Description:</comment>
  Demangles data
  
  Some data (Passwords, MS-CHAPv1 MPPE-Keys) is mangled for security reasons, and must be demangled
  before you can use them.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.
  <info>string</info>    <strong>$mangled</strong>        The mangled data to demangle

<comment>Return:</comment>
  <info>string</info>  Returns the demangled string, or <info>false</info> on error.


id: radius_demangle_mppe_key
type: function
doc:
<comment>Description:</comment>
  Derives mppe-keys from mangled data
  
  When using MPPE with MS-CHAPv2, the send- and recv-keys are mangled (see RFC 2548), however this
  function is useless, because I don't think that there is or will be a PPTP-MPPE implementation in
  PHP.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.
  <info>string</info>    <strong>$mangled</strong>        The mangled data to demangle

<comment>Return:</comment>
  <info>string</info>  Returns the demangled string, or <info>false</info> on error.


id: radius_get_attr
type: function
doc:
<comment>Description:</comment>
  Extracts an attribute
  
  Like Radius requests, each response may contain zero or more attributes. After a response has been
  received successfully by <strong>radius_send_request()</strong>, its attributes can be extracted one by one using
  <strong>radius_get_attr()</strong>. Each time <strong>radius_get_attr()</strong> is called, it gets the next attribute from the
  current response.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.

<comment>Return:</comment>
  <info>mixed</info>  Returns an associative array containing the attribute-type and the data, or error number \<= 0.

<comment>See Also:</comment>
   * <strong>radius_put_attr()</strong>
   * <strong>radius_get_vendor_attr()</strong>
   * <strong>radius_put_vendor_attr()</strong>
   * <strong>radius_send_request()</strong>


id: radius_get_tagged_attr_data
type: function
doc:
<comment>Description:</comment>
  Extracts the data from a tagged attribute
  
  If a tagged attribute has been returned from <strong>radius_get_attr()</strong>, <strong>radius_get_tagged_attr_data()</strong> will
  return the data from the attribute.

<comment>Param:</comment>
  <info>string</info>  <strong>$data</strong>  The tagged attribute to be decoded.

<comment>Return:</comment>
  <info>string|false</info>  Returns the data from the tagged attribute  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>radius_get_attr()</strong>
   * <strong>radius_get_tagged_attr_tag()</strong>


id: radius_get_tagged_attr_tag
type: function
doc:
<comment>Description:</comment>
  Extracts the tag from a tagged attribute
  
  If a tagged attribute has been returned from <strong>radius_get_attr()</strong>, <strong>radius_get_tagged_attr_data()</strong> will
  return the tag from the attribute.

<comment>Param:</comment>
  <info>string</info>  <strong>$data</strong>  The tagged attribute to be decoded.

<comment>Return:</comment>
  <info>int|false</info>  Returns the tag from the tagged attribute  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>radius_get_attr()</strong>
   * <strong>radius_get_tagged_attr_data()</strong>


id: radius_get_vendor_attr
type: function
doc:
<comment>Description:</comment>
  Extracts a vendor specific attribute
  
  If <strong>radius_get_attr()</strong> returns <info>RADIUS_VENDOR_SPECIFIC</info>, <strong>radius_get_vendor_attr()</strong> may be called to
  determine the vendor.

<comment>Param:</comment>
  <info>string</info>  <strong>$data</strong>  Input data

<comment>Return:</comment>
  <info>array</info>  Returns an associative array containing the attribute-type, vendor and the data, or <info>false</info>
         on error.

<comment>See Also:</comment>
   * <strong>radius_get_attr()</strong>
   * <strong>radius_put_vendor_attr()</strong>


id: radius_put_addr
type: function
doc:
<comment>Description:</comment>
  Attaches an IP address attribute
  
  Attaches an IP address attribute to the current RADIUS request.
  
  A request must be created via <strong>radius_create_request()</strong> before this function can be called.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.
  <info>int</info>       <strong>$type</strong>           The attribute type.
  <info>string</info>    <strong>$addr</strong>           An IPv4 address in string form, such as <return>10.0.0.1</return>.
  <info>int</info>       <strong>$options</strong>        A bitmask of the attribute options. The available options include
                            <info>RADIUS_OPTION_TAGGED</info> and <info>RADIUS_OPTION_SALT</info>.
  <info>int</info>       <strong>$tag</strong>            The attribute tag. This parameter is ignored unless the
                            <info>RADIUS_OPTION_TAGGED</info> option is set.

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


id: radius_put_attr
type: function
doc:
<comment>Description:</comment>
  Attaches a binary attribute
  
  Attaches a binary attribute to the current RADIUS request.
  
  A request must be created via <strong>radius_create_request()</strong> before this function can be called.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.
  <info>int</info>       <strong>$type</strong>           The attribute type.
  <info>string</info>    <strong>$value</strong>          The attribute value, which will be treated as a raw binary string.
  <info>int</info>       <strong>$options</strong>        A bitmask of the attribute options. The available options include
                            <info>RADIUS_OPTION_TAGGED</info> and <info>RADIUS_OPTION_SALT</info>.
  <info>int</info>       <strong>$tag</strong>            The attribute tag. This parameter is ignored unless the
                            <info>RADIUS_OPTION_TAGGED</info> option is set.

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

<comment>See Also:</comment>
   * <strong>radius_get_attr()</strong>
   * <strong>radius_get_vendor_attr()</strong>
   * <strong>radius_put_vendor_attr()</strong>


id: radius_put_int
type: function
doc:
<comment>Description:</comment>
  Attaches an integer attribute
  
  Attaches an integer attribute to the current RADIUS request.
  
  A request must be created via <strong>radius_create_request()</strong> before this function can be called.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.
  <info>int</info>       <strong>$type</strong>           The attribute type.
  <info>int</info>       <strong>$value</strong>          The attribute value.
  <info>int</info>       <strong>$options</strong>        A bitmask of the attribute options. The available options include
                            <info>RADIUS_OPTION_TAGGED</info> and <info>RADIUS_OPTION_SALT</info>.
  <info>int</info>       <strong>$tag</strong>            The attribute tag. This parameter is ignored unless the
                            <info>RADIUS_OPTION_TAGGED</info> option is set.

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

<comment>See Also:</comment>
   * <strong>radius_put_string()</strong>
   * <strong>radius_put_vendor_int()</strong>
   * <strong>radius_put_vendor_string()</strong>


id: radius_put_string
type: function
doc:
<comment>Description:</comment>
  Attaches a string attribute
  
  Attaches a string attribute to the current RADIUS request. In general, <strong>radius_put_attr()</strong> is a more
  useful function for attaching string attributes, as it is binary safe.
  
  A request must be created via <strong>radius_create_request()</strong> before this function can be called.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.
  <info>int</info>       <strong>$type</strong>           The attribute type.
  <info>string</info>    <strong>$value</strong>          The attribute value. This value is expected by the underlying library to
                            be null terminated, therefore this parameter is not binary safe.
  <info>int</info>       <strong>$options</strong>        A bitmask of the attribute options. The available options include
                            <info>RADIUS_OPTION_TAGGED</info> and <info>RADIUS_OPTION_SALT</info>.
  <info>int</info>       <strong>$tag</strong>            The attribute tag. This parameter is ignored unless the
                            <info>RADIUS_OPTION_TAGGED</info> option is set.

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

<comment>See Also:</comment>
   * <strong>radius_put_int()</strong>
   * <strong>radius_put_vendor_int()</strong>
   * <strong>radius_put_vendor_string()</strong>


id: radius_put_vendor_addr
type: function
doc:
<comment>Description:</comment>
  Attaches a vendor specific IP address attribute
  
  Attaches an IP address vendor specific attribute to the current RADIUS request.
  
  A request must be created via <strong>radius_create_request()</strong> before this function can be called.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.
  <info>int</info>       <strong>$vendor</strong>         The vendor ID.
  <info>int</info>       <strong>$type</strong>           The attribute type.
  <info>string</info>    <strong>$addr</strong>           An IPv4 address in string form, such as <return>10.0.0.1</return>.
  <info></info>          <strong>$options</strong>        A bitmask of the attribute options. The available options include
                            <info>RADIUS_OPTION_TAGGED</info> and <info>RADIUS_OPTION_SALT</info>.
  <info></info>          <strong>$tag</strong>            The attribute tag. This parameter is ignored unless the
                            <info>RADIUS_OPTION_TAGGED</info> option is set.

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


id: radius_put_vendor_attr
type: function
doc:
<comment>Description:</comment>
  Attaches a vendor specific binary attribute
  
  Attaches a vendor specific binary attribute to the current RADIUS request.
  
  A request must be created via <strong>radius_create_request()</strong> before this function can be called.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.
  <info>int</info>       <strong>$vendor</strong>         The vendor ID.
  <info>int</info>       <strong>$type</strong>           The attribute type.
  <info>string</info>    <strong>$value</strong>          The attribute value, which will be treated as a raw binary string.
  <info>int</info>       <strong>$options</strong>        A bitmask of the attribute options. The available options include
                            <info>RADIUS_OPTION_TAGGED</info> and <info>RADIUS_OPTION_SALT</info>.
  <info>int</info>       <strong>$tag</strong>            The attribute tag. This parameter is ignored unless the
                            <info>RADIUS_OPTION_TAGGED</info> option is set.

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

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


id: radius_put_vendor_int
type: function
doc:
<comment>Description:</comment>
  Attaches a vendor specific integer attribute
  
  Attaches a vendor specific integer attribute to the current RADIUS request.
  
  A request must be created via <strong>radius_create_request()</strong> before this function can be called.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.
  <info>int</info>       <strong>$vendor</strong>         The vendor ID.
  <info>int</info>       <strong>$type</strong>           The attribute type.
  <info>int</info>       <strong>$value</strong>          The attribute value.
  <info>int</info>       <strong>$options</strong>        A bitmask of the attribute options. The available options include
                            <info>RADIUS_OPTION_TAGGED</info> and <info>RADIUS_OPTION_SALT</info>.
  <info>int</info>       <strong>$tag</strong>            The attribute tag. This parameter is ignored unless the
                            <info>RADIUS_OPTION_TAGGED</info> option is set.

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

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


id: radius_put_vendor_string
type: function
doc:
<comment>Description:</comment>
  Attaches a vendor specific string attribute
  
  Attaches a vendor specific string attribute to the current RADIUS request. In general,
  <strong>radius_put_vendor_attr()</strong> is a more useful function for attaching string attributes, as it is
  binary safe.
  
  A request must be created via <strong>radius_create_request()</strong> before this function can be called.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.
  <info>int</info>       <strong>$vendor</strong>         The vendor ID.
  <info>int</info>       <strong>$type</strong>           The attribute type.
  <info>string</info>    <strong>$value</strong>          The attribute value. This value is expected by the underlying library to
                            be null terminated, therefore this parameter is not binary safe.
  <info>int</info>       <strong>$options</strong>        A bitmask of the attribute options. The available options include
                            <info>RADIUS_OPTION_TAGGED</info> and <info>RADIUS_OPTION_SALT</info>.
  <info>int</info>       <strong>$tag</strong>            The attribute tag. This parameter is ignored unless the
                            <info>RADIUS_OPTION_TAGGED</info> option is set.

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

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


id: radius_request_authenticator
type: function
doc:
<comment>Description:</comment>
  Returns the request authenticator
  
  The request authenticator is needed for demangling mangled data like passwords and
  encryption-keys.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.

<comment>Return:</comment>
  <info>string</info>  Returns the request authenticator as string, or <info>false</info> on error.

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


id: radius_salt_encrypt_attr
type: function
doc:
<comment>Description:</comment>
  Salt-encrypts a value
  
  Applies the RADIUS salt-encryption algorithm to the given value.
  
  In general, this is achieved automatically by providing the <info>RADIUS_OPTION_SALT</info> option to an
  attribute setter function, but this function can be used if low-level request construction is
  required.

<comment>Param:</comment>
  <info>string</info>  <strong>$data</strong>  The data to be salt-encrypted.

<comment>Return:</comment>
  <info>string|false</info>  Returns the salt-encrypted data  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>radius_put_addr()</strong>
   * <strong>radius_put_attr()</strong>
   * <strong>radius_put_int()</strong>
   * <strong>radius_put_string()</strong>


id: radius_send_request
type: function
doc:
<comment>Description:</comment>
  Sends the request and waits for a reply
  
  After the Radius request has been constructed, it is sent by <strong>radius_send_request()</strong>.
  
  The <strong>radius_send_request()</strong> function sends the request and waits for a valid reply, retrying the
  defined servers in round-robin fashion as necessary.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.

<comment>Return:</comment>
  <info>int</info>  If a valid response is received, <strong>radius_send_request()</strong> returns the Radius code which
       specifies the type of the response. This will typically be <info>RADIUS_ACCESS_ACCEPT</info>,
       <info>RADIUS_ACCESS_REJECT</info>, or <info>RADIUS_ACCESS_CHALLENGE</info>. If no valid response is received,
       <strong>radius_send_request()</strong> returns <info>false</info>.

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


id: radius_server_secret
type: function
doc:
<comment>Description:</comment>
  Returns the shared secret
  
  The shared secret is needed as salt for demangling mangled data like passwords and
  encryption-keys.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.

<comment>Return:</comment>
  <info>string</info>  Returns the server's shared secret as string, or <info>false</info> on error.


id: radius_strerror
type: function
doc:
<comment>Description:</comment>
  Returns an error message
  
  If Radius-functions fail then they record an error message. This error message can be retrieved
  with this function.

<comment>Param:</comment>
  <info>resource</info>  <strong>$radius_handle</strong>  The RADIUS resource.

<comment>Return:</comment>
  <info>string</info>  Returns error messages as string from failed radius functions.


id: rand
type: function
doc:
<comment>Description:</comment>
  产生一个随机整数
  
  如果没有提供可选参数 <strong>$min</strong> 和 <strong>$max</strong> 调用 <strong>rand()</strong> 会返回 0 到 <strong>getrandmax()</strong> 之间的伪随机整数。例如想要
  5 到 15（包括 5 和 15）之间的随机数，用 <return>rand(5, 15)</return>。
  
  本函数并不会生成安全加密的值，并且不可用于加密或者要求返回值不可猜测的目的。
  
  如果需要加密安全随机，则可以将 <class>Random\Engine\Secure</class> 引擎用于 <class>Random\Randomizer</class>。对于简单的用例，
  <strong>random_int()</strong> 和 <strong>random_bytes()</strong> 函数提供了操作系统的 CSPRNG 支持的方便且安全的 API。
  
  在某些平台下（例如 Windows）<strong>getrandmax()</strong> 只有 32767。如果需要的范围大于 32767，那么指定 <strong>$min</strong> 和
  <strong>$max</strong> 参数就可以生成更大的数了，或者考虑用 <strong>mt_rand()</strong> 来替代之。
  
  自 PHP 7.1.0 起，<strong>rand()</strong> 和 <strong>mt_rand()</strong> 使用相同的随机数生成器。为了保持向后兼容性，<strong>rand()</strong> 允许 <strong>$max</strong>
  小于 <strong>$min</strong>，而不是像 <strong>mt_rand()</strong> 一样，返回 <info>false</info>。

<comment>Param:</comment>
  <info>int</info>  <strong>$min</strong>  返回的最低值（默认：0）
  <info>int</info>  <strong>$max</strong>  返回的最高值（默认：<strong>getrandmax()</strong>）

<comment>Return:</comment>
  <info>int</info>  介于 <strong>$min</strong> （或是 0）和 <strong>$max</strong> （或 <strong>getrandmax()</strong>，包含该值）之间的伪随机值。

<comment>See Also:</comment>
   * <strong>srand()</strong>
   * <strong>getrandmax()</strong>
   * <strong>mt_rand()</strong>
   * <strong>random_int()</strong>
   * <strong>random_bytes()</strong>


id: random_bytes
type: function
doc:
<comment>Description:</comment>
  Get cryptographically secure 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.
  
  The randomness generated by this function is suitable for all applications, including the
  generation of long-term secrets, such as encryption keys.
  
  此函数使用的随机性来源先后顺序如下：
  
  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>。
  
  虽然此函数是 PHP 7.0 添加到 PHP 中，但是从 PHP 5.2 到 PHP 5.6 都可以用 用户级实现。

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

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

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


id: random_int
type: function
doc:
<comment>Description:</comment>
  获取生成加密安全、均匀分布的整数
  
  生成在指定最小值和最大值之间均匀分布的整数。
  
  该函数生成的随机性适用于所有应用，包括生成长期秘密，如加密密钥。
  
  此函数使用的随机性来源先后顺序如下：
  
  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>。
  
  虽然此函数是 PHP 7.0 添加到 PHP 中，但是从 PHP 5.2 到 PHP 5.6 都可以用 用户级实现。

<comment>Param:</comment>
  <info>int</info>  <strong>$min</strong>  要返回的最小值。
  <info>int</info>  <strong>$max</strong>  要返回的最大值。

<comment>Return:</comment>
  <info>int</info>  从闭合区间 [<strong>$min</strong>, <strong>$max</strong>] 返回加密安全、均匀分布的整数。<strong>$min</strong> 和 <strong>$max</strong> 都有可能返回。

<comment>See Also:</comment>
   * Random\Randomizer::getInt
   * <strong>random_bytes()</strong>


id: range
type: function
doc:
<comment>Description:</comment>
  根据范围创建数组，包含指定的元素
  
  建立一个包含指定范围单元的数组。
  
  如果 <strong>$start</strong> 和 <strong>$end</strong> 都是 <info>string</info>，<strong>$step</strong> 是 <info>int</info>，则生成的数组是字节序列，否则，生成的数组将是数字序
  列。
  
  如果 <strong>$start</strong> 小于或等于 <strong>$end</strong>，则为递增序列，否则为递减序列。

<comment>Param:</comment>
  <info>string|int|float</info>  <strong>$start</strong>  序列的第一个值。
  <info>string|int|float</info>  <strong>$end</strong>    序列的最后一个可能值。
  <info>int|float</info>         <strong>$step</strong>   <strong>$step</strong> 表示在序列之间产生序列时前进的数量。
                            
                            对于递减序列，<strong>$step</strong> 可能是负数。
                            
                            如果 <strong>$step</strong> 是没有小数部分的 <info>float</info>，则将解释为 <info>int</info>。

<comment>Return:</comment>
  <info>array</info>  返回  <info>array</info>，由元素组成的序列，其中第一个元素为 <strong>$start</strong>，最后一个元素为 <strong>$end</strong>，序列中每个元素
         之间的差值为 <strong>$step</strong>。
         
         返回的数组的最后一个元素是 <strong>$end</strong> 或序列中的前一个元素，具体取决于 <strong>$step</strong>。
         
         如果 <strong>$start</strong> 和 <strong>$end</strong> 都是 <info>string</info>，并且 <strong>$step</strong> 是 <info>int</info>，则生成的数组将是字节序列，通常是拉丁
         ASCII 字符。
         
         如果 <strong>$start</strong>、<strong>$end</strong> 或 <strong>$step</strong> 是 <info>float</info>，则生成的数组将是 <info>float</info> 序列。
         
         否则，生成的数组将是 <info>int</info> 序列。

<comment>See Also:</comment>
   * <strong>shuffle()</strong>
   * <strong>array_fill()</strong>
   * foreach


id: rar_wrapper_cache_stats
type: function
doc:
<comment>Description:</comment>
  Cache hits and misses for the URL wrapper
  
  本函数还未编写文档，仅有参数列表。

<comment>Return:</comment>
  <info>string</info>  


id: rawurldecode
type: function
doc:
<comment>Description:</comment>
  对已编码的 URL 字符串进行解码
  
  返回字符串，此字符串中百分号（<return>%</return>）后跟两位十六进制数的序列都将被替换成原义字符。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  要解码的 URL。

<comment>Return:</comment>
  <info>string</info>  返回解码后的 URL 字符串。

<comment>See Also:</comment>
   * <strong>rawurlencode()</strong>
   * <strong>urldecode()</strong>
   * <strong>urlencode()</strong>
   * RFC 3986


id: rawurlencode
type: function
doc:
<comment>Description:</comment>
  按照 RFC 3986 对 URL 进行编码
  
  根据 RFC 3986 编码指定的字符。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  要编码的 URL。

<comment>Return:</comment>
  <info>string</info>  返回字符串，此字符串中除了 <return>-_.</return>  之外的所有非字母数字字符都将被替换成百分号（<return>%</return>）后跟两位十
          六进制数。这是在 RFC 3986 中描述的编码，是为了保护原义字符以免其被解释为特殊的  URL 定界
          符，同时保护 URL 格式以免其被传输媒体（像一些邮件系统）使用字符转换时弄乱。

<comment>See Also:</comment>
   * <strong>rawurldecode()</strong>
   * <strong>urldecode()</strong>
   * <strong>urlencode()</strong>
   * RFC 3986


id: read_exif_data
type: function
doc:
<comment>Description:</comment>
  别名 exif_read_data
  
  此函数是该函数的别名： <strong>exif_read_data()</strong>.


id: readdir
type: function
doc:
<comment>Description:</comment>
  从目录句柄中读取条目
  
  返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。

<comment>Param:</comment>
  <info>resource|null</info>  <strong>$dir_handle</strong>  目录句柄的 <info>resource</info>，之前由 <strong>opendir()</strong> 打开

<comment>Return:</comment>
  <info>string|false</info>  成功则返回文件名 或者在失败时返回 <info>false</info>
                
                此函数可能返回布尔值
                <info>false</info>，但也可能返回等同于 <info>false</info> 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使
                用
                ===
                运算符来测试此函数的返回值。

<comment>See Also:</comment>
   * <strong>is_dir()</strong>
   * <strong>glob()</strong>
   * <strong>opendir()</strong>
   * <strong>scandir()</strong>


id: readfile
type: function
doc:
<comment>Description:</comment>
  输出文件
  
  读取文件并写入到输出缓冲。

<comment>Param:</comment>
  <info>string</info>         <strong>$filename</strong>          要读取的文件名。
  <info>bool</info>           <strong>$use_include_path</strong>  想要在 include_path 中搜索文件，可使用这个可选的第二个参数，设为
                                    <info>true</info>。
  <info>resource|null</info>  <strong>$context</strong>           上下文流（context stream）<info>resource</info>。

<comment>Return:</comment>
  <info>int|false</info>  成功时返回从文件中读入的字节数， 或者在失败时返回 <info>false</info>

<comment>See Also:</comment>
   * <strong>fpassthru()</strong>
   * <strong>file()</strong>
   * <strong>fopen()</strong>
   * <strong>include()</strong>
   * <strong>require()</strong>
   * <strong>virtual()</strong>
   * <strong>file_get_contents()</strong>
   * 


id: readgzfile
type: function
doc:
<comment>Description:</comment>
  Output a gz-file
  
  Reads a file, decompresses it and writes it to standard output.
  
  <strong>readgzfile()</strong> can be used to read a file which is not in gzip format; in this case <strong>readgzfile()</strong>
  will directly  read from the file without decompression.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>          The file name. This file will be opened from the filesystem and its
                             contents written to standard output.
  <info>int</info>     <strong>$use_include_path</strong>  You can set this optional parameter to <return>1</return>, if you want to search for the
                             file in the include_path too.

<comment>Return:</comment>
  <info>int|false</info>  Returns the number of (uncompressed) bytes read from the file on success, 或者在失败时
             返回 <info>false</info>

<comment>See Also:</comment>
   * <strong>gzpassthru()</strong>
   * <strong>gzfile()</strong>
   * <strong>gzopen()</strong>


id: readline
type: function
doc:
<comment>Description:</comment>
  读取一行
  
  从用户端读取一行。必须使用 <strong>readline_add_history()</strong> 将这一行添加到历史记录中。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$prompt</strong>  可以指定字符串来作为用户的提示信息。

<comment>Return:</comment>
  <info>string|false</info>  从用户端返回单个字符串。返回的行将会移除行尾换行符。 如果没有更多数据可读，则返回
                <info>false</info>。


id: readline_add_history
type: function
doc:
<comment>Description:</comment>
  添加一行到历史
  
  此函数添加一行到命令行历史。

<comment>Param:</comment>
  <info>string</info>  <strong>$prompt</strong>  添加到历史中的行。

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


id: readline_callback_handler_install
type: function
doc:
<comment>Description:</comment>
  初始化 readline 回调接口和终端，然后打印提示并立即返回
  
  设置 readline 回调接口然后打印 <strong>$prompt</strong> 并立即返回。在不移除旧的回调接口的情况下再次调用此函数，将
  自动覆盖旧接口。
  
  与 <strong>stream_select()</strong> 结合使用时，回调功能很有用，因为允许 IO 和用户输入交互，这与 <strong>readline()</strong> 不同。

<comment>Param:</comment>
  <info>string</info>    <strong>$prompt</strong>    提示信息。
  <info>callable</info>  <strong>$callback</strong>  <strong>$callback</strong> 函数接受一个参数；返回用户输入。

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

<comment>See Also:</comment>
   * <strong>readline_callback_handler_remove()</strong>
   * <strong>readline_callback_read_char()</strong>
   * <strong>stream_select()</strong>


id: readline_callback_handler_remove
type: function
doc:
<comment>Description:</comment>
  移除之前已安装的回调函数句柄并且恢复终端设置
  
  移除之前已安装的回调句柄并且恢复终端设置。

<comment>Return:</comment>
  <info>bool</info>  如果移除了之前已安装的回调句柄，返回 <info>true</info> 或者如果没有找到的话返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>readline_callback_handler_install()</strong>
   * <strong>readline_callback_read_char()</strong>


id: readline_callback_read_char
type: function
doc:
<comment>Description:</comment>
  当一个行被接收时读取一个字符并且通知 readline 回调接口
  
  读取用户输入中的一个字符。当一行被接收时，这个函数将通知使用 <strong>readline_callback_handler_install()</strong>
  安装的 readline 回调接口，并且 这一个行已经准备输入。

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

<comment>See Also:</comment>
   * <strong>readline_callback_handler_install()</strong>
   * <strong>readline_callback_handler_remove()</strong>


id: readline_clear_history
type: function
doc:
<comment>Description:</comment>
  清除历史
  
  这个函数清除全部的命令行历史。

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


id: readline_completion_function
type: function
doc:
<comment>Description:</comment>
  注册完成函数
  
  这个函数注册完成函数。这与在使用 Bash 时按下 Tab 键将获得的功能相同。

<comment>Param:</comment>
  <info>callable</info>  <strong>$callback</strong>  必须提供现有的函数名，该函数接受部分命令行并返回可能的匹配项数组。

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


id: readline_info
type: function
doc:
<comment>Description:</comment>
  获取/设置各种 readline 内部变量
  
  获取/设置各种 readline 内部变量。

<comment>Param:</comment>
  <info>string|null</info>           <strong>$var_name</strong>  变量名。
  <info>int|string|bool|null</info>  <strong>$value</strong>     如果提供，将是设置的新值。

<comment>Return:</comment>
  <info>mixed</info>  如果调用时没有参数，此函数将返回 readline 使用的所有设置的值组成的数组。元素将按照以下值进
         行索引 <return>done</return>、<return>end</return>、<return>erase_empty_line</return>、<return>library_version</return>、<return>line_buffer</return>、<return>mark</return>、<return>pending_input</return>、
         <return>point</return>、<return>prompt</return>、<return>readline_name</return>、和 <return>terminal_name</return>。 <info>array</info> 仅包含库用于编译 readline 扩展支持的
         元素。
         
         如果使用一个或两个参数调用，则返回原来的值。


id: readline_list_history
type: function
doc:
<comment>Description:</comment>
  获取历史
  
  获取完整命令行历史。

<comment>Return:</comment>
  <info>array</info>  返回完整命令行历史的数组。元素的索引为整数，从零开始。


id: readline_on_new_line
type: function
doc:
<comment>Description:</comment>
  通知 readline 将光标移动到新行
  
  告诉 readline 将光标移动到新行。

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


id: readline_read_history
type: function
doc:
<comment>Description:</comment>
  读取历史
  
  这个函数从文件中读取命令历史。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$filename</strong>  包含命令行历史的文件路径。

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


id: readline_redisplay
type: function
doc:
<comment>Description:</comment>
  重绘显示区
  
  readline 重绘用于重绘显示区。

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


id: readline_write_history
type: function
doc:
<comment>Description:</comment>
  写入历史记录
  
  这个函数将命令历史写入到文件。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$filename</strong>  保存文件的路径.

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


id: readlink
type: function
doc:
<comment>Description:</comment>
  返回符号连接指向的目标
  
  <strong>readlink()</strong> 和同名的 C 函数做同样的事，返回符号连接的内容。

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>  链接符号的路径。

<comment>Return:</comment>
  <info>string|false</info>  返回链接的路径内容，出错则返回 <info>false</info>。
                
                如果 <strong>$path</strong> 不是符号链接，则该函数将失败，但在 Windows 上除外，其中将返回规范化的路
                径。

<comment>See Also:</comment>
   * <strong>is_link()</strong>
   * <strong>symlink()</strong>
   * <strong>linkinfo()</strong>


id: realpath
type: function
doc:
<comment>Description:</comment>
  返回规范化的绝对路径名
  
  <strong>realpath()</strong> 扩展所有符号连接，并处理输入 <strong>$path</strong> 中的 <return>/./</return>、<return>/../</return> 和多余的 <return>/</return>，并返回规范化的绝对路径
  名。

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>  要处理的路径。  虽然必须提供路径，但该值可以是一个空字符串。 在这种情况下，该值将被
                 解释为当前目录。
                 
                 虽然必须提供路径，但该值可以是一个空字符串。 在这种情况下，该值将被解释为当前目录。

<comment>Return:</comment>
  <info>string|false</info>  成功时返回规范化的绝对路径名。返回的路径中没有符号连接（symbolic link）、<return>/./</return> 或 <return>/../</return>
                成分。 例如 <return>\</return> 和 <return>/</return> 这样的尾随分隔符也将被删除。
                
                <strong>realpath()</strong> 失败时返回 <info>false</info>，例如文件不存在。
                
                当前运行的脚本必须对要处理的路径中的每层目录都具有可执行权限，否则 <strong>realpath()</strong> 将返回
                <info>false</info>。
                
                对于不区分大小写的文件系统，<strong>realpath()</strong> 不一定会规范字符大小写。
                
                <strong>realpath()</strong> 函数不适用于 Phar 内的文件，因为该路径是虚拟路径，而不是真实路径。
                
                在 Windows 上，目录的结点和符号链接仅扩展一级。
                
                因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型，对 2GB
                以上的文件，一些文件系统函数可能返回无法预期的结果。

<comment>See Also:</comment>
   * <strong>basename()</strong>
   * <strong>dirname()</strong>
   * <strong>pathinfo()</strong>


id: realpath_cache_get
type: function
doc:
<comment>Description:</comment>
  获取真实目录缓存的详情
  
  获得真实路径缓存的详情。

<comment>Return:</comment>
  <info>array</info>  返回真实路径缓存详情的数组。键是原始路径以及值为具体信息数组，含有该解析的路径，过期时间以
         及其他的更多选项。

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


id: realpath_cache_size
type: function
doc:
<comment>Description:</comment>
  获取真实路径缓冲区的大小
  
  获取真实路径缓存区大小在内存中的使用量。

<comment>Return:</comment>
  <info>int</info>  返回真实路径缓存区使用内存的用量。

<comment>See Also:</comment>
   * <strong>realpath_cache_get()</strong>
   * realpath_cache_size 方法的配置选项
    


id: recode
type: function
doc:
<comment>Description:</comment>
  别名 recode_string
  
  此函数是该函数的别名： <strong>recode_string()</strong>.


id: recode_file
type: function
doc:
<comment>Description:</comment>
  Recode from file to file according to recode request
  
  Recode the file referenced by file handle <strong>$input</strong> into the file referenced by file handle <strong>$output</strong>
  according to the recode <strong>$request</strong>.

<comment>Param:</comment>
  <info>string</info>    <strong>$request</strong>  The desired recode request type
  <info>resource</info>  <strong>$input</strong>    A local file handle <info>resource</info> for  the <strong>$input</strong>
  <info>resource</info>  <strong>$output</strong>   A local file handle <info>resource</info> for  the <strong>$output</strong>

<comment>Return:</comment>
  <info>bool</info>  Returns <info>false</info>, if unable to comply, <info>true</info> otherwise.

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


id: recode_string
type: function
doc:
<comment>Description:</comment>
  Recode a string according to a recode request
  
  Recode the string <strong>$string</strong> according to the recode request <strong>$request</strong>.

<comment>Param:</comment>
  <info>string</info>  <strong>$request</strong>  The desired recode request type
  <info>string</info>  <strong>$string</strong>   The <info>string</info> to be recoded

<comment>Return:</comment>
  <info>string</info>  Returns the recoded <info>string</info> or <info>false</info>, if unable to  perform the recode request.

<comment>See Also:</comment>
   * 
     The GNU Recode documentation of your installation for detailed 
     instructions about recode requests.
    
   * <strong>mb_convert_encoding()</strong>
   * UConverter::transcode
   * <strong>iconv()</strong>


id: register_shutdown_function
type: function
doc:
<comment>Description:</comment>
  注册在关闭时执行的函数
  
  注册一个 <strong>$callback</strong> ，它会在脚本执行完成或者 <strong>exit()</strong> 后被调用。
  
  可以多次调用 <strong>register_shutdown_function()</strong>，这些被注册的回调会按照他们注册时的顺序被依次调用。如果
  你在注册的方法内部调用 <strong>exit()</strong>，那么所有处理会被中止，并且其他注册的中止回调也不会再被调用。
  
  关闭函数也可以调用 <strong>register_shutdown_function()</strong> 来将关闭函数添加到队列的末尾。

<comment>Param:</comment>
  <info>callable</info>  <strong>$callback</strong>  待注册的中止回调。
                       
                       中止回调是作为请求的一部分被执行的，因此可以在它们中进行输出或者读取输出缓冲
                       区。
  <info>mixed</info>     <strong>$args</strong>      可以通过传入额外的参数来将参数传给中止函数。

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

<comment>See Also:</comment>
   * auto_append_file
   * <strong>exit()</strong>
   * <strong>fastcgi_finish_request()</strong>
   * 连接处理节


id: register_tick_function
type: function
doc:
<comment>Description:</comment>
  注册一个函数以便在每个 tick 上执行
  
  注册给定的 <strong>$callback</strong>，以便在 tick 被调用时执行。

<comment>Param:</comment>
  <info>callable</info>  <strong>$callback</strong>  需要注册的函数。
  <info>mixed</info>     <strong>$args</strong>      

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

<comment>See Also:</comment>
   * declare
   * <strong>unregister_tick_function()</strong>


id: rename
type: function
doc:
<comment>Description:</comment>
  重命名一个文件或目录
  
  尝试把 <strong>$from</strong> 重命名为 <strong>$to</strong>，必要时会在不同目录间移动。 如果重命名文件时 <strong>$to</strong> 已经存在，将会覆盖掉
  它。 如果重命名文件夹时 <strong>$to</strong> 已经存在，本函数将导致一个警告。

<comment>Param:</comment>
  <info>string</info>         <strong>$from</strong>     原名
                           
                           用于 <strong>$from</strong> 中的封装协议必须和用于 <strong>$to</strong> 中的相匹配。
  <info>string</info>         <strong>$to</strong>       新的名字。  在 Windows 上，如果 <strong>$to</strong> 已经存在，它必须是可写的。 否则
                           <strong>rename()</strong> 将失败，并导致 <info>E_WARNING</info>。
                           
                           在 Windows 上，如果 <strong>$to</strong> 已经存在，它必须是可写的。 否则 <strong>rename()</strong> 将失败，
                           并导致 <info>E_WARNING</info>。
  <info>resource|null</info>  <strong>$context</strong>  上下文流（context stream）<info>resource</info>。

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

<comment>See Also:</comment>
   * <strong>copy()</strong>
   * <strong>unlink()</strong>
   * <strong>move_uploaded_file()</strong>


id: reset
type: function
doc:
<comment>Description:</comment>
  将数组的内部指针指向第一个单元
  
  <strong>reset()</strong> 将 <strong>$array</strong> 的内部指针倒回到第一个单元并返回第一个数组单元的值。

<comment>Param:</comment>
  <info>array|object</info>  <strong>$array</strong>  输入的数组。

<comment>Return:</comment>
  <info>mixed</info>  返回数组第一个单元的值，如果数组为空则返回 <info>false</info>。
         
         此函数可能返回布尔值
         <info>false</info>，但也可能返回等同于 <info>false</info> 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用
         ===
         运算符来测试此函数的返回值。

<comment>See Also:</comment>
   * <strong>current()</strong>
   * <strong>each()</strong>
   * <strong>end()</strong>
   * <strong>next()</strong>
   * <strong>prev()</strong>
   * <strong>array_key_first()</strong>


id: restore_error_handler
type: function
doc:
<comment>Description:</comment>
  还原之前的错误处理函数
  
  在使用 <strong>set_error_handler()</strong> 改变错误处理函数之后，此函数可以 用于还原之前的错误处理程序(可以是内置
  的或者也可以是用户所定义的函数)。

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>error_reporting()</strong>
   * <strong>set_error_handler()</strong>
   * <strong>restore_exception_handler()</strong>
   * <strong>trigger_error()</strong>


id: restore_exception_handler
type: function
doc:
<comment>Description:</comment>
  恢复之前定义过的异常处理函数。
    
  
  在使用 <strong>set_exception_handler()</strong> 改变异常处理函数之后，此函数可以 用于还原之前的异常处理程序(可以是
  内置的或者也可以是用户所定义的函数)。

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>set_exception_handler()</strong>
   * <strong>set_error_handler()</strong>
   * <strong>restore_error_handler()</strong>
   * <strong>error_reporting()</strong>


id: restore_include_path
type: function
doc:
<comment>Description:</comment>
  还原 include_path 配置选项的值
  
  还原到 php.ini 中设置的 include_path 主值。

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

<comment>See Also:</comment>
   * <strong>ini_restore()</strong>
   * <strong>get_include_path()</strong>
   * <strong>set_include_path()</strong>
   * <strong>include()</strong>


id: rewind
type: function
doc:
<comment>Description:</comment>
  倒回文件指针的位置
  
  将 <strong>$stream</strong> 的文件位置指针设为文件流的开头。
  
  如果将文件以附加（"a" 或者 "a+"）模式打开，无论文件指针位置如何，写入文件的任何数据总是会被附加在
  后面。

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>  文件指针必须合法，并且指向由 <strong>fopen()</strong> 成功打开的文件。

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

<comment>See Also:</comment>
   * <strong>fread()</strong>
   * <strong>fseek()</strong>
   * <strong>ftell()</strong>
   * <strong>fwrite()</strong>


id: rewinddir
type: function
doc:
<comment>Description:</comment>
  倒回目录句柄
  
  将 <strong>$dir_handle</strong> 指定的目录流重置到目录的开头。

<comment>Param:</comment>
  <info>resource|null</info>  <strong>$dir_handle</strong>  之前使用 <strong>opendir()</strong> 打开的目录句柄 <info>resource</info>。如果未指定目录句柄，则假设
                              是 <strong>opendir()</strong> 打开的最后一个链接。

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


id: rmdir
type: function
doc:
<comment>Description:</comment>
  删除目录
  
  尝试删除 <strong>$directory</strong> 所指定的目录。 该目录必须是空的，而且要有相应的权限。 失败时会产生一个
  <info>E_WARNING</info> 级别的错误。

<comment>Param:</comment>
  <info>string</info>         <strong>$directory</strong>  目录的路径。
  <info>resource|null</info>  <strong>$context</strong>    上下文流（context stream）<info>resource</info>。

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

<comment>See Also:</comment>
   * <strong>is_dir()</strong>
   * <strong>mkdir()</strong>
   * <strong>unlink()</strong>


id: rnp_backend_string
type: function
doc:
<comment>Description:</comment>
  Return cryptographic backend library name

<comment>Return:</comment>
  <info>string</info>  Backend name string. Currently supported backends are "Botan" and "OpenSSL".


id: rnp_backend_version
type: function
doc:
<comment>Description:</comment>
  Return cryptographic backend library version

<comment>Return:</comment>
  <info>string</info>  Version string.


id: rnp_decrypt
type: function
doc:
<comment>Description:</comment>
  Decrypt PGP message
  
  Private keys used for decryption should be loaded into the FFI object before calling this
  function. If password encryption was used, then password provider should be set by calling
  <strong>rnp_ffi_set_pass_provider()</strong>.

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>    The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$input</strong>  Encrypted message.

<comment>Return:</comment>
  <info>string|false</info>  Decrypted message on success 或者在失败时返回 <info>false</info>.


id: rnp_dump_packets
type: function
doc:
<comment>Description:</comment>
  Dump OpenPGP packets stream information in humand-readable format

<comment>Param:</comment>
  <info>string</info>  <strong>$input</strong>  Input string containing OpenPGP data, either in binary or ASCII-armored format.
  <info>int</info>     <strong>$flags</strong>  See <info>RNP_DUMP_*</info> predefined constants.

<comment>Return:</comment>
  <info>string|false</info>  Text describing packet sequence 或者在失败时返回 <info>false</info>.


id: rnp_dump_packets_to_json
type: function
doc:
<comment>Description:</comment>
  Dump OpenPGP packets stream information to the JSON string

<comment>Param:</comment>
  <info>string</info>  <strong>$input</strong>  Input string containing OpenPGP data, either in binary or ASCII-armored format.
  <info>int</info>     <strong>$flags</strong>  See <info>RNP_JSON_DUMP_*</info> predefined constants.

<comment>Return:</comment>
  <info>string|false</info>  JSON string with dump 或者在失败时返回 <info>false</info>.


id: rnp_ffi_create
type: function
doc:
<comment>Description:</comment>
  Create the top-level object used for interacting with the library

<comment>Param:</comment>
  <info>string</info>  <strong>$pub_format</strong>  the format of the public keyring, RNP_KEYSTORE_GPG or other RNP_KEYSTORE_*
                       constant.
  <info>string</info>  <strong>$sec_format</strong>  the format of the secret keyring, RNP_KEYSTORE_GPG or other RNP_KEYSTORE_*
                       constant

<comment>Return:</comment>
  <info>RnpFFI|false</info>  Returns <info>RnpFFI</info> object on success 或者在失败时返回 <info>false</info>.


id: rnp_ffi_destroy
type: function
doc:
<comment>Description:</comment>
  Destroy the top-level object used for interacting with the library

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>  The FFI object returned by rnp_ffi_create.

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


id: rnp_ffi_set_pass_provider
type: function
doc:
<comment>Description:</comment>
  Set password provider callback function
  
  Sets password provider function. This function can ask for the password on a standard input (if
  PHP script is executed in a command line environment), display GUI dialog or provide password in
  any other possible ways. Requested passwords are used to encrypt or decrypt secret keys or perform
  symmetric encryption/decryption operations.

<comment>Param:</comment>
  <info>RnpFFI</info>    <strong>$ffi</strong>                The FFI object returned by rnp_ffi_create.
  <info>callable</info>  <strong>$password_callback</strong>  The function that is to be called for every password request.  It
                                has the following signature:
                                <info>bool</info>password_callback<info>string</info><strong>$key_fp</strong><info>string</info><strong>$pgp_context</strong><info>string</info>password</strong>
                                <return>$key_fp</return> - The key fingerprint, if any. Can be empty.<return>$pgp_context</return> -
                                String describing why the key is being requested.<return>$password</return> -
                                Password string reference where provided password should be stored
                                to. Callback function should return <info>true</info> if password was
                                successfully set 或者在失败时返回 <info>false</info>.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> on success 或者在失败时返回 <info>false</info>.


id: rnp_import_keys
type: function
doc:
<comment>Description:</comment>
  Import keys from PHP string to the keyring and receive JSON describing new/updated keys

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>    The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$input</strong>  OpenPGP packets containing key(s) to be loaded. Can be either binary or ASCII
                  armored.
  <info>int</info>     <strong>$flags</strong>  See <info>RNP_LOAD_SAVE_*</info> predefined constants.

<comment>Return:</comment>
  <info>string|false</info>  JSON string with information about new and updated keys on success 或者在失败时返回
                <info>false</info>.


id: rnp_import_signatures
type: function
doc:
<comment>Description:</comment>
  Import standalone signatures to the keyring and receive JSON describing updated keys

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>    The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$input</strong>  OpenPGP packets containing signatures to be imported. Can be either binary or
                  ASCII armored.
  <info>int</info>     <strong>$flags</strong>  Currently must be 0.

<comment>Return:</comment>
  <info>string|false</info>  JSON string with information about updated keys on success 或者在失败时返回 <info>false</info>.


id: rnp_key_export
type: function
doc:
<comment>Description:</comment>
  Export a key

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>     The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$key_fp</strong>  Key fingerprint.
  <info>int</info>     <strong>$flags</strong>   See <info>RNP_KEY_EXPORT_*</info> predefined constants (except <info>RNP_KEY_EXPORT_BASE64</info>).

<comment>Return:</comment>
  <info>string|false</info>  OpenPGP packets of exported key (binary or ASCII-armored) on success 或者在失败时返
                回 <info>false</info>.


id: rnp_key_export_autocrypt
type: function
doc:
<comment>Description:</comment>
  Export minimal key for autocrypt feature (just 5 packets: key, uid, signature,
     encryption subkey, signature)

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>        The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$key_fp</strong>     Primary key fingerprint.
  <info>string</info>  <strong>$subkey_fp</strong>  Subkey to export. Can be an empty string to pick the first suitable subkey.
  <info>string</info>  <strong>$uid</strong>        User ID to export. Can be an empty string if exported key has only one uid.
  <info>int</info>     <strong>$flags</strong>      Only <info>RNP_KEY_EXPORT_BASE64</info> is currently supported. Enabling it would export
                      base64-encoded key data instead of binary.

<comment>Return:</comment>
  <info>string|false</info>  OpenPGP packets of exported key on success 或者在失败时返回 <info>false</info>.


id: rnp_key_export_revocation
type: function
doc:
<comment>Description:</comment>
  Generate and export primary key revocation signature
  
  Note: to revoke a key you'll need to import this signature into the keystore or use
  <strong>rnp_key_revoke()</strong> function.

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>      The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$key_fp</strong>   Key fingerprint of the primary key to be revoked.
  <info>int</info>     <strong>$flags</strong>    <info>RNP_KEY_EXPORT_ARMORED</info> or 0.
  <info>array</info>   <strong>$options</strong>  An associative array with options.

<comment>Return:</comment>
  <info>string|false</info>  Exported revocation signature on success 或者在失败时返回 <info>false</info>.


id: rnp_key_get_info
type: function
doc:
<comment>Description:</comment>
  Get information about the key

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>     The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$key_fp</strong>  Key fingerprint.

<comment>Return:</comment>
  <info>array|false</info>  An associative array with information about the key 或者在失败时返回 <info>false</info>.


id: rnp_key_remove
type: function
doc:
<comment>Description:</comment>
  Remove a key from keyring(s)
  
  Note: you need to call <strong>rnp_save_keys()</strong> to write updated keyring(s) out.

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>     The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$key_fp</strong>  Key fingerprint.
  <info>int</info>     <strong>$flags</strong>   See <info>RNP_KEY_REMOVE_*</info> constants. Flag <info>RNP_KEY_REMOVE_SUBKEYS</info> will work only for
                   the primary key and will remove all of its subkeys as well.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> on success 或者在失败时返回 <info>false</info>.


id: rnp_key_revoke
type: function
doc:
<comment>Description:</comment>
  Revoke a key or subkey by generating and adding revocation signature
  
  Note: you need to call <strong>rnp_save_keys()</strong> to write updated keyring(s) out.

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>      The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$key_fp</strong>   Key fingerprint.
  <info>int</info>     <strong>$flags</strong>    Currently must be 0.
  <info>array</info>   <strong>$options</strong>  An associative array with options.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> on success 或者在失败时返回 <info>false</info>.


id: rnp_list_keys
type: function
doc:
<comment>Description:</comment>
  Enumerate all keys present in a keyring by specified identifer type

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>              The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$identifier_type</strong>  Key identifier type ("userid", "keyid", "grip", "fingerprint").

<comment>Return:</comment>
  <info>array|false</info>  An associative array where key is an identifier string and value is a PGP key
               fingerprint 或者在失败时返回 <info>false</info>.


id: rnp_load_keys
type: function
doc:
<comment>Description:</comment>
  Load keys from PHP string
  
  Note that for G10, the input must be a directory (which must already exist).

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>     The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$format</strong>  The key format of the data (GPG, KBX, G10).
  <info>string</info>  <strong>$input</strong>   OpenPGP packets containing key(s) to be loaded. Can be either binary or ASCII
                   armored.
  <info>int</info>     <strong>$flags</strong>   See RNP_LOAD_SAVE_* flags description.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> on success 或者在失败时返回 <info>false</info>.


id: rnp_load_keys_from_path
type: function
doc:
<comment>Description:</comment>
  Load keys from specified path
  
  Note that for G10, the input must be a directory (which must already exist).

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>         The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$format</strong>      The key format of the data (GPG, KBX, G10).
  <info>string</info>  <strong>$input_path</strong>  file or directory containing the keys.
  <info>int</info>     <strong>$flags</strong>       See RNP_LOAD_SAVE_* flags description.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> on success 或者在失败时返回 <info>false</info>.


id: rnp_locate_key
type: function
doc:
<comment>Description:</comment>
  Search for the key
  
  Note: only valid userids are checked while searching by userid.

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>              The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$identifier_type</strong>  Identifier type string: "userid", "keyid", "fingerprint", "grip".
  <info>string</info>  <strong>$identifier</strong>       PGP User ID (name and email) for "userid" type, hexadecimal string that
                            represents key id, fingerprint or key grip correspondingly.

<comment>Return:</comment>
  <info>string|false</info>  Returns hexadecimal fingerprint of the key found on success 或者在失败时返回 <info>false</info>.


id: rnp_op_encrypt
type: function
doc:
<comment>Description:</comment>
  Encrypt message

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>                The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$message</strong>            Message to be encrypted.
  <info>array</info>   <strong>$recipient_keys_fp</strong>  Array with fingerprints of recipient's keys. At least one key must be
                              present.
  <info>array</info>   <strong>$options</strong>            An associative array with options.

<comment>Return:</comment>
  <info>string|false</info>  Encrypted data on success 或者在失败时返回 <info>false</info>.


id: rnp_op_generate_key
type: function
doc:
<comment>Description:</comment>
  Generate key

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>      The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$userid</strong>   PGP User ID - text that is intended to represent the name and email address of
                    the key holder.
  <info>string</info>  <strong>$key_alg</strong>  Primary key algorithm (i.e. 'RSA', 'DSA', etc).
  <info>string</info>  <strong>$sub_alg</strong>  Subkey algorithm. If not set, subkey will not be generated.
  <info>array</info>   <strong>$options</strong>  An associative array with options.

<comment>Return:</comment>
  <info>string|false</info>  Fingerprint of the generated primary key 或者在失败时返回 <info>false</info>. This fingerprint
                can be used later to reference the key in sign and encrypt operations. The key data
                is stored in FFI memory context and can be saved using <strong>rnp_save_keys()</strong> or
                <strong>rnp_save_keys_to_path()</strong>.


id: rnp_op_sign
type: function
doc:
<comment>Description:</comment>
  Perform signing operation on a binary data, return embedded signature(s)

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>      The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$data</strong>     Data to be signed.
  <info>array</info>   <strong>$keys_fp</strong>  Array with key fingerprints. At least one key must be provided. Keys should be
                    present in <strong>$ffi</strong>.
  <info>array</info>   <strong>$options</strong>  An associative array with options.

<comment>Return:</comment>
  <info>string|false</info>  Data with embedded signature(s) on success 或者在失败时返回 <info>false</info>.


id: rnp_op_sign_cleartext
type: function
doc:
<comment>Description:</comment>
  Perform signing operation on a textual data, return cleartext signed message

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>      The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$data</strong>     Data to be signed.
  <info>array</info>   <strong>$keys_fp</strong>  Array with key fingerprints. At least one key must be provided. Keys should be
                    present in <strong>$ffi</strong>.
  <info>array</info>   <strong>$options</strong>  An associative array with options.

<comment>Return:</comment>
  <info>string|false</info>  Cleartext signed message containing source data with additional headers and
                ASCII-armored signature on success 或者在失败时返回 <info>false</info>.


id: rnp_op_sign_detached
type: function
doc:
<comment>Description:</comment>
  Perform signing operation, return detached signature(s)

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>      The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$data</strong>     Data to be signed.
  <info>array</info>   <strong>$keys_fp</strong>  Array with key fingerprints. At least one key must be provided. Keys should be
                    present in <strong>$ffi</strong>.
  <info>array</info>   <strong>$options</strong>  An associative array with options.

<comment>Return:</comment>
  <info>string|false</info>  Detached signature(s) data on success 或者在失败时返回 <info>false</info>.


id: rnp_op_verify
type: function
doc:
<comment>Description:</comment>
  Verify embedded or cleartext signatures

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>   The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$data</strong>  Signed data.

<comment>Return:</comment>
  <info>array|false</info>  An associative array with information about verification results 或者在失败时返回
               <info>false</info>.
               
               "signatures" sub-array.


id: rnp_op_verify_detached
type: function
doc:
<comment>Description:</comment>
  Verify detached signatures

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>        The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$data</strong>       Source data.
  <info>string</info>  <strong>$signature</strong>  Detached signature data.

<comment>Return:</comment>
  <info>array|false</info>  An associative array with information about verification results 或者在失败时返回
               <info>false</info>.
               
               "signatures" sub-array.


id: rnp_save_keys
type: function
doc:
<comment>Description:</comment>
  Save keys to PHP string
  
  Note that for G10, the output must be a directory (which must already exist).

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>     The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$format</strong>  The key format of the data (GPG, KBX, G10).
  <info>string</info>  <strong>$output</strong>  key packets will be saved to the string referenced by <strong>$output</strong>.
  <info>int</info>     <strong>$flags</strong>   See RNP_LOAD_SAVE_* flags description.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> on success 或者在失败时返回 <info>false</info>.


id: rnp_save_keys_to_path
type: function
doc:
<comment>Description:</comment>
  Save keys to specified path
  
  Saves keys present in the FFI object (loaded or generated) to the specified file or directory.

<comment>Param:</comment>
  <info>RnpFFI</info>  <strong>$ffi</strong>          The FFI object returned by rnp_ffi_create.
  <info>string</info>  <strong>$format</strong>       The key format of the data (GPG, KBX, G10).
  <info>string</info>  <strong>$output_path</strong>  File or directory path where keys should be saved to.
  <info>int</info>     <strong>$flags</strong>        See RNP_LOAD_SAVE_* flags description.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> on success 或者在失败时返回 <info>false</info>.


id: rnp_supported_features
type: function
doc:
<comment>Description:</comment>
  Get supported features in JSON format
  
  Get the JSON formatted string containing array of supported rnp feature values (algorithms,
  curves, etc) by type.

<comment>Param:</comment>
  <info>string</info>  <strong>$type</strong>  See RNP_FEATURE_* constants for supported values.

<comment>Return:</comment>
  <info>string|false</info>  String containing JSON formatted array of supported algorithms, curves, etc 或者在失
                败时返回 <info>false</info>.


id: rnp_version_string
type: function
doc:
<comment>Description:</comment>
  RNP library version

<comment>Return:</comment>
  <info>string</info>  Returns RNP library version string.


id: rnp_version_string_full
type: function
doc:
<comment>Description:</comment>
  Full version string of RNP library

<comment>Return:</comment>
  <info>string</info>  Returns full version string of RNP library.


id: round
type: function
doc:
<comment>Description:</comment>
  对浮点数进行四舍五入
  
  返回将 <strong>$num</strong> 根据指定精度 <strong>$precision</strong>（十进制小数点后数字的数目）进行四舍五入的结果。<strong>$precision</strong> 也可
  以是负数或零（默认值）。

<comment>Param:</comment>
  <info>int|float</info>  <strong>$num</strong>        要处理的值。
  <info>int</info>        <strong>$precision</strong>  可选的十进制小数点后数字的数目。
                         
                         如果 <strong>$precision</strong> 是正数，则 <strong>$num</strong> 会四舍五入到小数点后 <strong>$precision</strong> 位有效数
                         字。
                         
                         如果 <strong>$precision</strong> 是负数，则 <strong>$num</strong> 四舍五入到小数点前 <strong>$precision</strong> 位有效数字。
                         即 pow(10, -$precision) 最接近的倍数，例如，<strong>$precision</strong> 为 -1，<strong>$num</strong> 可以四舍
                         五入到十位，<strong>$precision</strong> 为 -2，<strong>$num</strong> 可以四舍五入到百位，等等。
  <info>int</info>        <strong>$mode</strong>       使用以下常量指定四舍五入发生的模式。 常量说明<info>PHP_ROUND_HALF_UP</info> 当 <strong>$num</strong> 恰好
                         处于中间时，将其向远离零的方向舍入，使 1.5 变为 2，-1.5 变为 -2。
                         <info>PHP_ROUND_HALF_DOWN</info> 当 <strong>$num</strong> 恰好处于中间时，将其向靠近零的方向舍入，使 1.5
                         变为 1，-1.5 变为 -1。 <info>PHP_ROUND_HALF_EVEN</info> 将 <strong>$num</strong> 四舍五入到最接近的偶数
                         值，1.5 和 2.5 都变为 2。 <info>PHP_ROUND_HALF_ODD</info> 将 <strong>$num</strong> 四舍五入到最接近的奇数
                         值，1.5 变为 1，2.5 变为 3。

<comment>Return:</comment>
  <info>float</info>  值是四舍五入到指定 <strong>$precision</strong> 精度的 <info>float</info>。

<comment>See Also:</comment>
   * <strong>ceil()</strong>
   * <strong>floor()</strong>
   * <strong>number_format()</strong>


id: rpmaddtag
type: function
doc:
<comment>Description:</comment>
  Add tag retrieved in query
  
  Add an additional retrieved tag in subsequent queries.

<comment>Param:</comment>
  <info>int</info>  <strong>$tag</strong>  One of RPMTAG_* constant, see the rpminfo constants page.

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

<comment>See Also:</comment>
   * <strong>rpminfo()</strong>
   * <strong>rpmdbinfo()</strong>
   * <strong>rpmdbsearch()</strong>


id: rpmdbinfo
type: function
doc:
<comment>Description:</comment>
  Get information from installed RPM
  
  Retrieve information about an installed package, from the system RPM database.

<comment>Param:</comment>
  <info>string</info>  <strong>$nevr</strong>  Name with optional epoch, version and release.
  <info>bool</info>    <strong>$full</strong>  If <info>true</info> all information headers for the file are retrieved, else only a minimal
                 set.

<comment>Return:</comment>
  <info>array|null</info>  An <info>array</info> of <info>array</info> of information or NULL on error.

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


id: rpmdbsearch
type: function
doc:
<comment>Description:</comment>
  Search RPM packages
  
  Search packages in the system RPM database.

<comment>Param:</comment>
  <info>string</info>  <strong>$pattern</strong>  Value to search for.
  <info>int</info>     <strong>$rpmtag</strong>   Search criterion, one of RPMTAG_* constant, see the rpminfo constants page.
  <info>int</info>     <strong>$rpmmire</strong>  Pattern type, one of RPMMIRE_* constant, see the rpminfo constants page. When
                    \< 0 the criterion must equals the value, and database index is used if possible.
  <info>bool</info>    <strong>$full</strong>     If <info>true</info> all information headers for the file are retrieved, else only a minimal
                    set.

<comment>Return:</comment>
  <info>array|null</info>  An <info>array</info> of <info>array</info> of information or NULL on error.

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


id: rpmgetsymlink
type: function
doc:
<comment>Description:</comment>
  Get target of a symlink
  
  Get target of a symlink.

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>  Path of the RPM file.
  <info>string</info>  <strong>$name</strong>  Name of the symlink file.

<comment>Return:</comment>
  <info>string|null</info>  A <info>string</info> with target of the symlink, NULL on error, or an empty string if not a
               symlink.


id: rpminfo
type: function
doc:
<comment>Description:</comment>
  Get information from a RPM file
  
  Retrieve information about a local file, a RPM package.

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>   Path of the RPM file.
  <info>bool</info>    <strong>$full</strong>   If <info>true</info> all information headers for the file are retrieved, else only a minimal
                  set.
  <info>string</info>  <strong>$error</strong>  If provided, will receive the possible error message, and will avoid a runtime
                  warning.

<comment>Return:</comment>
  <info>array|null</info>  An <info>array</info> of information or NULL on error.

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


id: rpmvercmp
type: function
doc:
<comment>Description:</comment>
  RPM version comparison
  
  Compare 2 RPM versions.

<comment>Param:</comment>
  <info>string</info>       <strong>$evr1</strong>      First epoch:version-release string
  <info>string</info>       <strong>$evr2</strong>      Second epoch:version-release string
  <info>string|null</info>  <strong>$operator</strong>  An optional operator. The possible operators are: <return>\<</return>, <return>lt</return>, <return>\<=</return>, <return>le</return>, <return>&gt;</return>, <return>gt</return>, <return>&gt;=</return>, <return>ge</return>, <return>==</return>, <return>=</return>, <return>eq</return>, <return>!=</return>, <return>\<&gt;</return>, <return>ne</return> respectively.
                          
                          This parameter is case-sensitive, values should be lowercase.

<comment>Return:</comment>
  <info>int|bool</info>  Returns
            \< 0 if evr1 is less than evr2, &gt; 0 if evr1 is greater than evr2, and 0 if they are equal.
            
            When using the optional <strong>$operator</strong> argument, the function will return <info>true</info> if the
            relationship is the one specified by the operator, <info>false</info> otherwise.


id: rrd_create
type: function
doc:
<comment>Description:</comment>
  创建 rrd 数据库文件
  
  创建 rrd 数据库文件。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  新创建的 rrd 文件名。
  <info>array</info>   <strong>$options</strong>   rrd 创建选项 - 字符串列表。全部列表项请参阅创建 rrd 的手册页。

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


id: rrd_error
type: function
doc:
<comment>Description:</comment>
  获取最新的错误信息
  
  获取 rrd 全局最新的错误信息。

<comment>Return:</comment>
  <info>string</info>  最新的错误信息。


id: rrd_fetch
type: function
doc:
<comment>Description:</comment>
  获取图表数据数组
  
  从 RRD 数据库文件获取图表输出的数据数组。此函数与 <strong>rrd_graph()</strong>  结果相同，但仅返回数据数组，不会生
  成图像文件。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  RRD 数据库文件名。
  <info>array</info>   <strong>$options</strong>   数据间隔规范的数组选项。

<comment>Return:</comment>
  <info>array</info>  返回检索到的相关图形信息数据。


id: rrd_first
type: function
doc:
<comment>Description:</comment>
  从 rrd 文件中获取第一个样本的时间戳
  
  从 RRD 文件中指定的 RRA 返回第一个数据样本。

<comment>Param:</comment>
  <info>string</info>  <strong>$file</strong>      RRD 数据库文件名。
  <info>int</info>     <strong>$raaindex</strong>  要检索的 RRA 索引。默认值为 0。

<comment>Return:</comment>
  <info>int</info>  Unix 时间戳整数， 或者在失败时返回 <info>false</info>。


id: rrd_graph
type: function
doc:
<comment>Description:</comment>
  从数据创建图像
  
  从 RRD 文件的详细数据创建图像。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  输出的图表文件名。根据输出的格式，文件通常是 <return>.png</return>、<return>.svg</return>  或 <return>.eps</return> 格式。
  <info>array</info>   <strong>$options</strong>   生成图像的选项。请参阅 rrd graph 手册以获取所有可用选项。允许使用所有选项（数据
                     定义、变量定义等）。

<comment>Return:</comment>
  <info>array</info>  返回包含生成图像信息的数组， 或者在失败时返回 <info>false</info>。


id: rrd_info
type: function
doc:
<comment>Description:</comment>
  获取 rrd 文件有关信息
  
  返回有关 RRD 数据库文件的特定信息。

<comment>Param:</comment>
  <info></info>  <strong>$file</strong>  RRD 数据库文件名。

<comment>Return:</comment>
  <info>array</info>  有关请求的 RRD 文件的信息数组， 或者在失败时返回 <info>false</info>。


id: rrd_last
type: function
doc:
<comment>Description:</comment>
  获取最后一个样本的 Unix 时间戳
  
  返回 RRD 数据库最近更新的 UNIX 时间戳。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  RRD 数据库文件名。

<comment>Return:</comment>
  <info>int</info>  RRD 数据库中最新的整数 Unix 时间戳。


id: rrd_lastupdate
type: function
doc:
<comment>Description:</comment>
  获取有关上次更新数据的信息
  
  从最近更新的 RRD 数据库文件中获取每个日期存储的 UNIX 时间戳和值的数组。

<comment>Param:</comment>
  <info></info>  <strong>$file</strong>  RRD 数据库文件名。

<comment>Return:</comment>
  <info>array</info>  最后更新的信息数组， 或者在失败时返回 <info>false</info>。


id: rrd_restore
type: function
doc:
<comment>Description:</comment>
  从 XML 转储中恢复 RRD 文件
  
  从 XML 存储中恢复 RRD 文件。

<comment>Param:</comment>
  <info>string</info>  <strong>$xml_file</strong>  带有原始 RRD 数据库文件转储的 XML 文件名。
  <info>string</info>  <strong>$rrd_file</strong>  要恢复的 RRD 数据库文件名称。
  <info>array</info>   <strong>$options</strong>   恢复的选项数组。详情见 rrd restore 手册页。

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


id: rrd_tune
type: function
doc:
<comment>Description:</comment>
  调整 RRD 数据库文件头选项
  
  更改 RRD 数据库头文件中的一些选项，例如：重命名数据源等。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  RRD 数据库文件名。
  <info>array</info>   <strong>$options</strong>   要修改的 RRD 数据库文件属性选项。请参阅 rrd tune 手册页获取详细信息。

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


id: rrd_update
type: function
doc:
<comment>Description:</comment>
  更新 RRD 数据库
  
  更新 RRD 数据库文件。输入数据根据 RRD 数据库文件属性进行时间对齐。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  RRD 数据库文件名。要更新的数据库。
  <info>array</info>   <strong>$options</strong>   更新 RRD 数据库的可选项。是一个字符串列表。查看 rrd update 的 man 页面以获取完
                     整的选项列表。

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


id: rrd_version
type: function
doc:
<comment>Description:</comment>
  获取底层 rrdtool 库的相关信息
  
  返回底层 rrdtool 的相关信息。

<comment>Return:</comment>
  <info>string</info>  rrdtool 版本的字符串版本号。例如：“1.4.3”。


id: rrd_xport
type: function
doc:
<comment>Description:</comment>
  导出 RRD 数据库的相关信息
  
  导出 RRD 数据库文件的相关信息。这些数据可以通过用户空间的 PHP 脚本转换为 XML 文件，然后再恢复为
  RRD 数据库文件。

<comment>Param:</comment>
  <info>array</info>  <strong>$options</strong>  导出的数组选项，可以通过 rrd xport 手册查看。

<comment>Return:</comment>
  <info>array</info>  有关 RRD 数据库文件信息的数组， 或者在失败时返回 <info>false</info>。


id: rrdc_disconnect
type: function
doc:
<comment>Description:</comment>
  关闭所有未完成的 rrd 缓存守护进程连接
  
  关闭所有未完成的 rrd 缓存守护进程的连接。
  
  此函数会在 PHP 进程终止时自动调用。调用时机取决于使用的 SAPI。例如，会在命令行脚本结束时自动调用。
  
  用户可以自己决定是否在每次请求结束时调用此函数。

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


id: rsort
type: function
doc:
<comment>Description:</comment>
  对数组降序排序
  
  对 <strong>$array</strong> 本身按照值（value）降序排序。
  
  如果两个成员完全相同，那么它们将保持原来的顺序。 在 PHP 8.0.0 之前，它们在排序数组中的相对顺序是未
  定义的。
  
  此函数为 <strong>$array</strong>
  中的元素赋与新的键名。这将删除原有的键名，而不是仅仅将键名重新排序。
  
  重置数组中的内部指针，指向第一个元素。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  输入的数组。
  <info>int</info>    <strong>$flags</strong>  可选的第二个参数 <strong>$flags</strong> 可以用以下值改变排序的行为：
                 
                 排序类型标记： <info>SORT_REGULAR</info>  - 正常比较单元 详细描述参见 比较运算符 章节
                 <info>SORT_NUMERIC</info> - 单元被作为数字来比较<info>SORT_STRING</info> - 单元被作为字符串来比较
                 <info>SORT_LOCALE_STRING</info> - 根据当前的区域（locale）设置来把单元当作字符串比较，可以用
                 <strong>setlocale()</strong> 来改变。 <info>SORT_NATURAL</info> - 和 <strong>natsort()</strong> 类似对每个单元以“自然的顺序”对字符
                 串进行排序。 <info>SORT_FLAG_CASE</info> - 能够与 <info>SORT_STRING</info> 或 <info>SORT_NATURAL</info> 合并（OR 位运
                 算），不区分大小写排序字符串。
                 
                 <info>SORT_REGULAR</info>  - 正常比较单元 详细描述参见 比较运算符 章节
                 
                 <info>SORT_NUMERIC</info> - 单元被作为数字来比较
                 
                 <info>SORT_STRING</info> - 单元被作为字符串来比较
                 
                 <info>SORT_LOCALE_STRING</info> - 根据当前的区域（locale）设置来把单元当作字符串比较，可以用
                 <strong>setlocale()</strong> 来改变。
                 
                 <info>SORT_NATURAL</info> - 和 <strong>natsort()</strong> 类似对每个单元以“自然的顺序”对字符串进行排序。
                 
                 <info>SORT_FLAG_CASE</info> - 能够与 <info>SORT_STRING</info> 或 <info>SORT_NATURAL</info> 合并（OR 位运算），不区分大小写
                 排序字符串。

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>sort()</strong>
   * <strong>arsort()</strong>
   * <strong>krsort()</strong>
   * 数组排序函数对比


id: rtrim
type: function
doc:
<comment>Description:</comment>
  删除字符串末端的空白字符（或者其他字符）
  
  该函数删除 <strong>$string</strong> 末端的空白字符（或者其他字符）并返回。
  
  不使用第二个参数，<strong>rtrim()</strong> 仅删除以下字符：   " " (ASCII <return>32</return> (<return>0x20</return>))，普通空白符。  "\t" (ASCII <return>9</return>
  (<return>0x09</return>))，制表符。  "\n" (ASCII <return>10</return> (<return>0x0A</return>))，换行符。  "\r" (ASCII <return>13</return> (<return>0x0D</return>))，回车符。  "\0" (ASCII
  <return>0</return> (<return>0x00</return>))，<return>NUL</return> 空字节符。  "\v" (ASCII <return>11</return> (<return>0x0B</return>))，垂直制表符。
  
  " " (ASCII <return>32</return> (<return>0x20</return>))，普通空白符。
  
  "\t" (ASCII <return>9</return> (<return>0x09</return>))，制表符。
  
  "\n" (ASCII <return>10</return> (<return>0x0A</return>))，换行符。
  
  "\r" (ASCII <return>13</return> (<return>0x0D</return>))，回车符。
  
  "\0" (ASCII <return>0</return> (<return>0x00</return>))，<return>NUL</return> 空字节符。
  
  "\v" (ASCII <return>11</return> (<return>0x0B</return>))，垂直制表符。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>      输入字符串。
  <info>string</info>  <strong>$characters</strong>  通过指定 <strong>$characters</strong>，可以指定想要删除的字符列表。简单地列出你想要删除的全部
                       字符。使用 <return>..</return> 格式，可以指定一个范围。

<comment>Return:</comment>
  <info>string</info>  返回改变后的字符串。

<comment>See Also:</comment>
   * <strong>trim()</strong>
   * <strong>ltrim()</strong>


id: runkit7_constant_add
type: function
doc:
<comment>Description:</comment>
  Similar to define(), but allows defining in class definitions as well

<comment>Param:</comment>
  <info>string</info>  <strong>$constant_name</strong>  Name of constant to declare.  Either a string to indicate a global
                          constant, or <return>classname::constname</return> to indicate a class constant.
  <info>mixed</info>   <strong>$value</strong>          NULL, Bool, Long, Double, String, Array, or Resource value to store in the
                          new constant.
  <info>int</info>     <strong>$newVisibility</strong>  Visibility of the constant, for class constants. Public by default. One of
                          the <info>RUNKIT7_ACC_*</info> constants.

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

<comment>See Also:</comment>
   * <strong>define()</strong>
   * <strong>runkit7_constant_redefine()</strong>
   * <strong>runkit7_constant_remove()</strong>


id: runkit7_constant_redefine
type: function
doc:
<comment>Description:</comment>
  Redefine an already defined constant

<comment>Param:</comment>
  <info>string</info>  <strong>$constant_name</strong>   Constant to redefine.  Either the name of a global constant, or
                           <return>classname::constname</return> indicating class constant.
  <info>mixed</info>   <strong>$value</strong>           Value to assign to the constant.
  <info>int</info>     <strong>$new_visibility</strong>  The new visibility of the constant, for class constants. Unchanged by
                           default. One of the <info>RUNKIT7_ACC_*</info> constants.

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

<comment>See Also:</comment>
   * <strong>runkit7_constant_add()</strong>
   * <strong>runkit7_constant_remove()</strong>


id: runkit7_constant_remove
type: function
doc:
<comment>Description:</comment>
  Remove/Delete an already defined constant

<comment>Param:</comment>
  <info>string</info>  <strong>$constant_name</strong>  Name of the constant to remove.  Either the name of a global constant, or
                          <return>classname::constname</return> indicating a class constant.

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

<comment>See Also:</comment>
   * <strong>define()</strong>
   * <strong>runkit7_constant_add()</strong>
   * <strong>runkit7_constant_redefine()</strong>


id: runkit7_function_add
type: function
doc:
<comment>Description:</comment>
  Add a new function, similar to create_function

<comment>Param:</comment>
  <info>string</info>   <strong>$function_name</strong>        Name of the function to be created
  <info>string</info>   <strong>$argument_list</strong>        Comma separated argument list
  <info>string</info>   <strong>$code</strong>                 Code making up the function
  <info>Closure</info>  <strong>$closure</strong>              A <class>closure</class> that defines the function.
  <info>bool</info>     <strong>$return_by_reference</strong>  Whether the function should return by reference.
  <info>string</info>   <strong>$doc_comment</strong>          The doc comment of the function.
  <info>string</info>   <strong>$return_type</strong>          The return type of the function.
  <info>bool</info>     <strong>$is_strict</strong>            Whether the function should behave as if it were declared in a file
                                 with <return>strict_types=1</return>

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

<comment>See Also:</comment>
   * <strong>create_function()</strong>
   * <strong>runkit7_function_redefine()</strong>
   * <strong>runkit7_function_copy()</strong>
   * <strong>runkit7_function_rename()</strong>
   * <strong>runkit7_function_remove()</strong>
   * <strong>runkit7_method_add()</strong>


id: runkit7_function_copy
type: function
doc:
<comment>Description:</comment>
  Copy a function to a new function name

<comment>Param:</comment>
  <info>string</info>  <strong>$source_name</strong>  Name of the existing function
  <info>string</info>  <strong>$target_name</strong>  Name of the new function to copy the definition to

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

<comment>See Also:</comment>
   * <strong>runkit7_function_add()</strong>
   * <strong>runkit7_function_redefine()</strong>
   * <strong>runkit7_function_rename()</strong>
   * <strong>runkit7_function_remove()</strong>


id: runkit7_function_redefine
type: function
doc:
<comment>Description:</comment>
  Replace a function definition with a new implementation
    
  
  默认情况下，仅在用户空间可删除，重命名，或者修改函数。为了覆盖内部函数，必须启用 php.ini 中的
  <return>runkit.internal_override</return> 设置。

<comment>Param:</comment>
  <info>string</info>   <strong>$function_name</strong>        Name of function to redefine
  <info>string</info>   <strong>$argument_list</strong>        New list of arguments to be accepted by function
  <info>string</info>   <strong>$code</strong>                 New code implementation
  <info>Closure</info>  <strong>$closure</strong>              A <class>closure</class> that defines the function.
  <info>bool</info>     <strong>$return_by_reference</strong>  Whether the function should return by reference.
  <info>string</info>   <strong>$doc_comment</strong>          The doc comment of the function.
  <info>string</info>   <strong>$return_type</strong>          The return type of the function.
  <info>bool</info>     <strong>$is_strict</strong>            Whether the function behaves as if it was declared in a file with
                                 <return>strict_types=1</return>

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

<comment>See Also:</comment>
   * <strong>runkit7_function_add()</strong>
   * <strong>runkit7_function_copy()</strong>
   * <strong>runkit7_function_rename()</strong>
   * <strong>runkit7_function_remove()</strong>
   * <strong>runkit7_method_redefine()</strong>


id: runkit7_function_remove
type: function
doc:
<comment>Description:</comment>
  Remove a function definition
    
  
  默认情况下，仅在用户空间可删除，重命名，或者修改函数。为了覆盖内部函数，必须启用 php.ini 中的
  <return>runkit.internal_override</return> 设置。

<comment>Param:</comment>
  <info>string</info>  <strong>$function_name</strong>  Name of the function to be deleted

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

<comment>See Also:</comment>
   * <strong>runkit7_function_add()</strong>
   * <strong>runkit7_function_copy()</strong>
   * <strong>runkit7_function_redefine()</strong>
   * <strong>runkit7_function_rename()</strong>


id: runkit7_function_rename
type: function
doc:
<comment>Description:</comment>
  Change a function's name
    
  
  默认情况下，仅在用户空间可删除，重命名，或者修改函数。为了覆盖内部函数，必须启用 php.ini 中的
  <return>runkit.internal_override</return> 设置。

<comment>Param:</comment>
  <info>string</info>  <strong>$source_name</strong>  Current function name
  <info>string</info>  <strong>$target_name</strong>  New function name

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

<comment>See Also:</comment>
   * <strong>runkit7_function_add()</strong>
   * <strong>runkit7_function_copy()</strong>
   * <strong>runkit7_function_redefine()</strong>
   * <strong>runkit7_function_remove()</strong>


id: runkit7_import
type: function
doc:
<comment>Description:</comment>
  Process a PHP file importing function and class definitions, overwriting where appropriate
    
  
  Similar to <strong>include()</strong>. However, any code residing outside of a function or class is simply ignored.
  Additionally, depending on the value of <strong>$flags</strong>, any functions or classes which already exist in
  the currently running environment may be automatically overwritten by their new definitions.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  Filename to import function and class definitions from
  <info>int</info>     <strong>$flags</strong>     Bitwise OR of the <return>RUNKIT7_IMPORT_*</return> family of constants.

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


id: runkit7_method_add
type: function
doc:
<comment>Description:</comment>
  Dynamically adds a new method to a given class

<comment>Param:</comment>
  <info>string</info>   <strong>$class_name</strong>     The class to which this method will be added
  <info>string</info>   <strong>$method_name</strong>    The name of the method to add
  <info>string</info>   <strong>$argument_list</strong>  Comma-delimited list of arguments for the newly-created method
  <info>string</info>   <strong>$code</strong>           The code to be evaluated when <strong>$method_name</strong> is called
  <info>Closure</info>  <strong>$closure</strong>        A <class>closure</class> that defines the method.
  <info>int</info>      <strong>$flags</strong>          The type of method to create, can be <info>RUNKIT7_ACC_PUBLIC</info>,
                           <info>RUNKIT7_ACC_PROTECTED</info> or <info>RUNKIT7_ACC_PRIVATE</info> optionally combined via
                           bitwise OR with <info>RUNKIT7_ACC_STATIC</info>
  <info>string</info>   <strong>$doc_comment</strong>    The doc comment of the method.
  <info>string</info>   <strong>$return_type</strong>    The return type of the method.
  <info>bool</info>     <strong>$is_strict</strong>      Whether the method behaves as if it were declared in a file with
                           <return>strict_types=1</return>

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

<comment>See Also:</comment>
   * <strong>runkit7_method_copy()</strong>
   * <strong>runkit7_method_redefine()</strong>
   * <strong>runkit7_method_remove()</strong>
   * <strong>runkit7_method_rename()</strong>
   * <strong>runkit7_function_add()</strong>


id: runkit7_method_copy
type: function
doc:
<comment>Description:</comment>
  Copies a method from class to another

<comment>Param:</comment>
  <info>string</info>  <strong>$destination_class</strong>        Destination class for copied method
  <info>string</info>  <strong>$destination_method_name</strong>  Destination method name
  <info>string</info>  <strong>$source_class</strong>             Source class of the method to copy
  <info>string</info>  <strong>$source_method_name</strong>       Name of the method to copy from the source class. If this
                                    parameter is omitted, the value of <strong>$destination_method_name</strong> is
                                    assumed.

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

<comment>See Also:</comment>
   * <strong>runkit7_method_add()</strong>
   * <strong>runkit7_method_redefine()</strong>
   * <strong>runkit7_method_remove()</strong>
   * <strong>runkit7_method_rename()</strong>
   * <strong>runkit7_function_copy()</strong>


id: runkit7_method_redefine
type: function
doc:
<comment>Description:</comment>
  Dynamically changes the code of the given method

<comment>Param:</comment>
  <info>string</info>   <strong>$class_name</strong>     The class in which to redefine the method
  <info>string</info>   <strong>$method_name</strong>    The name of the method to redefine
  <info>string</info>   <strong>$argument_list</strong>  Comma-delimited list of arguments for the redefined method
  <info>string</info>   <strong>$code</strong>           The new code to be evaluated when <strong>$method_name</strong> is called
  <info>Closure</info>  <strong>$closure</strong>        A <class>closure</class> that defines the method.
  <info>int</info>      <strong>$flags</strong>          The redefined method can be <info>RUNKIT7_ACC_PUBLIC</info>, <info>RUNKIT7_ACC_PROTECTED</info> or
                           <info>RUNKIT7_ACC_PRIVATE</info> optionally combined via bitwise OR with
                           <info>RUNKIT7_ACC_STATIC</info>
  <info>string</info>   <strong>$doc_comment</strong>    The doc comment of the method.
  <info>string</info>   <strong>$return_type</strong>    The return type of the method.
  <info>bool</info>     <strong>$is_strict</strong>      Whether the method behaves as if it was declared in a file with
                           <return>strict_types=1</return>.

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

<comment>See Also:</comment>
   * <strong>runkit7_method_add()</strong>
   * <strong>runkit7_method_copy()</strong>
   * <strong>runkit7_method_remove()</strong>
   * <strong>runkit7_method_rename()</strong>
   * <strong>runkit7_function_redefine()</strong>


id: runkit7_method_remove
type: function
doc:
<comment>Description:</comment>
  Dynamically removes the given method
  
  此函数不能用来操作当前正常运行（或运行链上）的方法。

<comment>Param:</comment>
  <info>string</info>  <strong>$class_name</strong>   The class in which to remove the method
  <info>string</info>  <strong>$method_name</strong>  The name of the method to remove

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

<comment>See Also:</comment>
   * <strong>runkit7_method_add()</strong>
   * <strong>runkit7_method_copy()</strong>
   * <strong>runkit7_method_redefine()</strong>
   * <strong>runkit7_method_rename()</strong>
   * <strong>runkit7_function_remove()</strong>


id: runkit7_method_rename
type: function
doc:
<comment>Description:</comment>
  Dynamically changes the name of the given method
  
  此函数不能用来操作当前正常运行（或运行链上）的方法。

<comment>Param:</comment>
  <info>string</info>  <strong>$class_name</strong>          The class in which to rename the method
  <info>string</info>  <strong>$source_method_name</strong>  The name of the method to rename
  <info>string</info>  <strong>$target_method_name</strong>  The new name to give to the renamed method

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

<comment>See Also:</comment>
   * <strong>runkit7_method_add()</strong>
   * <strong>runkit7_method_copy()</strong>
   * <strong>runkit7_method_redefine()</strong>
   * <strong>runkit7_method_remove()</strong>
   * <strong>runkit7_function_rename()</strong>


id: runkit7_object_id
type: function
doc:
<comment>Description:</comment>
  Return the integer object handle for given object
    
  
  This function is equivalent to <strong>spl_object_id()</strong>.
  
  This function returns a unique identifier for the object. The object id is unique for the lifetime
  of the object. Once the object is destroyed, its id may be reused for other objects. This behavior
  is similar to <strong>spl_object_hash()</strong>.

<comment>Param:</comment>
  <info>object</info>  <strong>$obj</strong>  Any object.

<comment>Return:</comment>
  <info>int</info>  An integer identifier that is unique for each currently existing object and is always the
       same for each object.

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


id: runkit7_superglobals
type: function
doc:
<comment>Description:</comment>
  Return numerically indexed array of registered superglobals

<comment>Return:</comment>
  <info>array</info>  Returns a numerically indexed array of the currently registered superglobals. i.e. _GET,
         _POST, _REQUEST, _COOKIE, _SESSION, _SERVER, _ENV, _FILES

<comment>See Also:</comment>
   * Variable Scope


id: runkit7_zval_inspect
type: function
doc:
<comment>Description:</comment>
  Returns information about the passed in value with data types, reference counts, etc

<comment>Param:</comment>
  <info>string</info>  <strong>$value</strong>  The value to return the representation of

<comment>Return:</comment>
  <info>array</info>  The array returned by this function contains the following elements: <return>address</return><return>refcount</return>
         (optional)<return>is_ref</return> (optional)<return>type</return>

<comment>See Also:</comment>
   * References Explained
   * References Explained (by Derick Rethans)


id: sapi_windows_cp_conv
type: function
doc:
<comment>Description:</comment>
  Convert string from one codepage to another
  
  Convert string from one codepage to another.

<comment>Param:</comment>
  <info>int|string</info>  <strong>$in_codepage</strong>   The codepage of the <strong>$subject</strong> string. Either the codepage name or
                             identifier.
  <info>int|string</info>  <strong>$out_codepage</strong>  The codepage to convert the <strong>$subject</strong> string to. Either the codepage
                             name or identifier.
  <info>string</info>      <strong>$subject</strong>       The string to convert.

<comment>Return:</comment>
  <info>string|null</info>  The <strong>$subject</strong> string converted to <strong>$out_codepage</strong>, or <info>null</info> on failure.

<comment>See Also:</comment>
   * <strong>sapi_windows_cp_get()</strong>
   * <strong>iconv()</strong>


id: sapi_windows_cp_get
type: function
doc:
<comment>Description:</comment>
  Get current codepage
  
  Gets the current codepage.

<comment>Param:</comment>
  <info>string</info>  <strong>$kind</strong>  The kind of operating system codepage to get, either <return>'ansi'</return> or <return>'oem'</return>. Any other
                 value refers to the current codepage of the process.

<comment>Return:</comment>
  <info>int</info>  If <strong>$kind</strong> is <return>'ansi'</return>, the current ANSI code page of the operating system is returned. If <strong>$kind</strong>
       is <return>'oem'</return>, the current OEM code page of the operating system is returned. Otherwise, the
       current codepage of the process is returned.

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


id: sapi_windows_cp_is_utf8
type: function
doc:
<comment>Description:</comment>
  Indicates whether the codepage is UTF-8 compatible
  
  Indicates whether the codepage of the current process is UTF-8 compatible.

<comment>Return:</comment>
  <info>bool</info>  Returns whether the codepage of the current process is UTF-8 compatible.

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


id: sapi_windows_cp_set
type: function
doc:
<comment>Description:</comment>
  Set process codepage
  
  Set the codepage of the current process.

<comment>Param:</comment>
  <info>int</info>  <strong>$codepage</strong>  A codepage identifier.

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

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


id: sapi_windows_generate_ctrl_event
type: function
doc:
<comment>Description:</comment>
  Send a CTRL event to another process
  
  Sends a CTRL event to another process in the same process group.

<comment>Param:</comment>
  <info>int</info>  <strong>$event</strong>  The <return>CTRL</return> event to send; either <info>PHP_WINDOWS_EVENT_CTRL_C</info> or
               <info>PHP_WINDOWS_EVENT_CTRL_BREAK</info>.
  <info>int</info>  <strong>$pid</strong>    The ID of the process to which to send the event to. If <return>0</return> is given, the event is sent
               to all processes of the process group.

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

<comment>See Also:</comment>
   * <strong>proc_open()</strong>
   * <strong>sapi_windows_set_ctrl_handler()</strong>


id: sapi_windows_set_ctrl_handler
type: function
doc:
<comment>Description:</comment>
  Set or remove a CTRL event handler
  
  Sets or removes a <return>CTRL</return> event handler, which allows Windows CLI processes to intercept or ignore
  <return>CTRL+C</return> and <return>CTRL+BREAK</return> events. Note that in multithreaded environments, this is only possible when
  called from the main thread.

<comment>Param:</comment>
  <info>callable|null</info>  <strong>$handler</strong>  A callback function to set or remove. If set, this function will be
                           called whenever a <return>CTRL+C</return> or <return>CTRL+BREAK</return> event occurs. The function is
                           supposed to have the following signature: <info>void</info>handler<info>int</info><strong>$event</strong> <strong>$event</strong> The
                           <return>CTRL</return> event which has been received; either <info>PHP_WINDOWS_EVENT_CTRL_C</info> or
                           <info>PHP_WINDOWS_EVENT_CTRL_BREAK</info>.  Setting a <info>null</info> <strong>$handler</strong> causes the process
                           to ignore <return>CTRL+C</return> events, but not <return>CTRL+BREAK</return> events.
                           
                           The <return>CTRL</return> event which has been received; either <info>PHP_WINDOWS_EVENT_CTRL_C</info>
                           or <info>PHP_WINDOWS_EVENT_CTRL_BREAK</info>.
  <info>int</info>            <strong>$event</strong>    The <return>CTRL</return> event which has been received; either <info>PHP_WINDOWS_EVENT_CTRL_C</info>
                           or <info>PHP_WINDOWS_EVENT_CTRL_BREAK</info>.
  <info>bool</info>           <strong>$add</strong>      If <info>true</info>, the handler is set. If <info>false</info>, the handler is removed.

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

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


id: sapi_windows_vt100_support
type: function
doc:
<comment>Description:</comment>
  Get or set VT100 support for the specified stream associated to an output buffer of a Windows
  console.
  
  If <strong>$enable</strong> is <info>null</info>, the function returns <info>true</info> if the stream <strong>$stream</strong> has VT100 control codes
  enabled, <info>false</info> otherwise.
  
  If <strong>$enable</strong> is a <info>bool</info>, the function will try to enable or disable the VT100 features of the stream
  <strong>$stream</strong>. If the feature has been successfully enabled (or disabled), the function will return
  <info>true</info>, or <info>false</info> otherwise.
  
  At startup, PHP tries to enable the VT100 feature of the <info>STDOUT</info>/<info>STDERR</info> streams. By the way, if
  those streams are redirected to a file, the VT100 features may not be enabled.
  
  If VT100 support is enabled, it is possible to use control sequences as they are known from the
  VT100 terminal.  They allow the modification of the terminal's output. On Windows these sequences
  are called Console Virtual Terminal Sequences.
  
  This function uses the <info>ENABLE_VIRTUAL_TERMINAL_PROCESSING</info> flag implemented in the Windows 10 API,
  so the VT100 feature may not be available on older Windows versions.

<comment>Param:</comment>
  <info>resource</info>   <strong>$stream</strong>  The stream on which the function will operate.
  <info>bool|null</info>  <strong>$enable</strong>  If <info>bool</info>, the VT100 feature will be enabled (if <info>true</info>) or disabled (if <info>false</info>).

<comment>Return:</comment>
  <info>bool</info>  If <strong>$enable</strong> is <info>null</info>: returns <info>true</info> if the VT100 feature is enabled, <info>false</info> otherwise.
        
        If <strong>$enable</strong> is a <info>bool</info>: 成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: scandir
type: function
doc:
<comment>Description:</comment>
  列出指定路径中的文件和目录
  
  返回 <info>array</info>，包含有 <strong>$directory</strong> 中的文件和目录。

<comment>Param:</comment>
  <info>string</info>         <strong>$directory</strong>      要被浏览的目录
  <info>int</info>            <strong>$sorting_order</strong>  默认的排序顺序是按字母升序排列。如果使用了可选参数
                                 <strong>$sorting_order</strong>（设为 1），则排序顺序是按字母降序排列。
  <info>resource|null</info>  <strong>$context</strong>        <strong>$context</strong> 参数的说明见手册中的 Streams API 一章。

<comment>Return:</comment>
  <info>array|false</info>  成功则返回包含有文件名的 <info>array</info>，如果失败则返回 <info>false</info>。如果 <strong>$directory</strong> 不是个目录，则
               返回布尔值 <info>false</info> 并生成一条 <info>E_WARNING</info> 级的错误。

<comment>See Also:</comment>
   * <strong>opendir()</strong>
   * <strong>readdir()</strong>
   * <strong>glob()</strong>
   * <strong>is_dir()</strong>
   * <strong>sort()</strong>


id: scoutapm_get_calls
type: function
doc:
<comment>Description:</comment>
  Returns a list of instrumented calls that have occurred
  
  Returns a list of any instrumented function calls since <strong>scoutapm_get_calls()</strong> was last called. The
  list is cleared each time the function is called.

<comment>Return:</comment>
  <info>array</info>  <strong>scoutapm_get_calls()</strong> returns an array containing a list of all recorded calls to
         instrumented function calls.


id: scoutapm_list_instrumented_functions
type: function
doc:
<comment>Description:</comment>
  List functions scoutapm will instrument.
  
  Returns a list of the functions the extension will instrument.

<comment>Return:</comment>
  <info>array</info>  <strong>scoutapm_list_instrumented_functions()</strong> returns an array containing a list of all functions
         that the scoutapm extension is able to instrument in the current installation.


id: seaslog_get_author
type: function
doc:
<comment>Description:</comment>
  获取 SeasLog 作者

<comment>Return:</comment>
  <info>string</info>  返回一个 SeasLog 作者的字符串


id: seaslog_get_version
type: function
doc:
<comment>Description:</comment>
  获取 SeasLog 的版本

<comment>Return:</comment>
  <info>string</info>  返回一个 SeasLog 版本号的字符串


id: sem_acquire
type: function
doc:
<comment>Description:</comment>
  Acquire a semaphore
  
  <strong>sem_acquire()</strong> by default blocks (if necessary) until the semaphore can be acquired.  A process
  attempting to acquire a semaphore which it has already acquired will block forever if acquiring
  the semaphore would cause its maximum number of semaphore to be exceeded.
  
  After processing a request, any semaphores acquired by the process but not explicitly released
  will be released automatically and a warning will be generated.

<comment>Param:</comment>
  <info>SysvSemaphore</info>  <strong>$semaphore</strong>     <strong>$semaphore</strong> is a semaphore obtained from <strong>sem_get()</strong>.
  <info>bool</info>           <strong>$non_blocking</strong>  Specifies if the process shouldn't wait for the semaphore to be
                                acquired. If set to <info>true</info>, the call will return <info>false</info> immediately if
                                a semaphore cannot be immediately acquired.

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

<comment>See Also:</comment>
   * <strong>sem_get()</strong>
   * <strong>sem_release()</strong>


id: sem_get
type: function
doc:
<comment>Description:</comment>
  Get a semaphore id
  
  <strong>sem_get()</strong> returns an id that can be used to access the System V semaphore with the given <strong>$key</strong>.
  
  A second call to <strong>sem_get()</strong> for the same key will return a different semaphore identifier, but both
  identifiers access the same underlying semaphore.
  
  If <strong>$key</strong> is <return>0</return>, a new private semaphore is created for each call to <strong>sem_get()</strong>.

<comment>Param:</comment>
  <info>int</info>   <strong>$key</strong>           
  <info>int</info>   <strong>$max_acquire</strong>   The number of processes that can acquire the semaphore simultaneously is set
                       to <strong>$max_acquire</strong>.
  <info>int</info>   <strong>$permissions</strong>   The semaphore permissions. Actually this value is set only if the process
                       finds it is the only process currently attached to the semaphore.
  <info>bool</info>  <strong>$auto_release</strong>  Specifies if the semaphore should be automatically released on request
                       shutdown.

<comment>Return:</comment>
  <info>SysvSemaphore|false</info>  Returns a positive semaphore identifier on success, or <info>false</info> on error.

<comment>See Also:</comment>
   * <strong>sem_acquire()</strong>
   * <strong>sem_release()</strong>
   * <strong>ftok()</strong>


id: sem_release
type: function
doc:
<comment>Description:</comment>
  Release a semaphore
  
  <strong>sem_release()</strong> releases the semaphore if it is currently acquired by the calling process, otherwise
  a warning is generated.
  
  After releasing the semaphore, <strong>sem_acquire()</strong> may be called to re-acquire it.

<comment>Param:</comment>
  <info>SysvSemaphore</info>  <strong>$semaphore</strong>  A Semaphore as returned by <strong>sem_get()</strong>.

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

<comment>See Also:</comment>
   * <strong>sem_get()</strong>
   * <strong>sem_acquire()</strong>


id: sem_remove
type: function
doc:
<comment>Description:</comment>
  Remove a semaphore
  
  <strong>sem_remove()</strong> removes the given semaphore.
  
  After removing the semaphore, it is no longer accessible.

<comment>Param:</comment>
  <info>SysvSemaphore</info>  <strong>$semaphore</strong>  A semaphore as returned by <strong>sem_get()</strong>.

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

<comment>See Also:</comment>
   * <strong>sem_get()</strong>
   * <strong>sem_release()</strong>
   * <strong>sem_acquire()</strong>


id: serialize
type: function
doc:
<comment>Description:</comment>
  生成值的可存储表示
  
  生成值的可存储表示。
  
  这有利于存储或传递 PHP 的值，同时不丢失其类型和结构。
  
  想要将已序列化的字符串变回 PHP 的值，可使用 <strong>unserialize()</strong>。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$value</strong>  要序列化的值。<strong>serialize()</strong> 处理所有的类型，除了 <info>resource</info> 类型和一些 <info>object</info>（见下面的
                 注释）。<strong>serialize()</strong> 甚至可以序列化包含对自身引用的数组。数组/对象内的循环引用也会被
                 存储。其它任何引用都会丢失。
                 
                 序列化对象时，PHP 将尝试在序列化之前调用成员函数 __serialize() 或 __sleep()。这是为
                 了允许对象在序列化之前进行最后一分钟的清理等等。同样，当使用 <strong>unserialize()</strong> 恢复对象
                 时，会调用 __unserialize() 或 __wakeup() 成员函数。
                 
                 对象的 private 成员会在名前添加类名；protected 成员会在名前添加“*”；这些前置值在两
                 边都有 null 字节。

<comment>Return:</comment>
  <info>string</info>  返回字符串，包含 <strong>$value</strong> 的字节流表示，可以存储在任何地方。
          
          注意这可能是包含 null 字节的二进制字符串，需要按原样存储和处理。例如，<strong>serialize()</strong> 的输出通
          常应该存储在数据库中 的 BLOB 字段，而不是 CHAR 或 TEXT 字段。

<comment>See Also:</comment>
   * <strong>unserialize()</strong>
   * <strong>var_export()</strong>
   * <strong>json_encode()</strong>
   * 序列化对象
   * __sleep()
   * __wakeup()
   * __serialize()
   * __unserialize()


id: session_abort
type: function
doc:
<comment>Description:</comment>
  Discard session array changes and finish session
  
  <strong>session_abort()</strong> finishes session without saving data. Thus the original values in session data are
  kept.

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

<comment>See Also:</comment>
   * $_SESSION
   * 
     The session.auto_start
     configuration directive
    
   * <strong>session_start()</strong>
   * <strong>session_reset()</strong>
   * <strong>session_commit()</strong>


id: session_cache_expire
type: function
doc:
<comment>Description:</comment>
  返回/设置当前缓存的到期时间
  
  <strong>session_cache_expire()</strong> 返回 <return>session.cache_expire</return> 的设定值。
  
  请求开始的时候，缓存到期时间会被重置为 180，并且保存在 session.cache_expire 配置项中。 因此，针对
  每个请求，需要在 <strong>session_start()</strong> 函数调用之前 调用 <strong>session_cache_expire()</strong> 来设置缓存到期时间。

<comment>Param:</comment>
  <info>int|null</info>  <strong>$value</strong>  如果指定 <strong>$value</strong> 且不为 <info>null</info>，就使用 <strong>$value</strong> 的值替换当前缓存到期时间。
                    
                     仅在 <return>session.cache_limiter</return> 的设置值 不是 <return>nocache</return> 的时候， 才可以设置 <strong>$value</strong> 参
                    数。
                    
                    仅在 <return>session.cache_limiter</return> 的设置值 不是 <return>nocache</return> 的时候， 才可以设置 <strong>$value</strong> 参
                    数。

<comment>Return:</comment>
  <info>int|false</info>  返回 <return>session.cache_expire</return> 的当前设置值， 以分钟为单位，默认值是 180 （分钟）。如果更改
             值失败，则返回 <info>false</info>。

<comment>See Also:</comment>
   * session.cache_expire
   * session.cache_limiter
   * <strong>session_cache_limiter()</strong>


id: session_cache_limiter
type: function
doc:
<comment>Description:</comment>
  读取/设置缓存限制器
  
  <strong>session_cache_limiter()</strong> 返回当前缓存限制器的名称。
  
  缓存限制器定义了向客户端发送的 HTTP 响应头中的缓存控制策略。 客户端或者代理服务器通过检测这个响应
  头信息来 确定对于页面内容的缓存规则。 设置缓存限制器为 <return>nocache</return> 会禁止客户端或者代理服务器缓存内
  容， <return>public</return> 表示允许客户端或代理服务器缓存内容， <return>private</return> 表示允许客户端缓存， 但是不允许代理服务器
  缓存内容。
  
  在 <return>private</return> 模式下， 包括 Mozilla  在内的一些浏览器可能无法正确处理 Expire 响应头， 通过使用
  <return>private_no_expire</return> 模式可以解决这个问题：在这种模式下， 不会向客户端发送 <return>Expire</return> 响应头。
  
  设置为  <return>''</return> 可以关闭 自动发送缓存策略响应头的功能。
  
  请求开始的时候，缓存限制器会被重置为默认值，并且存储在 session.cache_limiter  配置项中。 因此，如
  果要设置缓存限制器，对于每个请求， 都需要在调用 <strong>session_start()</strong> 函数之前， 调用
  <strong>session_cache_limiter()</strong> 函数来进行设置。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$value</strong>  如果指定 <strong>$value</strong> 且不为 <info>null</info>， 将使用指定值作为缓存限制器的值。

<comment>Return:</comment>
  <info>string|false</info>  返回当前所用的缓存限制器名称。如果更改值失败，则返回 <info>false</info>。

<comment>See Also:</comment>
   * session.cache_limiter


id: session_commit
type: function
doc:
<comment>Description:</comment>
  session_write_close 的别名
  
  此函数是该函数的别名：<strong>session_write_close()</strong>。


id: session_create_id
type: function
doc:
<comment>Description:</comment>
  Create new session id
  
  <strong>session_create_id()</strong> is used to create new session id for the current session. It returns collision
  free session id.
  
  If session is not active, collision check is omitted.
  
  Session ID is created according to php.ini settings.
  
  It is important to use the same user ID of your web server for GC task script. Otherwise, you may
  have permission problems especially with files save handler.

<comment>Param:</comment>
  <info>string</info>  <strong>$prefix</strong>  If <strong>$prefix</strong> is specified, new session id is prefixed by <strong>$prefix</strong>. Not all
                   characters are allowed within the session id.  Characters in the range <return>a-z A-Z
                   0-9 , (comma) and - (minus)</return> are allowed.

<comment>Return:</comment>
  <info>string|false</info>  <strong>session_create_id()</strong> returns new collision free session id for the current session.
                If it is used without active session, it omits collision check. On failure, <info>false</info> is
                returned.

<comment>See Also:</comment>
   * <strong>session_regenerate_id()</strong>
   * <strong>session_start()</strong>
   * session.use_strict_mode
   * SessionHandler::create_sid


id: session_decode
type: function
doc:
<comment>Description:</comment>
  解码会话数据
  
  <strong>session_decode()</strong> 对 <strong>$data</strong> 参数中的已经序列化的会话数据进行解码， 并且使用解码后的数据填充
  $_SESSION 超级全局变量。
  
  请注意，这里的反序列化方法不同于 <strong>unserialize()</strong> 函数。 序列化方法是 PHP 内置的，并且可以通过
  session.serialize_handler 配置项进行修改。

<comment>Param:</comment>
  <info>string</info>  <strong>$data</strong>  编码后的数据

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

<comment>See Also:</comment>
   * <strong>session_encode()</strong>
   * session.serialize_handler


id: session_destroy
type: function
doc:
<comment>Description:</comment>
  销毁一个会话中的全部数据
  
  <strong>session_destroy()</strong> 销毁当前会话中的全部数据， 但是不会重置当前会话所关联的全局变量， 也不会重置会话
  cookie。 如果需要再次使用会话变量， 必须重新调用 <strong>session_start()</strong> 函数。
  
  通常情况下，在你的代码中不必调用 <strong>session_destroy()</strong> 函数， 可以直接清除 $_SESSION 数组中的数据来实
  现会话数据清理。
  
  为了彻底销毁会话，必须同时重置会话 ID。 如果是通过 cookie 方式传送会话 ID 的，那么同时也需要 调用
  <strong>setcookie()</strong> 函数来 删除客户端的会话 cookie。
  
  当启用了 session.use_strict_mode 配置项的时候，你不需要删除过期会话 ID 对应的 cookie， 因为会话模
  块已经不再接受携带过期会话 ID 的 cookie 了， 然后它会生成一个新的会话 ID cookie。 建议所有的站点都
  启用 session.use_strict_mode 配置项。
  
  过早的删除会话中的数据可能会导致不可预期的结果。 例如，当存在从 JavaScript 或者 URL 链接过来的并发
  请求的时候， 某一个请求删除了会话中的数据，会导致其他的并发请求无法使用会话数据。
  
  虽然当前的会话处理模块不会接受为空的会话 ID， 但是由于客户端（浏览器）的处理方式， 立即删除会话中
  的数据可能会导致生成为空的会话 cookie， 进而导致客户端生成很多不必要的会话 ID cookie。
  
  为了避免这种情况的发生，你需要在 $_SESSION 中设置一个时间戳， 在这个时间戳之后的对于会话的访问都将
  被拒绝。 或者，确保你的应用中不存在并发请求。 这个规则同样适用于 <strong>session_regenerate_id()</strong>。

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

<comment>See Also:</comment>
   * session.use_strict_mode
   * <strong>session_reset()</strong>
   * <strong>session_regenerate_id()</strong>
   * <strong>unset()</strong>
   * <strong>setcookie()</strong>


id: session_encode
type: function
doc:
<comment>Description:</comment>
  将当前会话数据编码为字符串
  
  <strong>session_encode()</strong> 返回一个序列化后的字符串，包含被编码的、储存于 $_SESSION 超全局变量中的当前会话数
  据。
  
  默认情况下，PHP 内部使用的序列方法和 <strong>serialize()</strong> 是不一样的。 该序列方法通过
  session.serialize_handler 来设置。

<comment>Return:</comment>
  <info>string|false</info>  返回当前会话编码后的内容， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>session_decode()</strong>
   * session.serialize_handler


id: session_gc
type: function
doc:
<comment>Description:</comment>
  Perform session data garbage collection
  
  <strong>session_gc()</strong> is used to perform session data GC(garbage collection). PHP does probability based
  session GC by default.
  
  Probability based GC works somewhat but it has few problems. 1) Low traffic sites' session data
  may not be deleted within the preferred duration. 2) High traffic sites' GC may be too frequent
  GC. 3) GC is performed on the user's request and the user will experience a GC delay.
  
  Therefore, it is recommended to execute GC periodically for production systems using, e.g., "cron"
  for UNIX-like systems. Make sure to disable probability based GC by setting
  session.gc_probability  to 0.

<comment>Return:</comment>
  <info>int|false</info>  <strong>session_gc()</strong> returns number of deleted session data for success, <info>false</info> for failure.
             
             Old save handlers do not return number of deleted session data, but  only
             success/failure flag. If this is the case, number of deleted session data became 1
             regardless of actually deleted data.

<comment>See Also:</comment>
   * <strong>session_start()</strong>
   * <strong>session_destroy()</strong>
   * session.gc_probability


id: session_get_cookie_params
type: function
doc:
<comment>Description:</comment>
  获取会话 cookie 参数
  
  获取会话 cookie 的参数。

<comment>Return:</comment>
  <info>array</info>  返回一个包含当前会话 cookie 信息的数组： "lifetime" - cookie 的生命周期，以秒为单位。
         "path" -  cookie 的访问路径。 "domain" -  cookie 的域。 "secure" -  仅在使用安全连接时发送
         cookie。 "httponly" - 只能通过 http 协议访问 cookie "samesite"——控制 cookie 的跨域发送。
         
         "lifetime" - cookie 的生命周期，以秒为单位。
         
         "path" -  cookie 的访问路径。
         
         "domain" -  cookie 的域。
         
         "secure" -  仅在使用安全连接时发送 cookie。
         
         "httponly" - 只能通过 http 协议访问 cookie
         
         "samesite"——控制 cookie 的跨域发送。

<comment>See Also:</comment>
   * session.cookie_lifetime
   * session.cookie_path
   * session.cookie_domain
   * session.cookie_secure
   * session.cookie_httponly
   * session.cookie_samesite
   * <strong>session_set_cookie_params()</strong>


id: session_id
type: function
doc:
<comment>Description:</comment>
  获取/设置当前会话 ID
  
  <strong>session_id()</strong> 可以用来获取/设置 当前会话 ID。
  
  为了能够将会话 ID 很方便的附加到 URL 之后， 你可以使用常量 <info>SID</info> 获取以字符串格式表达的会话名称和
  ID。 请参考 会话处理。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$id</strong>  如果指定了 <strong>$id</strong> 且不为 <info>null</info>， 则使用指定值作为会话 ID。 必须在调用
                    <strong>session_start()</strong> 函数之前调用  <strong>session_id()</strong> 函数。 不同的会话处理程序对于会话 ID
                    中可以使用的字符有不同的限制。 例如文件会话处理程序仅允许会话 ID 中使用以下字
                    符：<return>a-z A-Z 0-9 , （逗号）和 - （减号）</return>
                    
                    如果使用 cookie 方式传送会话 ID，并且指定了 <strong>$id</strong> 参数， 在调用 <strong>session_start()</strong>
                    之后都会向客户端发送新的 cookie， 无论当前的会话 ID 和新指定的会话 ID 是否相同。

<comment>Return:</comment>
  <info>string|false</info>  <strong>session_id()</strong> 返回当前会话ID。 如果当前没有会话，则返回空字符串（<return>""</return>）。失败时返回
                <info>false</info>。

<comment>See Also:</comment>
   * <strong>session_regenerate_id()</strong>
   * <strong>session_start()</strong>
   * <strong>session_set_save_handler()</strong>
   * session.save_handler


id: session_module_name
type: function
doc:
<comment>Description:</comment>
  获取/设置会话模块名称
  
  <strong>session_module_name()</strong>  获取或设置会话模块名称，也被称做：session.save_handler。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$module</strong>  如果指定 <strong>$module</strong> 参数并且不是 <info>null</info>， 则使用指定值作为会话模块。 禁止传入
                        <return>"user"</return> 作为此参数的值， 请使用 <strong>session_set_save_handler()</strong> 来设置用户自定义的
                        会话处理器。

<comment>Return:</comment>
  <info>string|false</info>  返回当前所用的会话模块名称,  或者在失败时返回 <info>false</info>。


id: session_name
type: function
doc:
<comment>Description:</comment>
  读取/设置会话名称
  
  <strong>session_name()</strong> 函数返回当前会话名称。 如果指定 <strong>$name</strong> 参数， <strong>session_name()</strong> 函数会更新会话名称， 并
  返回 原来的 会话名称。
  
  如果使用 <strong>$name</strong> 指定了新字符串作为会话 cookie 的名字， <strong>session_name()</strong> 函数会修改 HTTP 响应中的
  cookie （如果启用了 <return>session.transid</return>，还会输出会话 cookie 的内容）。 一旦在 HTTP 响应中发送了
  cookie 的内容之后， 调用 <strong>session_name()</strong> 函数会产生错误。 所以，一定要在调用 <strong>session_start()</strong> 函数之
  前 调用此函数。
  
  请求开始的时候，会话名称会被重置并且存储到 <return>session.name</return> 配置项。 因此，要想设置会话名称，那么对于
  每个请求，都需要在 调用 <strong>session_start()</strong> 函数 之前调用 <strong>session_name()</strong> 函数。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$name</strong>  用在 cookie 或者 URL 中的会话名称， 例如：<return>PHPSESSID</return>。 只能使用字母和数字作为会
                      话名称，建议尽可能的短一些， 并且是望文知意的名字（对于启用了 cookie 警告的用
                      户来说，方便其判断是否要允许此 cookie）。 如果指定了 <strong>$name</strong> 且不为 <info>null</info>， 那么
                      当前会话也会使用指定值作为名称。
                      
                       会话名称至少需要一个字母，不能全部都使用数字， 否则，每次都会生成一个新的会话
                      ID。
                      
                      会话名称至少需要一个字母，不能全部都使用数字， 否则，每次都会生成一个新的会话
                      ID。

<comment>Return:</comment>
  <info>string|false</info>  返回当前会话名称。如果指定 <strong>$name</strong> 参数，那么此函数会更新会话名称，并且 返回 原来的 会
                话名称， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * session.name 
     配置指示
    


id: session_regenerate_id
type: function
doc:
<comment>Description:</comment>
  使用新生成的会话 ID 更新现有会话 ID
    
  
  <strong>session_regenerate_id()</strong>  在不修改当前会话中数据的前提下使用新的 ID 替换原有会话 ID。
  
  如果启用了 session.use_trans_sid 选项， 那么必须在调用 <strong>session_regenerate_id()</strong> 函数之后开始进行输
  出工作， 否则会导致使用原有的会话 ID。
  
  当前的 session_regenerate_id 并没有很好的处理在诸如移动数据网络和 WiFi 网络不稳定的场景。 因此，调
  用 session_regenerate_id 函数 可能会导致会话丢失。
  
  你不应该直接销毁旧的会话所关联的数据， 而是应该使用时间戳机制来控制对于已经失效的会话 ID 的访问。
  否则，可能会在并发访问的场景下导致会话数据不一致、 会话丢失等情况，甚至可能引发客户端（浏览器）创
  建很多无用的会话 ID。 但是，另外一方面来讲，立即删除会话中的数据 可以防止会话劫持攻击。

<comment>Param:</comment>
  <info>bool</info>  <strong>$delete_old_session</strong>  是否删除原 ID 所关联的会话存储文件。 如果你需要避免会话并发访问冲突，那
                             么不应该立即删除会话中的数据。 如果你需要防止会话劫持攻击，那么可以立即
                             删除会话数据。

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

<comment>See Also:</comment>
   * <strong>session_id()</strong>
   * <strong>session_create_id()</strong>
   * <strong>session_start()</strong>
   * <strong>session_destroy()</strong>
   * <strong>session_reset()</strong>
   * <strong>session_name()</strong>


id: session_register_shutdown
type: function
doc:
<comment>Description:</comment>
  关闭会话
  
  将 <strong>session_write_close()</strong> 函数注册为关闭会话的函数。

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


id: session_reset
type: function
doc:
<comment>Description:</comment>
  Re-initialize session array with original values
  
  <strong>session_reset()</strong> reinitializes a session with original values stored in session storage. This
  function requires an active session and discards changes in $_SESSION.

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

<comment>See Also:</comment>
   * $_SESSION
   * 
     The session.auto_start
     configuration directive
    
   * <strong>session_start()</strong>
   * <strong>session_abort()</strong>
   * <strong>session_commit()</strong>


id: session_save_path
type: function
doc:
<comment>Description:</comment>
  读取/设置当前会话的保存路径
  
  <strong>session_save_path()</strong>  返回当前会话的保存路径。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$path</strong>  指定会话数据保存的路径。如果已经指定且不为 <info>null</info>，保存数据的路径将会改变。 必须
                      在调用 <strong>session_start()</strong> 函数之前调用 <strong>session_save_path()</strong> 函数。
                      
                       在某些操作系统上，建议使用可以高效处理 大量小尺寸文件的文件系统上的路径来保存
                      会话数据。 例如，在 Linux 平台上，对于会话数据保存的工作而言，reiserfs 文件系
                      统会比 ext2fs 文件系统能够提供更好的性能。
                      
                      在某些操作系统上，建议使用可以高效处理 大量小尺寸文件的文件系统上的路径来保存
                      会话数据。 例如，在 Linux 平台上，对于会话数据保存的工作而言，reiserfs 文件系
                      统会比 ext2fs 文件系统能够提供更好的性能。

<comment>Return:</comment>
  <info>string|false</info>  返回保存会话数据的路径， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * session.save_path
     配置指令。
    


id: session_set_cookie_params
type: function
doc:
<comment>Description:</comment>
  设置会话 cookie 参数
  
  自 PHP 7.3.0 起可用的替代签名：
  
  Cookie 参数可以在 php.ini 文件中定义，本函数仅在当前脚本执行过程中有效。 因此，如果要通过函数修改
  cookie 参数，需要对每个请求都要 在调用 <strong>session_start()</strong> 函数之前调用 <strong>session_set_cookie_params()</strong> 函
  数。
  
  本函数会修改运行期 ini 设置值， 可以通过 <strong>ini_get()</strong> 函数获取这些值。

<comment>Param:</comment>
  <info>int</info>          <strong>$lifetime_or_options</strong>  使用第一个签名时，session cookie 的 lifetime，以秒为单位。
                                     
                                     当使用第二个签名时，关联 <info>array</info> 可能具有 <return>lifetime</return>、<return>path</return>、
                                     <return>domain</return>、<return>secure</return>、<return>httponly</return> 和 <return>samesite</return> 中的任一 key。这些值与同名
                                     参数的含义相同。<return>samesite</return> 元素的值应该是 <return>Lax</return> 或 <return>Strict</return>。 如果可
                                     以接受的键在传入的数组中不存在，那么会采用这些键对应的默认值作
                                     为运行时的值。如果省略 <return>samesite</return> 元素，则不会设置 SameSite
                                     cookie 属性。
  <info>string|null</info>  <strong>$path</strong>                 此 cookie 的有效 路径。 on the domain where 设置为“/”表示对于本
                                     域上所有的路径此 cookie 都可用。
  <info>string|null</info>  <strong>$domain</strong>               Cookie 的作用 域。 例如：“www.php.net”。 如果要让 cookie 在所有
                                     的子域中都可用，此参数必须以点（.）开头，例如：“.php.net”。
  <info>bool|null</info>    <strong>$secure</strong>               设置为 <info>true</info> 表示 cookie 仅在使用 安全 链接时可用。
  <info>bool|null</info>    <strong>$httponly</strong>             设置为 <info>true</info> 表示 PHP 发送 cookie 的时候会使用 httponly 标记。

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

<comment>See Also:</comment>
   * session.cookie_lifetime
   * session.cookie_path
   * session.cookie_domain
   * session.cookie_secure
   * session.cookie_httponly
   * session.cookie_samesite
   * <strong>session_get_cookie_params()</strong>


id: session_set_save_handler
type: function
doc:
<comment>Description:</comment>
  设置用户自定义会话存储函数
  
  可以使用下面的方式来注册自定义会话存储函数：
  
  <strong>session_set_save_handler()</strong> 设置用户自定义 会话存储函数。 如果想使用 PHP 内置的会话存储机制之外的方
  式， 可以使用本函数。 例如，可以自定义会话存储函数来将会话数据存储到数据库。

<comment>Param:</comment>
  <info>object</info>    <strong>$sessionhandler</strong>                               实现了 SessionHandlerInterface，
                                                          SessionIdInterface（可选） 和/或
                                                          SessionUpdateTimestampHandlerInterface 接
                                                          口的对象， 例如 <class>SessionHandler</class>。
  <info>bool</info>      <strong>$register_shutdown</strong>                            将函数 <strong>session_write_close()</strong> 注册为
                                                          <strong>register_shutdown_function()</strong> 函数。
  <info></info>          <strong>$open(string $savePath, string $sessionName)</strong>  实现了以下签名的 callable 回调：
                                                          <info>bool</info>open<info>string</info><strong>$savePath</strong><info>string</info><strong>$sessionName</strong>
                                                          
                                                          open 回调函数类似于类的构造函数， 在会话打
                                                          开的时候会被调用。 这是自动开始会话或者通
                                                          过调用 <strong>session_start()</strong> 手动开始会话 之后第
                                                          一个被调用的回调函数。 此回调函数操作成功
                                                          返回 <info>true</info>，反之返回 <info>false</info>。
  <info>callable</info>  <strong>$close</strong>                                        close 回调函数类似于类的析构函数。 在
                                                          write 回调函数调用之后调用。 当调用
                                                          <strong>session_write_close()</strong> 函数之后，也会调用
                                                          close 回调函数。 此回调函数操作成功返回
                                                          <info>true</info>，反之返回 <info>false</info>。
  <info>callable</info>  <strong>$read</strong>                                         实现了以下签名的 callable 回调：
                                                          <info>string</info>read<info>string</info><strong>$sessionId</strong>
                                                          
                                                          如果会话中有数据，read 回调函数必须返回将
                                                          会话数据编码（序列化）后的字符串。 如果会
                                                          话中没有数据，read 回调函数返回空字符串。
                                                          
                                                          在自动开始会话或者通过调用 <strong>session_start()</strong>
                                                          函数手动开始会话之后，PHP 内部调用 read 回
                                                          调函数来获取会话数据。 在调用 read 之前，
                                                          PHP 会调用 open 回调函数。
                                                          
                                                          read 回调返回的序列化之后的字符串格式必须
                                                          与 <strong>$write</strong> 回调函数保存数据时的格式完全一
                                                          致。 PHP 会自动反序列化返回的字符串并填充
                                                          $_SESSION 超级全局变量。 虽然数据看起来和
                                                          <strong>serialize()</strong> 函数很相似， 但是需要提醒的
                                                          是，它们是不同的。 请参考：
                                                          session.serialize_handler。
  <info>callable</info>  <strong>$write</strong>                                        实现了以下签名的 callable 回调：
                                                          <info>bool</info>write<info>string</info><strong>$sessionId</strong><info>string</info><strong>$data</strong>
                                                          
                                                          在会话保存数据时会调用 <strong>$write</strong> 回调函数。
                                                          此回调函数接收当前会话 ID 以及 $_SESSION
                                                          中数据序列化之后的字符串作为参数。 序列化
                                                          会话数据的过程由 PHP 根据
                                                          session.serialize_handler 设定值来完成。
                                                          
                                                          序列化后的数据将和会话 ID 关联在一起进行保
                                                          存。 当调用 <strong>$read</strong> 回调函数获取数据时，所返
                                                          回的数据必须要和 传入 <strong>$write</strong> 回调函数的数
                                                          据完全保持一致。
                                                          
                                                          PHP 会在脚本执行完毕或调用
                                                          <strong>session_write_close()</strong> 函数之后调用此回调函
                                                          数。 注意，在调用完此回调函数之后，PHP 内
                                                          部会调用 <strong>$close</strong> 回调函数。  PHP 会在输出流
                                                          写入完毕并且关闭之后 才调用 write 回调函
                                                          数， 所以在 write 回调函数中的调试信息不会
                                                          输出到浏览器中。 如果需要在 write 回调函数
                                                          中使用调试输出， 建议将调试输出写入到文
                                                          件。
                                                          
                                                          PHP 会在输出流写入完毕并且关闭之后 才调用
                                                          write 回调函数， 所以在 write 回调函数中的
                                                          调试信息不会输出到浏览器中。 如果需要在
                                                          write 回调函数中使用调试输出， 建议将调试
                                                          输出写入到文件。
  <info>callable</info>  <strong>$destroy</strong>                                      实现了以下签名的 callable 回调：
                                                          <info>bool</info>destroy<info>string</info><strong>$sessionId</strong>
                                                          
                                                          当调用 <strong>session_destroy()</strong> 函数， 或者调用
                                                          <strong>session_regenerate_id()</strong> 函数并且设置
                                                          destroy 参数为 <info>true</info> 时， 会调用此回调函
                                                          数。此回调函数操作成功返回 <info>true</info>，反之返回
                                                          <info>false</info>。
  <info>callable</info>  <strong>$gc</strong>                                           实现了以下签名的 callable 回调：
                                                          <info>bool</info>gc<info>int</info><strong>$lifetime</strong>
                                                          
                                                          为了清理会话中的旧数据，PHP 会不时的调用垃
                                                          圾收集回调函数。 调用周期由
                                                          session.gc_probability  和
                                                          session.gc_divisor 参数控制。 传入到此回调
                                                          函数的 lifetime 参数由
                                                          session.gc_maxlifetime 设置。 此回调函数操
                                                          作成功返回 <info>true</info>，反之返回 <info>false</info>。
  <info>callable</info>  <strong>$create_sid</strong>                                   实现了以下签名的 callable 回调：
                                                          <info>string</info>create_sid
                                                          
                                                          需要新的会话 ID 时，执行此回调函数。 它被
                                                          调用时不会传入参数，其返回值应该是一个字符
                                                          串格式的、有效的 session ID。
  <info>callable</info>  <strong>$validate_sid</strong>                                 实现了以下签名的 callable 回调：
                                                          <info>bool</info>validate_sid<info>string</info><strong>$key</strong>
                                                          
                                                          开启 session.use_strict_mode 后， 当启动一
                                                          个 session 时，提供了 session ID 后会执行
                                                          此回调。 参数 <strong>$key</strong> 是待验证的 session ID。
                                                          如果该 ID 的 session 已经存在，则为有效
                                                          session ID。 成功时返回值应当为 <info>true</info>，失败
                                                          时为 <info>false</info>。
  <info>callable</info>  <strong>$update_timestamp</strong>                             实现了以下签名的 callable 回调：
                                                          <info>bool</info>update_timestamp<info>string</info><strong>$key</strong><info>string</info><strong>$val</strong>
                                                          
                                                          更新 session 时执行此回调。 参数 <strong>$key</strong> 是
                                                          session ID；参数 <strong>$val</strong> 是 session 的数据。
                                                          成功时返回值应当为 <info>true</info>，失败时为 <info>false</info>。

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

<comment>See Also:</comment>
   * session.save_handler
     配置指示
    
   * session.serialize_handler
     配置指示
    
   * <strong>register_shutdown_function()</strong>
   * <strong>session_register_shutdown()</strong>
   * 
     完整的实现请参考 
     save_handler.inc。
    


