diff --git a/zh/contributing/backwards-compatibility.rst b/zh/contributing/backwards-compatibility.rst index 95106ed170..683b4b3b9e 100644 --- a/zh/contributing/backwards-compatibility.rst +++ b/zh/contributing/backwards-compatibility.rst @@ -1,23 +1,27 @@ 向后兼容性指南 -############################# +############## -确保您可以轻松顺利地升级您的应用程序,这对我们是很重要的。这就是为什么我们只在主要版本里程碑才会打破兼容性。你可能熟悉 -`语义版本控制 `_,这就是我们在所有的 CakePHP 项目中使用的通用准则。总之,语义版本控制意味着只有主要版本(比 -如2.0,3.0,4.0)可以打破向后兼容性。次要版本(比如2.1,3.1,3.2)可能会引入新的功能,但不能破坏兼容性。错误修复版本(比如2.1.2, -3.0.1)不增加新的功能,但仅修复漏洞或改善性能。 +确保您可以轻松顺利地升级您的应用程序,这对我们是很重要的。这就是为什么我们只在主 +要版本里程碑才会打破兼容性。你可能熟悉 `语义版本控制 `_ ,这 +就是我们在所有的 CakePHP 项目中使用的通用准则。总之,语义版本控制意味着只有主要版 +本(比如2.0,3.0,4.0)可以打破向后兼容性。次要版本(比如2.1,3.1,3.2)可能会引入新 +的功能,但不能破坏兼容性。错误修复版本(比如2.1.2,3.0.1)不增加新的功能,但仅修复 +漏洞或改善性能。 .. note:: CakePHP 从2.0.0开始遵循语义版本控制。这些规则不适用于1.x。 -为了澄清在每个版本层次可以预期到哪些变化,我们为使用 CakePHP 的开发人员以及开发 CakePHP 的开发人员准备了更详细的信息,以便于建立预期在次要版本 -中能做什么。主要版本根据需要可以有任意多个打破兼容性的变化。 +为了澄清在每个版本层次可以预期到哪些变化,我们为使用 CakePHP 的开发人员以及开发 +CakePHP 的开发人员准备了更详细的信息,以便于建立预期在次要版本中能做什么。主要版 +本根据需要可以有任意多个打破兼容性的变化。 升级指南 -================ +======== -对每个主要和次要版本,CakePHP 开发团队会提供一份升级指南。这些指南说明每一个版本中的新功能及任何打破兼容性的变化,可以在 cookbook 的 -:doc:`/appendices` 一节中看到。 +对每个主要和次要版本,CakePHP 开发团队会提供一份升级指南。这些指南说明每一个版本 +中的新功能及任何打破兼容性的变化,可以在 cookbook 的 :doc:`/appendices` 一节中看 +到。 使用 CakePHP ============= @@ -25,21 +29,25 @@ 如果你使用 CakePHP 来构建应用程序,下面的指南说明了你可以预期的稳定性。 接口 ----------- +---- -除了主要版本,CakePHP 提供的接口的任何现有的方法**不**会改变。可能会增加新的方法,但不会改变任何现有的方法。 +除了主要版本,CakePHP 提供的接口的任何现有的方法 **不** 会改变。可能会增加新的方 +法,但不会改变任何现有的方法。 类 -------- +-- -CakePHP 提供的类可以实例化,并有它们的公共方法和属性,可以被应用代码使用,除了主要版本,(其他的版本)可以保证向后兼容性。 +CakePHP 提供的类可以实例化,并且它们的公共方法和属性,可以被应用代码使用,除了主 +要版本,(其他的版本)可以保证向后兼容性。 .. note:: - 一些 CakePHP 的类标有``@internal`` API 文档标签(*API doc tag*)。这些类**不**稳定,不能保证向后兼容性。 + 一些 CakePHP 的类标有 ``@internal`` API 文档标签(*API doc tag*)。这些类 + **不** 稳定,不能保证向后兼容性。 -在次要版本中,类可以添加新方法,已有的方法可以添加新的参数。任何新参数必须有缺省值,但如果你用不同的签名重载方法,你可能会遇到致命错误(*fatal -errors*)。添加了新参数的方法,会在那个版本的升级指南中说明。 +在次要版本中,类可以添加新方法,已有的方法可以添加新的参数。任何新参数必须有缺省 +值,但如果你用不同的签名重载方法,你可能会遇到致命错误(*fatal errors*)。添加了新 +参数的方法,会在那个版本的升级指南中说明。 下面的表格列出一些用例,以及你从 CakePHP 可以期望得到的兼容性: @@ -78,7 +86,7 @@ errors*)。添加了新参数的方法,会在那个版本的升级指南中说 +-------------------------------+--------------------------+ 开发 CakePHP -================== +============ 如果你帮助改进 CakePHP,在添加/修改功能时,请记住下面的指南: diff --git a/zh/contributing/cakephp-coding-conventions.rst b/zh/contributing/cakephp-coding-conventions.rst index 48b676eca6..84205e6874 100644 --- a/zh/contributing/cakephp-coding-conventions.rst +++ b/zh/contributing/cakephp-coding-conventions.rst @@ -5,8 +5,9 @@ CakePHP 开发人员将使用下面的编码规范。 我们建议其他开发Cake组成部分的人员也应当遵循同样的规范。 -你可以使用`CakePHP Code Sniffer `_来检查 -你的代码是否遵循了必要的规范。 +你可以使用 +`CakePHP Code Sniffer `_ 来检查你 +的代码是否遵循了必要的规范。 添加新特性 ========== @@ -50,8 +51,8 @@ CakePHP 开发人员将使用下面的编码规范。 控制结构 ======== -控制结构是"``if``","``for``","``foreach``","``while``","``switch``"这些。下面是使用"``if``"的一 -个例子:: +控制结构是"``if``"、"``for``"、"``foreach``"、"``while``"、"``switch``"这些。下面 +是使用"``if``"的一个例子:: if ((expr_1) || (expr_2)) { // action_1; @@ -61,10 +62,12 @@ CakePHP 开发人员将使用下面的编码规范。 // default_action; } -* 在控制结构中,在第一个括号之前应该有一个空格,在最后一个括号和开始的大括号之间也应该有一个空格。 -* 在控制结构中总是使用大括号,即使他们是不必要的。这会提高代码的可读性,也导致较少的逻辑错误。 -* 开始的大括号应与控制结构放在同一行上。结束的大括号应该新起一行,并且与控制结构应该有相同的缩进级别。包括在大括号中的语句应该新起一行,其代码也应该再缩进一 - 层。 +* 在控制结构中,在第一个括号之前应该有一个空格,在最后一个括号和开始的大括号之间 + 也应该有一个空格。 +* 在控制结构中总是使用大括号,即使他们是不必要的。这会提高代码的可读性,也导致较 + 少的逻辑错误。 +* 开始的大括号应与控制结构放在同一行上。结束的大括号应该新起一行,并且与控制结构 + 应该有相同的缩进级别。包括在大括号中的语句应该新起一行,其代码也应该再缩进一层。 * 在控制结构中不应该使用内嵌赋值(*inline assignment*)。 :: @@ -95,8 +98,9 @@ CakePHP 开发人员将使用下面的编码规范。 三元运算符 ---------- -当整个三元运算可以放在一行之内时,三元运算符是允许的。更长的三元运算就应该分成``if else``语句。三元运算符绝不允许嵌套。括号虽然不必须,但是可以用在三 -元运算的条件检查之外,使其更清晰:: +当整个三元运算可以放在一行之内时,三元运算符是允许的。更长的三元运算就应该分成 +``if else`` 语句。三元运算符绝对不允许嵌套。括号虽然不必须,但是可以用在三元运算 +的条件检查之外,使其更清晰:: //很好,简单,易读 $variable = isset($options['variable']) ? $options['variable'] : true; @@ -108,8 +112,9 @@ CakePHP 开发人员将使用下面的编码规范。 视图文件 -------- -在视图文件(.ctp files)中,开发人员使用关键词控制结构。关键词控制结构在复杂的视图文件中更容易阅读。控制结构可以放在一段大的PHP代码段落中,也可以放 -在单独的 PHP 标签中:: +在视图文件(.ctp files)中,开发人员使用关键词控制结构。关键词控制结构在复杂的视图 +文件中更容易阅读。控制结构可以放在一段大的 PHP 代码段落中,也可以放在单独的 PHP +标签中:: `_ * `@copyright `_ * `@deprecated `_ - 使用格式``@version ``,其中``version``和``description``是必须的。 + 使用格式 ``@version `` ,其中 ``version``和``description`` + 是必须的。 * `@example `_ * `@ignore `_ * `@internal `_ @@ -239,7 +248,8 @@ CakePHP 开发人员将使用下面的编码规范。 * `@since `_ * `@version `_ -PhpDoc 标签非常类似于 Java 中的 JavaDoc 标签。标签只有出现在 DocBlock 行的开头才会起作用, 例如:: +PhpDoc 标签非常类似于 Java 中的 JavaDoc 标签。标签只有出现在文档块(*DocBlock*)行 +的开头才会起作用, 例如:: /** * Tag example. @@ -273,7 +283,7 @@ PhpDoc 标签非常类似于 Java 中的 JavaDoc 标签。标签只有出现在 变量类型 -------- -DocBlock 中使用的变量类型: +文档块(*DocBlock*)中使用的变量类型: 类型 描述 @@ -299,13 +309,13 @@ resource callable 可调用的函数。 -你也可以用竖线(pipe char)组合多个类型:: +你也可以用竖线(*pipe char*)组合多个类型:: int|bool -对两种以上的类型,通常最好使用``mixed``。 +对两种以上的类型,通常最好使用 ``mixed`` 。 -当返回对象本身时,例如为了实现链式方法,应当使用``$this``:: +当返回对象本身时,例如为了实现链式方法,应当使用 ``$this`` :: /** * Foo function. @@ -328,7 +338,8 @@ callable require_once 'ClassFileName.php'; require_once $class; -当包括类或者库的文件时, 总是只使用`require\_once `_函数。 +当包括类或者库的文件时, 总是只使用 +`require\_once `_ 函数。 PHP 标签 ======== @@ -341,7 +352,7 @@ PHP 标签 函数 ---- -所有函数名都应为 camelBack:: +所有函数名都应为 camelBack 形式:: function longFunctionName() { } @@ -349,7 +360,7 @@ PHP 标签 类 -- -类名应为 CamelCase, 例如:: +类名应为驼峰命名法(*CamelCase*), 例如:: class ExampleClass { } @@ -357,8 +368,9 @@ PHP 标签 变量 ---- -变量名应当尽可能具有描述性, 但同时越短越好。普通变量应当以小写字母开头,如果含有多个词, 则应当为 camelBack。引用对象的变量的变量名应当以大写字母开 -头,并且与对象所属的类应当以某种方式相关联。例如:: +变量名应当尽可能具有描述性, 但同时越短越好。普通变量应当以小写字母开头,如果含 +有多个词, 则应当为 camelBack 形式。引用对象变量的变量名应当以大写字母开头,并且 +与对象所属的类应当以某种方式相关联。例如:: $user = 'John'; $users = array('John', 'Hans', 'Arne'); @@ -368,7 +380,8 @@ PHP 标签 成员的可见范围 -------------- -方法和变量应当使用 PHP5 的 private 和 protected 关键字。另外,protected 的方法和变量应当以一个下划线开头(``_``)。例如:: +方法和变量应当使用 PHP5 的 private 和 protected 关键字。另外,protected 的方法和 +变量应当以一个下划线开头(``_``)。例如:: class A { protected $_iAmAProtectedVariable; @@ -388,24 +401,26 @@ PHP 标签 } } -不过,尽可能避免私有方法或者变量,而使用保护(protected)的(方法或者变量)。后者可以被子类访问或者改变,而私有的(方法或者变量)阻止了扩展或重用。私有 -也使测试更加困难。 +不过,尽可能避免私有方法或者变量,而使用保护(protected)的(方法或者变量)。后者可以 +被子类访问或者改变,而私有的(方法或者变量)阻止了扩展或重用。私有也使测试更加困难。 示例地址 -------- -所有示例用的网址和电子邮箱地址应当使用"example.com", "example.org"和"example.net", 例如: +所有示例用的网址和电子邮箱地址应当使用"example.com"、"example.org"和"example.net", +例如: * 电子邮箱地址: someone@example.com * 网址: `http://www.example.com `_ * FTP: `ftp://ftp.example.com `_ -"example.com" 域名已为此目的而保留(参见:rfc:`2606`), 建议在文档中或者作为例子使用。 +"example.com" 域名已为此目的而保留(参见 :rfc:`2606` ),建议在文档中或者作为例子使 +用。 文件 ---- -不包含类的文件, 其文件名应当小写, 并且以下划线分隔单词, 例如:: +不包含类的文件,其文件名应当小写,并且以下划线分隔单词,例如:: long_file_name.php @@ -429,7 +444,8 @@ PHP 标签 (object) 强制转换成对象类型。 -在适用时,请使用``(int)$var``,而不是``intval($var)``,使用``(float)$var``,而不是``floatval($var)``。 +在适用时,请使用 ``(int)$var``,而不是 ``intval($var)``,使用 ``(float)$var``,而 +不是 ``floatval($var)``。 常量 ---- diff --git a/zh/contributing/code.rst b/zh/contributing/code.rst index 496c02332a..b3e6d2d16d 100644 --- a/zh/contributing/code.rst +++ b/zh/contributing/code.rst @@ -1,8 +1,8 @@ 代码 #### -补丁和拉取请求是为 CakePHP 贡献代码的一种很棒的方式。拉取请求可以在 GitHub 中创建,是比附在问题报告的评论(*ticket comments*) -中的补丁更受青睐的方式。 +补丁和拉取请求是为 CakePHP 贡献代码的一种很棒的方式。拉取请求可以在 GitHub 中创建, +是比附在问题报告的评论(*ticket comments*)中的补丁更受青睐的方式。 初始设置 ======== @@ -20,11 +20,12 @@ .. note:: - 如果你对 Git 完全陌生,我们强烈建议你阅读优秀且免费的`ProGit `_这本书。 + 如果你对 Git 完全陌生,我们强烈建议你阅读优秀且免费的 + `ProGit `_ 这本书。 从 GitHub 获得一份 CakePHP 源程序的克隆(*clone*)。 -* 如果你没有`GitHub `_的账号,创建一个。 +* 如果你没有 `GitHub `_ 的账号,创建一个。 * 点击**Fork**按键,复制(*fork*)一份 `CakePHP repository `_ 的源码。 @@ -32,22 +33,26 @@ git clone git@github.com:你的账号/cakephp.git -把原始的 CakePHP 仓库添加为远程仓库(*remote repository*)。以后你会使用它来抓取 CakePHP 仓库的改动,保持与 CakePHP -仓库一致:: +把原始的 CakePHP 仓库添加为远程仓库(*remote repository*)。以后你会使用它来抓取 +CakePHP 仓库的改动,保持与 CakePHP 仓库一致:: cd cakephp git remote add upstream git://github.com/cakephp/cakephp.git -现在你已经搭建好了 CakePHP 的环境。你应该能够定义一个``$test`` :ref:`数据库连接 `,并且 +现在你已经搭建好了 CakePHP 的环境。你应该能够定义一个 ``$test`` +:ref:`数据库连接 `,并且 :ref:`运行所有的测试 ` 。 制作补丁 ======== -每次当你要修复一个臭虫(*bug*)、增加一个特性或做一个改进时,创建一个主题分支(*topic branch*)。 +每次当你要修复一个臭虫(*bug*)、增加一个特性或做一个改进时,创建一个主题分支 +(*topic branch*)。 -你创建的分支,应根据你的修复/改进所适用的版本。例如,如果你正在修复``2.3``版本中的一个臭虫,那么你就应当以``2.3``的分支为基础来创建你的分支。如果 -你做的改动是对当前的稳定版本的一个臭虫的修复,你就应当使用``master``分支。这样以后合并改动时就会简单多了:: +你创建的分支,应根据你的修复/改进所适用的版本。例如,如果你正在修复 ``2.3`` 版本 +中的一个臭虫,那么你就应当以 ``2.3`` 的分支为基础来创建你的分支。如果你做的改动是 +对当前的稳定版本的一个臭虫的修复,你就应当使用 ``master`` 分支。这样以后合并改动 +时就会简单多了:: # fixing a bug on 2.3 git fetch upstream @@ -55,11 +60,13 @@ .. tip:: - 作为一个良好的习惯,为你的分支起一个描述性的名称,可以引用问题跟踪报告或特性名称。例如 ticket-1234,超棒的特性 + 作为一个良好的习惯,为你的分支起一个描述性的名称,可以引用问题跟踪报告或特性 + 名称。例如 ticket-1234,超棒的特性 -上述命令将创建基于上游(CakePHP) 2.3分支的一个本地分支。进行你的臭虫修复工作,根据你的需要做任意多次的提交(*commit*)。不过你要牢记以下几点: +上述命令将创建基于上游(CakePHP) 2.3分支的一个本地分支。进行你的臭虫修复工作,根据 +你的需要做任意多次的提交(*commit*)。不过你要牢记以下几点: -* 遵循:doc:`/contributing/cakephp-coding-conventions` 。 +* 遵循 :doc:`/contributing/cakephp-coding-conventions` 。 * 添加一个测试用例来说明错误修复好了,或者新特性能够工作。 * 使你的提交保持逻辑性,提交信息应当清晰、简洁。 @@ -75,8 +82,10 @@ git checkout git rebase 2.3 -这将抓取+合并自从你开始之后 CakePHP 中的任何改动。然后,它将衍合(*rebase*) -- 或者说,在当前代码的基础上重新应用你的改动。在``衍合`` -过程中你可能会遇到冲突。如果衍合过早退出,你可以使用``git status``命令来查看哪些文件发生冲突/没有合并。解决每个冲突,然后继续衍合:: +这将抓取+合并自从你开始之后 CakePHP 中的任何改动。然后,它将衍合(*rebase*) -- 或 +者说,在当前代码的基础上重新应用你的改动。在 ``衍合`` 过程中你可能会遇到冲突。如 +果衍合过早退出,你可以使用 ``git status`` 命令来查看哪些文件发生冲突/没有合并。解 +决每个冲突,然后继续衍合:: git add # 针对每一个发生冲突的文件。 git rebase --continue @@ -86,27 +95,30 @@ git push origin 一旦你的分支在 GitHub 上,你就可以在 -`cakephp-core `_ 邮件列表上进行讨论或在 GitHub -上提交拉取请求。 +`cakephp-core `_ 邮件列表上进行讨论 +或在 GitHub 上提交拉取请求。 选择你的改动会被合并到哪里 -------------------------- -当提交拉取请求时,你应该确保你选择了正确的分支作为基础,因为拉取请求一经创建就无法更改。 +当提交拉取请求时,你应该确保你选择了正确的分支作为基础,因为拉取请求一经创建就无 +法更改。 -* 如果你的改动是一个**错误修正**,并不引入新功能,只是纠正当前版本中现有的行为,则请选择**master**为合并目标。 -* 如果你的改动是一个**新特性**或者为框架新增的功能,那么你应选择下一个版本号对应的分支。例如,如果目前的稳定版本是``2.2.2``,则接受新特性的分支将 - 是``2.3``。 -* 如果你的改动打破(*breaks*)了现有的功能或 API,那么你就应当选择再下一个主要版本。例如,如果当前的版本是``2.2.2``,那么下一次现有的功能 - 可以被打破(*broken*)就是在``3.0``版本了,所以你应该针对这一分支。 +* 如果你的改动是一个 **错误修正**,并不引入新功能,只是纠正当前版本中现有的行为, + 则请选择 **master** 为合并目标。 +* 如果你的改动是一个 **新特性** 或者为框架新增的功能,那么你应选择下一个版本号对 + 应的分支。例如,如果目前的稳定版本是 ``2.2.2``,则接受新特性的分支将是 ``2.3``。 +* 如果你的改动打破(*break*)了现有的功能或 API,那么你就应当选择再下一个主要版本。 + 例如,如果当前的版本是 ``2.2.2``,那么下一次现有的功能可以被打破(*broken*)就是 + 在 ``3.0`` 版本了,所以你应该针对这一分支。 .. note:: - 请记住,所有你贡献给CakePHP的代码将被置于MIT许可之下, - `Cake Software Foundation `_将会成为任何贡献出 - 去的代码的所有者。代码贡献者应当遵循 - `CakePHP Community Guidelines `_. + 请记住,所有你贡献给 CakePHP 的代码将被置于 MIT 许可之下, + `Cake Software Foundation `_ 将会成为 + 任何贡献出去的代码的所有者。代码贡献者应当遵循 + `CakePHP Community Guidelines `_ 。 所有合并到维护分支中的臭虫修复,也将被核心团队定期地合并到即将发布的下一个版本。 diff --git a/zh/contributing/documentation.rst b/zh/contributing/documentation.rst index b9ca4a68f8..e851ff6f03 100644 --- a/zh/contributing/documentation.rst +++ b/zh/contributing/documentation.rst @@ -1,29 +1,33 @@ 文档 #### -给文档做贡献是很简单的。这些文件都托管在 https://github.com/cakephp/docs。请自行复制(*fork*)代码仓库,加入你的更改/改进 -/翻译,然后发出拉取请求来提交你的改动。你甚至可以在 GitHub 上在线地编辑文档,而完全不用下载文件--在任何页面上的"Improve this Doc"按 -键将会引导你进入该页面的 GitHub 在线编辑器。 +给文档做贡献是很简单的。这些文件都托管在 https://github.com/cakephp/docs。请自行 +复制(*fork*)代码仓库,加入你的更改/改进/翻译,然后发出拉取请求来提交你的改动。你 +甚至可以在 GitHub 上在线地编辑文档,而完全不用下载文件--在任何页面上的"Improve +this Doc"按键将会引导你进入该页面的 GitHub 在线编辑器。 翻译 ==== -发邮件给文档小组(docs at cakephp dot org),或者通过 IRC(freenode上的#cakephp),来讨论任何你想参与的翻译工作。 +发邮件给文档小组(docs at cakephp dot org),或者通过 IRC(freenode上的#cakephp),来 +讨论任何你想参与的翻译工作。 关于翻译的一些忠告: - 用要翻译的语言来进行浏览、编辑 - 否则你将无法看到哪些已经翻译了。 - 如果你选择的语言在本书中已经存在,请自行加入。 -- 请使用 `Informal Form ` _。 +- 请使用 `Informal Form `_ 。 - 请将内容和标题一起翻译。 -- 在提交一个更正之前,请先和英文版本的内容进行比较(如果你改正了一些东西,却没有整合“上游”(*upstream*)的改动,你提交的东西将不会被接受)。 -- 如果你要写一个英文术语,请把它放在 ```` 标签之内。比如,"asdf asdf *Controller* asdf"或者"asdf asdf - Kontroller (*Controller*) asfd",请适为选用。 +- 在提交一个更正之前,请先和英文版本的内容进行比较(如果你改正了一些东西,却没有整 + 合“上游”(*upstream*)的改动,你提交的东西将不会被接受)。 +- 如果你要写一个英文术语,请把它放在 ```` 标签之内。比如, + "asdf asdf *Controller* asdf"或者"asdf asdf Kontroller (*Controller*) asfd",请 + 适为选用。 - 请不要提交不完整的翻译。 - 请不要编辑正在改动的部分。 - 对于标以重音符号的字符,请不要使用 - `html 字符实体 (*html entities*) `_ - 来表示,本书使用UTF-8。 + `html 字符实体 `_ + (*html entities*) 来表示,本书使用UTF-8。 - 请不要显著改变标记(HTML)或增加新的内容。 - 如果原始的内容遗漏了某些信息,请先提交(对原始内容的)更正。 @@ -31,9 +35,10 @@ ============ 这份新的 CakePHP 文档是以 -`ReST formatted text `_ 格式写的。ReST -(Re Structured Text)是与 markdown 或者 textile 类似的纯文本标记语法。在为 CakePHP 的文档做出贡献时,为了保持一致 -性,建议你遵循下面的准则,来你格式化和组织你的文字。 +`ReST formatted text `_ 格式写的。 +ReST (Re Structured Text)是与 markdown 或者 textile 类似的纯文本标记语法。在为 +CakePHP 的文档做出贡献时,为了保持一致性,建议你遵循下面的准则,来你格式化和组织 +你的文字。 每行的长度 ---------- @@ -43,7 +48,7 @@ 标题和小节 ---------- -小节的标题要在它的下一行以至少相同长度的标点符号来标识。 +小节的标题要在它的下一行用至少相同长度的标点符号来标识。 - ``#`` 用来标识网页标题。 - ``=`` 用于标识在一个页面中的小节。 @@ -58,8 +63,8 @@ 段落是简单的文本块,缩进在同一级别。段落之间应以一个以上的空行分隔。 -内嵌标记 --------- +内嵌(*inline*)标记 +------------------ * 一个星号: *文字* 为强调(斜体) @@ -79,12 +84,14 @@ * **不可以** 嵌套。 * 内容不可以以空格开始或结束: ``* 文本*`` 是错误的。 -* 内容必须与周围的文字由非文字字符分隔,这可以使用反斜杠转义的空格来解决:``一个长的\ *粗体*\ 词汇``。 +* 内容必须与周围的文字由非文字字符分隔,这可以使用反斜杠转义的空格来解决: + ``一个长的\ *粗体*\ 词汇``。 列表 ---- -列表与 markdown 非常相似。无序列表以一个星号和一个空格开始。有序列表可以数字开始,或以 ``#`` 进行自动编号:: +列表与 markdown 非常相似。无序列表以一个星号和一个空格开始。有序列表可以数字开始, +或以 ``#`` 进行自动编号:: * 这是一点 * 这也是。但这一点 @@ -134,18 +141,20 @@ .. rst:role:: doc - 指向文档中其他网页的链接可以使用 ``:doc:`` 角色(*role*)。你可以使用绝对路径或者相对路径,来链接到指定的文件中。请省略``.rst`` - 扩展名。例如,如果链接``:doc:`form```出现在文档``core-helpers/html``中,则该链接指向 - ``core-helpers/form``。如果链接是``:doc:`/core-helpers```,那么不论它用在那里,总是会指向 - ``/core-helpers`` 。 + 指向文档中其他网页的链接可以使用 ``:doc:`` 角色(*role*)。你可以使用绝对路径或 + 者相对路径,来链接到指定的文件中。请省略 ``.rst`` 扩展名。例如,如果链接 + ``:doc:`form``` 出现在文档 ``core-helpers/html`` 中,则该链接指向 + ``core-helpers/form`` 。如果链接是 ``:doc:`/core-helpers``` ,那么不论它用在 + 那里,总是会指向 ``/core-helpers`` 。 交叉引用链接 ~~~~~~~~~~~~ .. rst:role:: ref - 你可以使用 ``:ref:`` 角色交叉引用在任何文件中的任何标题。链接标签指向的目标在整个文档必须是唯一的。当为类的方法创建标签时,最好使用 - ``class-method`` 作为您的链接标签的格式。 + 你可以使用 ``:ref:`` 角色交叉引用在任何文件中的任何标题。链接标签指向的目标在 + 整个文档必须是唯一的。当为类的方法创建标签时,最好使用 ``class-method`` 作为 + 您的链接标签的格式。 标签最常见的用途是在标题之前。例如:: @@ -156,14 +165,15 @@ 更多内容在这里。 - 在其他地方你可以用 ``:ref:`标签名称``` 引用上面的小节。链接的文字可以是标签之后的标题。你也可以使用 ``:ref:`链接文字 <标签名称>``` - 的方式来提供自定义的链接文字。 + 在其他地方你可以用 ``:ref:`标签名称``` 引用上面的小节。链接的文字可以是标签之后的 + 标题。你也可以使用 ``:ref:`链接文字 <标签名称>``` 的方式来提供自定义的链接文字。 描述类和它们的内容 ------------------ -CakePHP 文档使用`phpdomain `_提供 -自定义指令描述 PHP 对象和结构。我们必须使用这些指令和角色,才能保证正确的索引和交叉引用。 +CakePHP 文档使用 `phpdomain `_ +提供自定义指令描述 PHP 对象和结构。我们必须使用这些指令和角色,才能保证正确的索引 +和交叉引用。 描述类及其组成 -------------- @@ -199,7 +209,7 @@ CakePHP 文档使用`phpdomain `_ 上。 报告臭虫 @@ -9,24 +10,29 @@ 写得好的问题报告都非常有用。下面的步骤可以帮助创建尽可能好的问题报告: -* **请** `搜索 `_ +* **请** + `搜索 `_ 类似的已有问题,并保证别人没有报告你的问题,或者在源代码仓库中还没有得到修复。 -* **请** 包括 **如何重现问题** 的详细说明。这可以是测试用例或代码片段,来展示所报告的问题。如果没有办法重现问题,则意味着它不太容易被修复。 -* **请** 尽可能详尽地提供关于你的(运行)环境的细节(操作系统,PHP 的版本,CakePHP 的版本)。 +* **请** 包括 **如何重现问题** 的详细说明。这可以是测试用例或代码片段,来展示所报 + 告的问题。如果没有办法重现问题,则意味着它不太容易被修复。 +* **请** 尽可能详尽地提供关于你的(运行)环境的细节(操作系统,PHP 的版本,CakePHP + 的版本)。 * **请不要** 使用问题跟踪系统来询问技术支持的问题。寻求技术支持,请使用 - `谷歌讨论组 `_ 或 #cakephp 的 IRC 渠道或者 - Stack Overflow 。 + `谷歌讨论组 `_ 或 #cakephp 的 IRC 渠道 + 或者 Stack Overflow 。 报告安全问题 ============ -如果你发现了 CakePHP 的安全问题,请使用以下过程,而不要使用平常的错误报告系统,比如问题跟踪系统、邮件列表或 IRC。请发送电子邮件至 -**security [at] cakephp.org**。发送到这个邮箱的电子邮件会进入一个 CakePHP 核心团队所在的内部邮件列表中。 +如果你发现了 CakePHP 的安全问题,请使用以下过程,而不要使用平常的错误报告系统,比 +如问题跟踪系统、邮件列表或 IRC。请发送电子邮件至 **security [at] cakephp.org** 。 +发送到这个邮箱的电子邮件会进入一个 CakePHP 核心团队所在的内部邮件列表中。 对于每一份报告,我们首先尝试确认该漏洞。一经确认,CakePHP 团队将采取以下措施: -* 向报告者确认我们已经收到了该问题报告,并正着手修复。我们请求报告者对该问题保密,直到我们对外宣布。 +* 向报告者确认我们已经收到了该问题报告,并正着手修复。我们请求报告者对该问题保密, + 直到我们对外宣布。 * 准备一个更正/补丁。 * 准备一份帖子,描述该漏洞以及可能的利用方式。 * 针对所有受影响的版本发布新版本。 diff --git a/zh/installation/advanced-installation.rst b/zh/installation/advanced-installation.rst new file mode 100644 index 0000000000..dd70cd340e --- /dev/null +++ b/zh/installation/advanced-installation.rst @@ -0,0 +1,156 @@ +高级安装 +##################### + +通过 PEAR 安装器安装 CakePHP +====================================== + +CakePHP 发行 PEAR 的安装包,故可以通过 PEAR 安装器安装。用 PEAR 安装,可以简化在 +多个应用程序间共享 CakePHP 类库的工作。要通过 PEAR 安装 CakePHP,需要执行下面的命 +令:: + + pear channel-discover pear.cakephp.org + pear install cakephp/CakePHP + +.. note:: + + 在一些操作系统中用 PEAR 命令安装类库需要 ``sudo``。 + +使用 PEAR 安装 CakePHP 之后,如果 PEAR 配置正确,可以使用 ``cake`` 命令来创建新的 +应用程序。由于 CakePHP 已经被包含在 PHP 的 ``include_path`` 中,就不需要再做任何 +其它改动了。 + + +通过 Composer 安装 CakePHP +================================ + +Composer 是一个适用于 PHP 5.3+ 的依赖管理工具,解决了通过 PEAR 安装的很多问题,并 +且简化了对类库的多个版本的管理。由于 CakePHP 有 PEAR 发行包,故而可以使用 +`composer `_ 安装 CakePHP。在安装 CakePHP 之前需要建立 +``composer.json`` 文件。CakePHP 应用程序的 composer.json 可以象下面这样:: + + { + "name": "example-app", + "require": { + "cakephp/cakephp": "2.5.*" + }, + "config": { + "vendor-dir": "Vendor/" + } + } + +把这段 JSON 保存在项目的 APP 目录中的 ``composer.json`` 文件中。接下来把 +composer.phar 文件下载到项目中。在 ``composer.json`` 所在的目录下运行如下命令:: + + $ php composer.phar install + +一旦 Composer 运行结束,目录结构应当如下所示:: + + example-app/ + composer.phar + composer.json + Vendor/ + bin/ + autoload.php + composer/ + cakephp/ + +现在可以生成应用程序骨架的其余部分:: + + $ Vendor/bin/cake bake project + +缺省情况下,``bake`` 把 :php:const:`CAKE_CORE_INCLUDE_PATH` 硬编码了。为了使应用 +程序更具移植性,应当修改 ``webroot/index.php`` ,将 ``CAKE_CORE_INCLUDE_PATH`` +改为相对路径:: + + define( + 'CAKE_CORE_INCLUDE_PATH', + ROOT . DS . APP_DIR . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib' + ); + +.. note:: + + 如果你计划为应用程序创建单元测试,你也需要对 ``webroot/test.php`` 做上面的修 + 改。 + +如果使用 Composer 安装其他任何类库,则需要设置自动加载(*autoloader*),并绕过 +(*work around*) Composer 自动加载的一个问题。在 ``Config/bootstrap.php`` 文件中添 +加如下代码:: + + // 加载 Composer 的自动加载。 + require APP . 'Vendor/autoload.php'; + + // 删除并重新优先添加 CakePHP 的自动加载,因为 Composer 认为这是最重要的。 + // 参看:http://goo.gl/kKVJO7 + spl_autoload_unregister(array('App', 'load')); + spl_autoload_register(array('App', 'load'), true, true); + +现在这个用 Composer 安装的 CakePHP 应用程序应该可以运行了。注意确保 composer.json +和 composer.lock 文件与其它源代码在一起。(译注:比如一起添加到 Git 这样的源码控制 +仓库中。) + +在多个应用程序间共享 CakePHP 类库 +==================================================== + +在某些情况下,你会希望把 CakePHP 的目录放到文件系统的不同地方。这可能是因为共享主 +机的限制,或者你只是想让一些应用程序共享相同的 CakePHP 类库。本节将说明怎样把 +CakePHP 的目录分散到文件系统的的不同地方。 + +首先,明确 Cake 的应用程序有三个主要部分: + +#. CakePHP 核心类库,位于 /lib/Cake 目录。 +#. 应用程序的代码,位于 /app 目录。 +#. 应用程序的 webroot,通常位于 /app/webroot 目录。 + +这里的每个目录,都可以放到文件系统的任何位置,除了 webroot,它必须位于 web 服务器 +能够访问到的地方。甚至可以将 webroot 目录移动到 app 目录外面,只要你告诉 CakePHP +你把它放在了哪里。 + +配置 CakePHP 的安装时,需要对下面的文件做一些修改。 + + +- /app/webroot/index.php +- /app/webroot/test.php (如果你使用 + :doc:`Testing ` 的功能。) + +有三个常量需要修改: ``ROOT`` 、 ``APP_DIR`` 和 ``CAKE_CORE_INCLUDE_PATH``。 + +- ``ROOT`` 应当设置为包含你的 app 文件夹的目录路径。 +- ``APP_DIR`` 应当设置为 app 目录的目录名称(译注:即不包含前面的路径)。 +- ``CAKE_CORE_INCLUDE_PATH`` 应当设置为 CakePHP 类库目录的路径。 + +让我们通过下面的例子,让你明白高级安装实际上是怎样的。设想我要象下面这样设置 +CakePHP: + +- CakePHP 的核心类库位于 /usr/lib/cake。 +- 应用程序的 webroot 目录是 /var/www/mysite/。 +- 应用程序的 app 目录是 /home/me/myapp。 + +鉴于这种类型的设置,我需要编辑 webroot/index.php 文件(在本例中为 +/var/www/mysite/index.php),(让它)像下面这样:: + + // /app/webroot/index.php (部分代码,删除了注释) + + if (!defined('ROOT')) { + define('ROOT', DS . 'home' . DS . 'me'); + } + + if (!defined('APP_DIR')) { + define ('APP_DIR', 'myapp'); + } + + if (!defined('CAKE_CORE_INCLUDE_PATH')) { + define('CAKE_CORE_INCLUDE_PATH', DS . 'usr' . DS . 'lib'); + } + +推荐使用 ``DS`` 常量而不是斜杠(译注:即 ``/`` 或 ``\``)来分隔文件路径,这样可以避 +免因为使用错误的分隔符而导致的文件无法找到的错误,并使代码更具移植性。 + +Apache 和 mod\_rewrite (以及 .htaccess) +======================================= + +本节内容被移到 :doc:`网址重写 `。 + + +.. meta:: + :title lang=zh_CN: Advanced Installation + :keywords lang=zh_CN: libraries folder,core libraries,application code,different places,filesystem,constants,webroot,restriction,apps,web server,lib,cakephp,directories,path diff --git a/zh/installation/url-rewriting.rst b/zh/installation/url-rewriting.rst index b815b1c822..26e46331cf 100644 --- a/zh/installation/url-rewriting.rst +++ b/zh/installation/url-rewriting.rst @@ -1,5 +1,5 @@ -网址重写 -######## +网址重写(*URL Rewriting*) +######################### Apache 和 mod\_rewrite (以及 .htaccess) =======================================