com doc/zh: Add spaces between Chinese and English words: language/namespaces.xml
[email protected] (Dai Jie) Sat, 16 Jan 2021 09:45:03 +0000
| Newsgroups | php.doc.zh |
|---|---|
| Message-ID | <[email protected]> |
Commit: 3310366179e6e12dcf66a57ce6db9a438b697021 Author: daijie <[email protected]> Sat, 16 Jan 2021 17:45:03 +0800 Parents: 6809da062606d476e4a75de7a2f856198fede568 Branches: master Link: http://git.php.net/?p=doc/zh.git;a=commitdiff;h=3310366179e6e12dcf66a57ce6db9a438b697021 Log: Add spaces between Chinese and English words Changed paths: M language/namespaces.xml
diff_3310366179e6e12dcf66a57ce6db9a438b697021.txt
(text/plain, 13.5 KB)
diff --git a/language/namespaces.xml b/language/namespaces.xml
index 90661c9d..884f33bb 100644
--- a/language/namespaces.xml
+++ b/language/namespaces.xml
@@ -11,14 +11,14 @@
<?phpdoc print-version-for="namespaces"?>
<simpara>
什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件
- <literal>foo.txt</literal> 可以同时在目录<literal>/home/greg</literal> 和
+ <literal>foo.txt</literal> 可以同时在目录 <literal>/home/greg</literal> 和
<literal>/home/other</literal> 中存在,但在同一个目录中不能存在两个
<literal>foo.txt</literal> 文件。另外,在目录 <literal>/home/greg</literal> 外访问
<literal>foo.txt</literal> 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到
<literal>/home/greg/foo.txt</literal>。这个原理应用到程序设计领域就是命名空间的概念。
</simpara>
<simpara>
- 在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
+ 在 PHP 中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
</simpara>
<para>
<orderedlist>
@@ -64,7 +64,7 @@ echo constant($d); // 参考 "命名空间和动态语言特征" 小节
</example>
<note>
<para>
- 名为<literal>PHP</literal>或<literal>php</literal>的命名空间,以及以这些名字开头的命名空间(例如<literal>PHP\Classes</literal>)被保留用作语言内核使用,而不应该在用户空间的代码中使用。
+ 名为 <literal>PHP</literal> 或 <literal>php</literal> 的命名空间,以及以这些名字开头的命名空间(例如<literal>PHP\Classes</literal>)被保留用作语言内核使用,而不应该在用户空间的代码中使用。
</para>
</note>
</sect1>
@@ -73,10 +73,10 @@ echo constant($d); // 参考 "命名空间和动态语言特征" 小节
<title>定义命名空间</title>
<?phpdoc print-version-for="namespaces"?>
<para>
- 虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和traits)、接口、函数和常量。
+ 虽然任意合法的 PHP 代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和 trait)、接口、函数和常量。
</para>
<para>
- 命名空间通过关键字<literal>namespace</literal>
+ 命名空间通过关键字 <literal>namespace</literal>
来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间,除了一个以外:<xref linkend="control-structures.declare" />关键字。
<example>
<title>声明单个命名空间</title>
@@ -109,7 +109,7 @@ namespace MyProject; // 致命错误 - 命名空间必须是程序脚本的第
</example>
</para>
<para>
- 另外,与PHP其它的语言特征不同,同一个命名空间可以定义在多个文件中,即允许将同一个命名空间的内容分割存放在不同的文件中。
+ 另外,与 PHP 其它的语言特征不同,同一个命名空间可以定义在多个文件中,即允许将同一个命名空间的内容分割存放在不同的文件中。
</para>
</sect1>
<sect1 xml:id="language.namespaces.nested">
@@ -133,8 +133,8 @@ function connect() { /* ... */ }
]]>
</programlisting>
</example>
- 上面的例子创建了常量<literal>MyProject\Sub\Level\CONNECT_OK</literal>,类
- <literal>MyProject\Sub\Level\Connection</literal>和函数
+ 上面的例子创建了常量 <literal>MyProject\Sub\Level\CONNECT_OK</literal>,类
+ <literal>MyProject\Sub\Level\Connection</literal> 和函数
<literal>MyProject\Sub\Level\connect</literal>。
</para>
</sect1>
@@ -223,7 +223,7 @@ echo MyProject\Connection::start();
</example>
</para>
<para>
- 除了开始的declare语句外,命名空间的括号外不得有任何PHP代码。
+ 除了开始的 declare 语句外,命名空间的括号外不得有任何 PHP 代码。
<example>
<title>定义多个命名空间和不包含在命名空间中的代码</title>
<programlisting role="php">
@@ -258,21 +258,21 @@ echo MyProject\Connection::start();
<orderedlist>
<listitem>
<simpara>
- 相对文件名形式如<literal>foo.txt</literal>。它会被解析为
+ 相对文件名形式如 <literal>foo.txt</literal>。它会被解析为
<literal>currentdirectory/foo.txt</literal>,其中 currentdirectory
表示当前目录。因此如果当前目录是
- <literal>/home/foo</literal>,则该文件名被解析为<literal>/home/foo/foo.txt</literal>。
+ <literal>/home/foo</literal>,则该文件名被解析为 <literal>/home/foo/foo.txt</literal>。
</simpara>
</listitem>
<listitem>
<simpara>
- 相对路径名形式如<literal>subdirectory/foo.txt</literal>。它会被解析为
+ 相对路径名形式如 <literal>subdirectory/foo.txt</literal>。它会被解析为
<literal>currentdirectory/subdirectory/foo.txt</literal>。
</simpara>
</listitem>
<listitem>
<simpara>
- 绝对路径名形式如<literal>/main/foo.txt</literal>。它会被解析为<literal>/main/foo.txt</literal>。
+ 绝对路径名形式如 <literal>/main/foo.txt</literal>。它会被解析为 <literal>/main/foo.txt</literal>。
</simpara>
</listitem>
</orderedlist>
@@ -286,7 +286,7 @@ echo MyProject\Connection::start();
<literal>currentnamespace</literal>,foo 将被解析为
<literal>currentnamespace\foo</literal>。如果使用 foo
的代码是全局的,不包含在任何命名空间中的代码,则 foo
- 会被解析为<literal>foo</literal>。
+ 会被解析为 <literal>foo</literal>。
</simpara>
<simpara>
警告:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。详情参见
@@ -301,7 +301,7 @@ echo MyProject\Connection::start();
<literal>currentnamespace</literal>,则 foo 会被解析为
<literal>currentnamespace\subnamespace\foo</literal>。如果使用
foo 的代码是全局的,不包含在任何命名空间中的代码,foo
- 会被解析为<literal>subnamespace\foo</literal>。
+ 会被解析为 <literal>subnamespace\foo</literal>。
</simpara>
</listitem>
<listitem>
@@ -347,9 +347,9 @@ class foo
}
/* 非限定名称 */
-foo(); // 解析为 Foo\Bar\foo resolves to function Foo\Bar\foo
-foo::staticmethod(); // 解析为类 Foo\Bar\foo的静态方法staticmethod。resolves to class Foo\Bar\foo, method staticmethod
-echo FOO; // resolves to constant Foo\Bar\FOO
+foo(); // 解析为函数 Foo\Bar\foo
+foo::staticmethod(); // 解析为类 Foo\Bar\foo 的静态方法 staticmethod
+echo FOO; // 解析为常量 Foo\Bar\FOO
/* 限定名称 */
subnamespace\foo(); // 解析为函数 Foo\Bar\subnamespace\foo
@@ -473,14 +473,14 @@ echo constant('namespacename\constname'), "\n"; // also prints namespaced
</para>
</sect1>
<sect1 xml:id="language.namespaces.nsconstants">
- <title>namespace关键字和__NAMESPACE__常量</title>
+ <title>namespace 关键字和 __NAMESPACE__ 常量</title>
<?phpdoc print-version-for="namespaces"?>
<para>
PHP支持两种抽象的访问当前命名空间内部元素的方法,<constant>__NAMESPACE__</constant>
- 魔术常量和<literal>namespace</literal>关键字。
+ 魔术常量和 <literal>namespace</literal> 关键字。
</para>
<para>
- 常量<constant>__NAMESPACE__</constant>的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。
+ 常量 <constant>__NAMESPACE__</constant> 的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。
<example>
<title>__NAMESPACE__ 示例, 在命名空间中的代码</title>
<programlisting role="php">
@@ -506,7 +506,7 @@ echo '"', __NAMESPACE__, '"'; // 输出 ""
</example>
常量 <constant>__NAMESPACE__</constant> 在动态创建名称时很有用,例如:
<example>
- <title>使用__NAMESPACE__动态创建名称</title>
+ <title>使用 __NAMESPACE__ 动态创建名称</title>
<programlisting role="php">
<![CDATA[
<?php
@@ -526,7 +526,7 @@ function get($classname)
关键字 <literal>namespace</literal> 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的
<literal>self</literal> 操作符。
<example>
- <title>namespace操作符,命名空间中的代码</title>
+ <title>namespace 操作符,命名空间中的代码</title>
<programlisting role="php">
<![CDATA[
<?php
@@ -547,7 +547,7 @@ $b = namespace\CONSTANT; // assigns value of constant MyProject\CONSTANT to $b
</programlisting>
</example>
<example>
- <title>namespace操作符, 全局代码</title>
+ <title>namespace 操作符, 全局代码</title>
<programlisting role="php">
<![CDATA[
<?php
@@ -571,12 +571,12 @@ $b = namespace\CONSTANT; // assigns value of constant CONSTANT to $b
unix 文件系统中可以创建对其它的文件或目录的符号连接。
</para>
<para>
- 所有支持命名空间的PHP版本支持三种别名或导入方式:为类名称使用别名、为接口使用别名或为命名空间名称使用别名。PHP 5.6开始允许导入函数或常量或者为它们设置别名。
+ 所有支持命名空间的 PHP 版本支持三种别名或导入方式:为类名称使用别名、为接口使用别名或为命名空间名称使用别名。PHP 5.6 开始允许导入函数或常量或者为它们设置别名。
</para>
<para>
在PHP中,别名是通过操作符 <literal>use</literal> 来实现的. 下面是一个使用所有可能的五种导入方式的例子:
<example>
- <title>使用use操作符导入/使用别名</title>
+ <title>使用 use 操作符导入/使用别名</title>
<programlisting role="php">
<![CDATA[
<?php
@@ -610,13 +610,13 @@ echo CONSTANT; // echoes the value of My\Full\CONSTANT
</programlisting>
</example>
注意对命名空间中的名称(包含命名空间分隔符的完全限定名称如
- <literal>Foo\Bar</literal>以及相对的不包含命名空间分隔符的全局名称如
+ <literal>Foo\Bar</literal> 以及相对的不包含命名空间分隔符的全局名称如
<literal>FooBar</literal>)来说,前导的反斜杠是不必要的也不推荐的,因为导入的名称必须是完全限定的,不会根据当前的命名空间作相对解析。
</para>
<para>
- 为了简化操作,PHP还支持在一行中使用多个use语句
+ 为了简化操作,PHP 还支持在一行中使用多个 use 语句
<example>
- <title>通过use操作符导入/使用别名,一行中包含多个use语句</title>
+ <title>通过 use 操作符导入/使用别名,一行中包含多个 use 语句</title>
<programlisting role="php">
<![CDATA[
<?php
@@ -753,8 +753,6 @@ $c = new ArrayObject; // 致命错误, 找不到 A\B\C\ArrayObject 类
<para>
对于函数和常量来说,如果当前命名空间中不存在该函数或常量,PHP
会退而使用全局空间中的函数或常量。
- For functions and constants, PHP will fall back to global functions or constants
- if a namespaced function or constant does not exist.
<example>
<title>命名空间中后备的全局函数/常量</title>
<programlisting role="php">
@@ -792,7 +790,7 @@ if (is_array('hi')) { // 输出 "is not array"
<variablelist>
<title>命名空间名称定义</title>
<varlistentry>
- <term>非限定名称Unqualified name</term>
+ <term>非限定名称 Unqualified name</term>
<listitem>
<para>
名称中不包含命名空间分隔符的标识符,例如 <literal>Foo</literal>
@@ -800,7 +798,7 @@ if (is_array('hi')) { // 输出 "is not array"
</listitem>
</varlistentry>
<varlistentry>
- <term>限定名称Qualified name</term>
+ <term>限定名称 Qualified name</term>
<listitem>
<para>
名称中含有命名空间分隔符的标识符,例如 <literal>Foo\Bar</literal>
@@ -808,7 +806,7 @@ if (is_array('hi')) { // 输出 "is not array"
</listitem>
</varlistentry>
<varlistentry>
- <term>完全限定名称Fully qualified name</term>
+ <term>完全限定名称 Fully qualified name</term>
<listitem>
<para>
名称中包含命名空间分隔符,并以命名空间分隔符开始的标识符,例如 <literal>\Foo\Bar</literal>。
@@ -870,7 +868,7 @@ if (is_array('hi')) { // 输出 "is not array"
<simpara>
在命名空间(例如<literal>A\B</literal>)内部对非限定名称或限定名称类(非完全限定名称)的调用是在运行时解析的。下面是调用
<literal>new C()</literal> 及 <literal>new D\E()</literal> 的解析过程:
- <literal> new C()</literal>的解析:
+ <literal> new C()</literal> 的解析:
</simpara>
<orderedlist>
<listitem>