1
0
mirror of https://github.com/php/doc-en.git synced 2026-03-24 07:42:10 +01:00

Rework documentation for dir functions (#4989)

Include 8.5 deprecation for passing null to use the last opened directory.
This commit is contained in:
Gina Peter Banyard
2025-11-27 19:40:35 +00:00
committed by GitHub
parent 480cc8a9ef
commit 5c7e9e1351
4 changed files with 221 additions and 217 deletions

View File

@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- splitted from ./en/functions/dir.xml, last change in rev 1.2 -->
<refentry xml:id="function.closedir" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>closedir</refname>
@@ -13,61 +11,84 @@
<type>void</type><methodname>closedir</methodname>
<methodparam choice="opt"><type class="union"><type>resource</type><type>null</type></type><parameter>dir_handle</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
<simpara>
Closes the directory stream indicated by
<parameter>dir_handle</parameter>. The stream must have previously
been opened by <function>opendir</function>.
</para>
<parameter>dir_handle</parameter>.
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>dir_handle</parameter></term>
<listitem>
<para>
The directory handle <type>resource</type> previously opened
with <function>opendir</function>. If the directory handle is
not specified, the last link opened by <function>opendir</function>
is assumed.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<variablelist>
<varlistentry>
<term><parameter>dir_handle</parameter></term>
<listitem>
<simpara>
A directory handle <type>resource</type> previously opened
with <function>opendir</function>.
If <parameter>dir_handle</parameter> is &null; the last handle opened
using <function>opendir</function> will be used.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<simpara>
&return.void;
</para>
</simpara>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.5.0</entry>
<entry>
Using &null; for <parameter>dir_handle</parameter> is now deprecated.
Instead, the last opened directory handle should be explicitly provided.
</entry>
</row>
<row>
<entry>8.0.0</entry>
<entry>
<parameter>dir_handle</parameter> is now nullable.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>closedir</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$dir = "/etc/php5/";
<simpara>
For a complete example refer to the <function>opendir</function>
documentation.
</simpara>
</refsect1>
// Open a known directory, read directory into variable and then close
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
$directory = readdir($dh);
closedir($dh);
}
}
?>
]]>
</programlisting>
</example>
</para>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>opendir</function></member>
<member><function>readdir</function></member>
<member><function>rewinddir</function></member>
<member><function>dir</function></member>
<member><function>is_dir</function></member>
<member><function>glob</function></member>
<member><function>scandir</function></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file

View File

@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- splitted from ./en/functions/dir.xml, last change in rev 1.2 -->
<refentry xml:id="function.opendir" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>opendir</refname>
@@ -14,55 +12,53 @@
<methodparam><type>string</type><parameter>directory</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>resource</type><type>null</type></type><parameter>context</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
<simpara>
Opens up a directory handle to be used in subsequent
<function>closedir</function>, <function>readdir</function>, and
<function>rewinddir</function> calls.
</para>
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>directory</parameter></term>
<listitem>
<para>
The directory path that is to be opened
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>context</parameter></term>
<listitem>
<para>
For a description of the <parameter>context</parameter> parameter,
refer to <link linkend="ref.stream">the streams section</link> of
the manual.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<variablelist>
<varlistentry>
<term><parameter>directory</parameter></term>
<listitem>
<simpara>
The directory path to open.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>context</parameter></term>
<listitem>
<simpara>
For a description of the <parameter>context</parameter> parameter,
refer to <link linkend="ref.stream">the streams section</link> of
the manual.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Returns a directory handle <type>resource</type> on success,
<simpara>
Returns a directory handle on success,
&return.falseforfailure;
</para>
</simpara>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
&fs.emits.warning.on.failure;
<para>
<simpara>
This may happen if <parameter>directory</parameter> is not a valid directory,
the directory can not be opened due to permission restrictions,
or due to filesystem errors.
</para>
</simpara>
</refsect1>
<refsect1 role="changelog">
@@ -89,49 +85,65 @@
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>opendir</function> example</title>
<programlisting role="php">
<example>
<title>
List all entries in a directory, skipping the special <literal>.</literal>
and <literal>..</literal> directories
</title>
<simpara>
Because file and directory names can be strings that PHP considers "falsy"
(e.g. a directory named <literal>"0"</literal>) and
<function>readdir</function> returns &false; when it has read all entries
in a directory one needs to use the <literal>===</literal>
<link linkend="language.operators.comparison">comparison operator</link>
to properly distinguish between a directory entry whose name is "falsy"
and having read all entries of the directory.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
$dir = "/etc/php5/";
// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
if ($handle = opendir('/path/to/files')) {
echo "Entries:\n";
/* Correctly handling directory entries that may be considered falsy */
while (false !== ($entry = readdir($handle))) {
if ($entry === '.' || $entry === '..') {
continue;
}
closedir($dh);
echo "$entry\n";
}
closedir($handle);
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
filename: . : filetype: dir
filename: .. : filetype: dir
filename: apache : filetype: dir
filename: cgi : filetype: dir
filename: cli : filetype: dir
Entries:
base
en
fr
output.md
test.php
]]>
</screen>
</example>
</para>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>is_dir</function></member>
<member><function>readdir</function></member>
<member><function>dir</function></member>
</simplelist>
</para>
<simplelist>
<member><function>readdir</function></member>
<member><function>rewinddir</function></member>
<member><function>closedir</function></member>
<member><function>dir</function></member>
<member><function>is_dir</function></member>
<member><function>glob</function></member>
<member><function>scandir</function></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file

View File

@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- splitted from ./en/functions/dir.xml, last change in rev 1.2 -->
<refentry xml:id="function.readdir" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>readdir</refname>
@@ -13,37 +11,35 @@
<type class="union"><type>string</type><type>false</type></type><methodname>readdir</methodname>
<methodparam choice="opt"><type class="union"><type>resource</type><type>null</type></type><parameter>dir_handle</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Returns the name of the next entry in the directory. The
entries are returned in the order in which they are stored by
<simpara>
Returns the name of the next entry in the directory.
The entries are returned in the order in which they are stored by
the filesystem.
</para>
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>dir_handle</parameter></term>
<listitem>
<para>
The directory handle <type>resource</type> previously opened
with <function>opendir</function>. If the directory handle is
not specified, the last link opened by <function>opendir</function>
is assumed.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<variablelist>
<varlistentry>
<term><parameter>dir_handle</parameter></term>
<listitem>
<simpara>
A directory handle <type>resource</type> previously opened
with <function>opendir</function>.
If <parameter>dir_handle</parameter> is &null; the last handle opened
using <function>opendir</function> will be used.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Returns the entry name on success&return.falseforfailure;.
</para>
<simpara>
Returns the entry name on success,&return.falseforfailure;.
</simpara>
&return.falseproblem;
</refsect1>
@@ -58,6 +54,13 @@
</row>
</thead>
<tbody>
<row>
<entry>8.5.0</entry>
<entry>
Using &null; for <parameter>dir_handle</parameter> is now deprecated.
Instead, the last opened directory handle should be explicitly provided.
</entry>
</row>
<row>
<entry>8.0.0</entry>
<entry>
@@ -71,77 +74,23 @@
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>List all entries in a directory</title>
<para>
Please note the fashion in which <function>readdir</function>'s
return value is checked in the examples below. We are explicitly
testing whether the return value is identical to (equal to and of
the same type as--see <link linkend="language.operators.comparison">Comparison
Operators</link> for more information) &false; since otherwise,
any directory entry whose name evaluates to &false; will stop the
loop (e.g. a directory named "0").
</para>
<programlisting role="php">
<![CDATA[
<?php
if ($handle = opendir('/path/to/files')) {
echo "Directory handle: $handle\n";
echo "Entries:\n";
/* This is the correct way to loop over the directory. */
while (false !== ($entry = readdir($handle))) {
echo "$entry\n";
}
/* This is the WRONG way to loop over the directory. */
while ($entry = readdir($handle)) {
echo "$entry\n";
}
closedir($handle);
}
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>
List all entries in the current directory and strip out <literal>.</literal>
and <literal>..</literal>
</title>
<programlisting role="php">
<![CDATA[
<?php
if ($handle = opendir('.')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
echo "$entry\n";
}
}
closedir($handle);
}
?>
]]>
</programlisting>
</example>
</para>
<simpara>
For a complete example refer to the <function>opendir</function>
documentation.
</simpara>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>is_dir</function></member>
<member><function>glob</function></member>
<member><function>opendir</function></member>
<member><function>scandir</function></member>
</simplelist>
</para>
<simplelist>
<member><function>opendir</function></member>
<member><function>rewinddir</function></member>
<member><function>closedir</function></member>
<member><function>dir</function></member>
<member><function>is_dir</function></member>
<member><function>glob</function></member>
<member><function>scandir</function></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file

View File

@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- splitted from ./en/functions/dir.xml, last change in rev 1.2 -->
<refentry xml:id="function.rewinddir" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>rewinddir</refname>
@@ -13,37 +11,34 @@
<type>void</type><methodname>rewinddir</methodname>
<methodparam choice="opt"><type class="union"><type>resource</type><type>null</type></type><parameter>dir_handle</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Resets the directory stream indicated by
<parameter>dir_handle</parameter> to the beginning of the
directory.
</para>
<simpara>
Resets the directory stream indicated by <parameter>dir_handle</parameter>
to the beginning of the directory.
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>dir_handle</parameter></term>
<listitem>
<para>
The directory handle <type>resource</type> previously opened
with <function>opendir</function>. If the directory handle is
not specified, the last link opened by <function>opendir</function>
is assumed.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<variablelist>
<varlistentry>
<term><parameter>dir_handle</parameter></term>
<listitem>
<simpara>
A directory handle <type>resource</type> previously opened
with <function>opendir</function>.
If <parameter>dir_handle</parameter> is &null; the last handle opened
using <function>opendir</function> will be used.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<simpara>
&return.void;
</para>
</simpara>
</refsect1>
<refsect1 role="changelog">
@@ -57,6 +52,13 @@
</row>
</thead>
<tbody>
<row>
<entry>8.5.0</entry>
<entry>
Using &null; for <parameter>dir_handle</parameter> is now deprecated.
Instead, the last opened directory handle should be explicitly provided.
</entry>
</row>
<row>
<entry>8.0.0</entry>
<entry>
@@ -68,6 +70,26 @@
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<simpara>
For a complete example refer to the <function>opendir</function>
documentation.
</simpara>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>opendir</function></member>
<member><function>readdir</function></member>
<member><function>closedir</function></member>
<member><function>dir</function></member>
<member><function>is_dir</function></member>
<member><function>glob</function></member>
<member><function>scandir</function></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables: