diff --git a/Troubleshooting.md b/Troubleshooting.md
index d10228e..07005b0 100644
--- a/Troubleshooting.md
+++ b/Troubleshooting.md
@@ -1,6 +1,6 @@
# 疑难解答
-如果发现无论你你在 URL 里面写什么,都只是出现默认页面的话,有可能是你的服务器不支持 PATH_INFO 变量,它用来给搜索引擎提供友好的 URL。解决这个问题的第一步是打开 `application/config/config.php` 文件,查找 URI Protocol 信息,你可以试试其他的设置方法。如果这些方法都无效,你需要让 CodeIgniter 去强行加一个问号去标记你的 URL。为了做到这点,打开你的 **application/config/config.php** 文件,把:
+如果发现无论你在 URL 里面写什么,都只是出现默认页面的话,有可能是你的服务器不支持 PATH_INFO 变量,它用来给搜索引擎提供友好的 URL。解决这个问题的第一步是打开 `application/config/config.php` 文件,查找 URI Protocol 信息,你可以试试其他的设置方法。如果这些方法都无效,你需要让 CodeIgniter 去强行加一个问号去标记你的 URL。为了做到这点,打开你的 **application/config/config.php** 文件,把:
$config['index_page'] = "index.php";
diff --git a/codeIgniter_at_a_glance.md b/codeIgniter_at_a_glance.md
index 4d3c815..22c0ce7 100644
--- a/codeIgniter_at_a_glance.md
+++ b/codeIgniter_at_a_glance.md
@@ -10,7 +10,7 @@ CodeIgniter 是经过 MIT 开源许可授权的,只要你愿意就可以使用
## CodeIgniter 是轻量级的
-真正的轻量级。系统核心仅需要非常小的库。它和其他需要需要很多资源的库明显不同。同时,它的附加库是运行时加载,根据你的进程的需求来定,所以核心库非常的轻且快。
+真正的轻量级。系统核心仅需要非常小的库。它和其他需要很多资源的库明显不同。同时,它的附加库是运行时加载,根据你的进程的需求来定,所以核心库非常的轻且快。
## CodeIgniter 非常快
@@ -34,11 +34,11 @@ CodeIgniter 拥有全范围的类库,可以满足大多数网络开发任务
## CodeIgniter 可扩展
-CodeIgniter 系统可以通过自定义的类库,辅助函数,类扩展,或系统钩子,简单的实现系统扩展。
+CodeIgniter 系统可以通过自定义的类库,辅助函数,类扩展,或系统钩子,简单的实现系统扩展。
## CodeIgniter 不需要模板引擎
-虽然 CodeIgniter 自带了一个可选的模板解析器程序,但并不强制你使用。模板引擎与本地 PHP 性能不匹配,使用模板引擎我们要学习其语法,这最低限度只比学PHP基础要容易一点点。考虑以下PHP 代码:
+虽然 CodeIgniter 自带了一个可选的模板解析器程序,但并不强制你使用。模板引擎与本地 PHP 性能不匹配,使用模板引擎我们要学习其语法,这最低限度只比学PHP基础要容易一点点。看看以下PHP 代码:
diff --git a/common_functions.md b/common_functions.md
index 5ba4695..ad157b5 100644
--- a/common_functions.md
+++ b/common_functions.md
@@ -17,13 +17,13 @@ CodeIgniter 使用了一些全局定义的函数来完成某些操作,你在
如果安装的 PHP 版本号大于等于参数 version,返回 TRUE,如果小于参数 version,则返回 FALSE。
-## is_really_writable($file)
+## is\_really\_writable($file)
* 参数 字符串 $file: 文件路径
* 返回:如果路径可写,返回 TRUE,否则返回 FALSE
* 返回类型:bool
-在Windows平台,``is_writable()`` 函数在实际没有文件写权限时也返回 TRUE。那是因为,只有文件有只读属性时,操作系统才向 PHP 报告为 FALSE。这个函数依靠对文件的先行写入来判断是否真的具有写权限。通常情况下,只有在这个信息不可靠的平台上才推荐使用。例如:
+在Windows平台,实际上 `is_writable()` 函数在没有文件写权限时也返回 TRUE。那是因为,只有文件是只读属性时,操作系统才向 PHP 报告为 FALSE。这个函数依靠对文件的先行写入来判断是否真的具有写权限。通常情况下,只有在这个信息不可靠的平台上才推荐使用。例如:
if (is_really_writable('file.txt'))
{
@@ -42,35 +42,35 @@ CodeIgniter 使用了一些全局定义的函数来完成某些操作,你在
尽管使用 config_item() 函数能够取得单个配置信息,但是 `配置库` 是访问这些信息的优选方式。更多信息请见类库参考。
-## show_error($message, $status_code[, $heading = 'An Error Was Encountered'])
+## show\_error($message, $status_code[, $heading = 'An Error Was Encountered'])
* 参数 混合 $message: 错误信息
* 参数 整数 $status_code: HTTP 响应状态码
* 参数 字符串 $heading: 错误页面头
* 返回类型:void
-这个函数调用 `CI_Exception::show_error()`。更新细节参考文档“错误处理”文档。
+这个函数调用 `CI_Exception::show_error()`。更多细节参考文档“错误处理”文档。
-## show_404([$page = ''[, $log_error = TRUE]])
+## show\_404([$page = ''[, $log_error = TRUE]])
-* 参数 string $page: URI 字符串
+* 参数 字符串 $page: URI 字符串
* 参数 bool $log_error: 是否将错误写入日志
* 返回类型:void
-这个函数调用 `CI_Exception::show_404()`。更新细节参考文档“错误处理”文档。
+这个函数调用 `CI_Exception::show_404()`。更多细节参考文档“错误处理”文档。
## log_message($level, $message)
-* 参数 string $level: 日志级别:'error', 'debug' 或 'info'
-* 参数 string $message: 写入日志的消息
+* 参数 字符串 $level: 日志级别:'error', 'debug' 或 'info'
+* 参数 字符串 $message: 写入日志的消息
* 返回类型:void
-这是 `CI_Log::write_log()` 函数的别名。更新细节参考文档“错误处理”文档。
+这是 `CI_Log::write_log()` 函数的别名。更多细节参考文档“错误处理”文档。
-## set_status_header($code[, $text = ''])
+## set\_status_header($code[, $text = ''])
-* 参数 int $code: HTTP 响应状态码
-* 参数 string $text: 于状态码伴随的消息
+* 参数 整数 $code: HTTP 响应状态码
+* 参数 字符串 $text: 状态码伴随的消息
* 返回类型:void
允许你手工设置服务器状态头,例如:
@@ -78,9 +78,9 @@ CodeIgniter 使用了一些全局定义的函数来完成某些操作,你在
set_status_header(401);
// Sets the header as: Unauthorized
-## remove_invisible_characters($str[, $url_encoded = TRUE])
+## remove\_invisible\_characters($str[, $url_encoded = TRUE])
-* 参数 string $str: 输入字符串
+* 参数 字符串 $str: 输入字符串
* 参数 bool $url_encoded: 是否移除 URL-encoded 字符串
* 返回:过滤后的字符串
* 返回类型:string
@@ -92,9 +92,9 @@ CodeIgniter 使用了一些全局定义的函数来完成某些操作,你在
## html_escape($var)
-* 参数 mixed $var: 需要转义的字符串或数组
+* 参数 混合 $var: 需要转义的字符串或数组
* 返回:转义过的 HTML 字符串
-* 返回类型:mixed
+* 返回类型:混合
这是原生 `htmlspecialchars()` 函数的别名,它能接受字符串数组。有助于防止跨站脚本攻击(XSS)。
@@ -119,13 +119,13 @@ CodeIgniter 使用了一些全局定义的函数来完成某些操作,你在
如果应用程序运行在命令行,返回 TRUE,否则返回 FALSE。这个函数同时检查 `PHP_SAPI` 是否是 'cli',或者如果 `STDIN` 常量已经定义过。
-## function_usable($function_name)
+## function\_usable($function_name)
* 参数 字符串 $function_name:函数名
* 返回:如果函数可用返回 TRUE,否则返回 FALSE
* 返回类型:bool
-如果一个函数存在并且可用,返回 TRUE,否则返回 FALSE。 这个运行 `function_exists()` 检查,并且如果已经加载 `Suhosin extension` ,检查是否它没有关闭这个函数的检查功能。
+如果一个函数存在并且可用,返回 TRUE,否则返回 FALSE。 这个使用 `function_exists()` 函数检查,并且如果已经加载 `Suhosin extension` ,检查是否它有没有关闭这个函数的检查功能。
如果你想检查诸如 `eval()` 和 `exec()` 函数是否可用,这个函数非常有用。这个函数也非常的危险,因此在高度严格的安全策略服务器可能被禁用。
diff --git a/compatibility_functions.md b/compatibility_functions.md
index 87c1828..0339e66 100644
--- a/compatibility_functions.md
+++ b/compatibility_functions.md
@@ -22,7 +22,7 @@ CodeIgniter 提供了一套兼容性函数,让你可以使用非原生的 PHP
### 函数参考
-#### password_get_info($hash)
+#### password\_get\_info($hash)
* 参数 字符串 $hash: 哈希密码
* 返回:哈希过的密码信息
@@ -32,13 +32,13 @@ CodeIgniter 提供了一套兼容性函数,让你可以使用非原生的 PHP
#### password_hash($password, $algo[, $options = array()])
-* 参数 字符串 $password: Plain-text 密码
+* 参数 字符串 $password: 文本密码
* 参数 整数 $algo: Hashing 算法
* 参数 数组 $options: Hashing 参数
* 返回 哈希过的密码,失败时返回 FALSE
* 返回类型 字符串
-更多信息,可用参考 `PHP password_get_info() 使用手册`
+更多信息,可用参考 `PHP password_get_info() 使用手册`。
注意: 除非你提供自己的(有效的)salt,这个函数可用进一步的提供依赖于可用的 CSPRNG 源。满足底下的每个条件:
@@ -47,15 +47,15 @@ CodeIgniter 提供了一套兼容性函数,让你可以使用非原生的 PHP
- /dev/arandom
- /dev/urandom
-#### password_needs_rehash()
+#### password\_needs\_rehash()
* 参数 字符串 $hash: 哈希密码
* 参数 整数 $algo: 哈希算法
-* 参数 数组 $options: Hashing 参数
-* 返回 TRUE 如果哈希符合给定的算法和参数,返回 TRUE,否则返回 FALSE
+* 参数 数组 $options: 哈希参数
+* 返回 TRUE 如果哈希符合给定的算法和参数,返回 TRUE,否则返回 FALSE
* 返回类型 bool
-更多信息,可以参考 `PHP password_needs_rehash() 使用手册`
+更多信息,可以参考 `PHP password_needs_rehash() 使用手册`。
#### password_verify($password, $hash)
@@ -85,7 +85,7 @@ CodeIgniter 提供了一套兼容性函数,让你可以使用非原生的 PHP
更多信息,可以参考 `PHP hash_equals() 使用手册`。
-#### hash_pbkdf2($algo, $password, $salt, $iterations[, $length = 0[, $raw_output = FALSE]])
+#### hash\_pbkdf2($algo, $password, $salt, $iterations[, $length = 0[, $raw_output = FALSE]])
* 参数 字符串 $algo: 哈希算法
* 参数 字符串 $password: 密码
@@ -100,7 +100,7 @@ CodeIgniter 提供了一套兼容性函数,让你可以使用非原生的 PHP
## 多字节字符串
-这套兼容性函数提供为 多字节字符串扩展提供有限支持。因为有限的替代方法,只有几个函数可用。
+这套兼容性函数提供为多字节字符串扩展提供有限支持。因为有限的替代方法,只有几个函数可用。
注意: 当一个字符参数忽略,可以使用 `$config['charset']`。
@@ -110,7 +110,7 @@ CodeIgniter 提供了一套兼容性函数,让你可以使用非原生的 PHP
注意: 这个依赖性是可选的,这个函数总是被声明。如果 iconv 不可用,他们将会回退到 non-mbstring 版本。
-注意: 当提供字符设置时,必须通过 iconv 和 它认识的格式来支持。
+注意: 当提供字符设置时,必须通过 iconv 和它认识的格式来支持。
注意: 你再检查 mbstring 扩展时,可以使用 `MB_ENABLED` 常量。
@@ -157,7 +157,7 @@ CodeIgniter 提供了一套兼容性函数,让你可以使用非原生的 PHP
### 函数参考
-#### array_column(array $array, $column_key[, $index_key = NULL])
+#### array\_column(array $array, $column_key[, $index_key = NULL])
* 参数 数组 $array: 取结果的源数组
* 参数 混合 $column_key: 取结果的列的 key
@@ -167,7 +167,7 @@ CodeIgniter 提供了一套兼容性函数,让你可以使用非原生的 PHP
更多信息,可以参考 [PHP array_column() 使用手册](http://php.net/array_column)。
-#### array_replace(array $array1[, ...])
+#### array\_replace(array $array1[, ...])
* 参数 数组 $array1: 将要替换的数组
* 参数 array ...: 需要提前内容的数组
@@ -176,7 +176,7 @@ CodeIgniter 提供了一套兼容性函数,让你可以使用非原生的 PHP
更多信息,可以参考 [PHP array_replace() 使用手册](http://php.net/array_replace)。
-#### array_replace_recursive(array $array1[, ...])
+#### array\_replace\_recursive(array $array1[, ...])
* 参数 数组 $array1: 将要替换内容的数组
* 参数 array ...: 将要提取内容的数组
diff --git a/controllers.md b/controllers.md
index 2051bd7..a413f9a 100644
--- a/controllers.md
+++ b/controllers.md
@@ -87,7 +87,7 @@
你将会看到新的消息。
-## 将 URI 段传递给你的方法
+## 将 URI 段作为参数传递给你的方法
如果你的 URI 的段落超过 2 个,他们将会作为参数传递。
@@ -107,7 +107,7 @@
}
}
-注意:如果你使用了[URI 路由]特性,传递给你的方法的参数将会是重新路由过的对象。
+注意:如果你使用了 URI 路由特性,传递给你的方法的参数将会是重新路由过的对象。
## 定义一个默认控制器
@@ -117,7 +117,7 @@
当 Blog 正是你想用使用的控制器类时。现在如果你加载 index.php,而没有指定任何 URI 段,默认情况下将会看到 "Hello World" 消息。
-## 重新隐私调用方法
+## 重新映射调用方法
如上所述,URI 的第二个段通常会确定调用控制器里的哪个方法。CodeIgniter 允许你重写这个行为,通过使用 `_remap()` 方法。
@@ -126,7 +126,7 @@
// Some code here...
}
-注意: 如果你的控制器包含一个 _remap() 方法,它将会始终被调用,无论你的 URI 包含什么。它重写了正常的URI 决定调用哪个方法的行为,允许你来定义自己的路由规则。
+注意: 如果你的控制器包含一个 _remap() 方法,它将会始终被调用,无论你的 URI 包含什么。它重写了正常的 URI 决定调用哪个方法的行为,允许你来定义自己的路由规则。
被重新定义的方法调用方式(一般是 URI 中的第二段)将作为一个参数传递给 `_remap()` :
@@ -157,113 +157,71 @@
show_404();
}
-Processing Output
-=================
+## 处理输出
-CodeIgniter has an output class that takes care of sending your final
-rendered data to the web browser automatically. More information on this
-can be found in the :doc:`Views ` and :doc:`Output Class
-<../libraries/output>` pages. In some cases, however, you might want to
-post-process the finalized data in some way and send it to the browser
-yourself. CodeIgniter permits you to add a method named ``_output()``
-to your controller that will receive the finalized output data.
+CodeIgniter 拥有一个输出类用来确保你修改的数据会自动被传递给浏览器。关于这个的更多信息可以在视图和输出类里找到。有些时候,你可能想要自己发布修改一些最终的数据或是自己把它传递给浏览器。CodeIgniter 允许你给你的控制器增加一个名为 _output() 的方法来接收最终的数据。
-.. important:: If your controller contains a method named ``_output()``,
- it will **always** be called by the output class instead of
- echoing the finalized data directly. The first parameter of the
- method will contain the finalized output.
+注意:如果你的控制器包含一个 _output() 方法,那么它将总是被调用,而不是直接输出最终的数据。这个方法类似于OO里的析构函数,不管你调用任何方法这个方法总是会被执行。例如:
-Here is an example::
public function _output($output)
{
echo $output;
}
-.. note::
+注意:你的 _output() 将接收最终的数据。 Benchmark 和内存的使用率数据将被渲染,缓存文件会被写入(如果已启用缓存),并且 HTTP 头也将被发送(如果您使用该功能),然后交给 _output() 函数。
+
+为了让你的控制器输出缓存正确, 它的 _output() 函数可以这样来写:
- Please note that your ``_output()`` method will receive the
- data in its finalized state. Benchmark and memory usage data
- will be rendered, cache files written (if you have caching
- enabled), and headers will be sent (if you use that
- :doc:`feature <../libraries/output>`) before it is handed off
- to the ``_output()`` method.
- To have your controller's output cached properly, its
- ``_output()`` method can use::
if ($this->output->cache_expiration > 0)
{
$this->output->_write_cache($output);
}
- If you are using this feature the page execution timer and
- memory usage stats might not be perfectly accurate since they
- will not take into account any further processing you do.
- For an alternate way to control output *before* any of the
- final processing is done, please see the available methods
- in the :doc:`Output Library <../libraries/output>`.
-Private methods
-===============
+如果您正在使用页面执行时间和内存使用统计的功能,这可能不完全准确,因为他们不会考虑到你所做的任何进一步的动作。请在输出类参用可用的方法,来控制输出以使其在任何最终进程完成之前执行。
+
+## 私有方法
-In some cases you may want certain methods hidden from public access.
-In order to achieve this, simply declare the method as being private
-or protected and it will not be served via a URL request. For example,
-if you were to have a method like this::
+在某些情况下,你可能想要隐藏一些方法使之无法对外查阅。将方法私有化很简单,只要在方法名字前面加一个下划线(“_”)做前缀就无法通过 URL 访问到了。例如,如果你有一个像这样的方法:
private function _utility()
{
// some code
}
-Trying to access it via the URL, like this, will not work::
+那么,通过下面这样的 URL 进行访问是无法访问到的:
example.com/index.php/blog/_utility/
-.. note:: Prefixing method names with an underscore will also prevent
- them from being called. This is a legacy feature that is left
- for backwards-compatibility.
+注意:前缀方法名称使用下划线,是为了避免被调用。这是原本就有的功能,目的是向后兼容。
-Organizing Your Controllers into Sub-directories
-================================================
+## 如何将控制器放入子文件夹中
-If you are building a large application you might find it convenient to
-organize your controllers into sub-directories. CodeIgniter permits you
-to do this.
+如果你在建立一个大型的应用程序,你会发现 CodeIgniter 可以很方便的将控制器放到一些子文件夹中。
-Simply create folders within your *application/controllers/* directory
-and place your controller classes within them.
+只要在 application/controllers 目录下创建文件夹并放入你的控制器就可以了。
-.. note:: When using this feature the first segment of your URI must
- specify the folder. For example, let's say you have a controller located
- here::
+注意:如果你要使用某个子文件夹下的功能,就要保证 URI 的第一个片段是用于描述这个文件夹的。例如说你有一个控制器在这里:
application/controllers/products/Shoes.php
- To call the above controller your URI will look something like this::
+调用这个控制器的时候你的 URI 要这么写
example.com/index.php/products/shoes/show/123
-Each of your sub-directories may contain a default controller which will be
-called if the URL contains only the sub-folder. Simply name your default
-controller as specified in your *application/config/routes.php* file.
+你的每个子文件夹中需要包含一个默认的控制器,这样如果 URI 中只有子文件夹而没有具体功能的时候它将被调用。只要将你作为默认的控制器名称在 application/config/routes.php 文件中指定就可以了。
-CodeIgniter also permits you to remap your URIs using its :doc:`URI
-Routing ` feature.
+CodeIgniter 也允许你使用 URI 路由 功能来重新定向 URI。
-Class Constructors
-==================
+## 构造函数
-If you intend to use a constructor in any of your Controllers, you
-**MUST** place the following line of code in it::
+如果要在你的任意控制器中使用构造函数的话,那么必须在里面加入下面这行代码:
parent::__construct();
-The reason this line is necessary is because your local constructor will
-be overriding the one in the parent controller class so we need to
-manually call it.
-
-Example::
+这行代码的必要性在于,你此处的构造函数会覆盖掉这个父控制器类中的构造函数,所以我们要手动调用它。例如:
` for a full
-list.
+## 保留的方法名称
-.. important:: You should also never have a method named identically
- to its class name. If you do, and there is no ``__construct()``
- method in the same class, then your e.g. ``Index::index()``
- method will be executed as a class constructor! This is a PHP4
- backwards-compatibility feature.
+因为你添加的控制器类继承了主要的应用程序控制器,所以你要小心你的方法名不要和那个类中的方法名一样了,否则你的方法会覆盖原有的。详细信息请查看保留字部分
-That's it!
-==========
+注意: 你不要让方法名和类名相同。如果你这么做,将不会有构造函数,然后 `Index::index()` 方法将会作为类的构造函数执行。这是 PHP 4 向后兼容的特性。
-That, in a nutshell, is all there is to know about controllers.
+## 就这样
-[URI 路由]: routing.md
\ No newline at end of file
+好,以上就是有关控制器的所有内容了。
\ No newline at end of file
diff --git a/create_news_items.md b/create_news_items.md
index c8ec067..b33f4e8 100644
--- a/create_news_items.md
+++ b/create_news_items.md
@@ -24,9 +24,9 @@
这里可能有 2 个事情你不太了解:form_open() 函数和 validation_errors() 函数。
-第一个函数由[表单辅助函数]提供,用来提供表单元素和额外的附加函数,比如添加隐藏的[安全类]。另外一个用来报告验证表单正确性过程中的错误。
+第一个函数由表单辅助函数提供,用来提供表单元素和额外的附加函数,比如添加隐藏的安全类。另外一个用来报告验证表单正确性过程中的错误。
-回到你的新闻控制器。在这里你需要做 2 件事情,一是检查表单是否已经提交,二是检查提交的数据能通过验证,你需要用到[表单验证]来坐这些事。
+回到你的新闻控制器。在这里你需要做 2 件事情,一是检查表单是否已经提交,二是检查提交的数据能通过验证,你需要用到表单验证来坐这些事。
public function create()
{
@@ -54,7 +54,7 @@
上面的代码添加了一些功能,前几行代码载入了表单辅助函数和表单验证库。这样就设置好了表单验证规则。`set_rules()` 方法有3个参数:输入域的名称,错误信息名称,规则。这里的规则是标题和正文不能为空。
-如上所示,CodeIgniter 拥有强大的表单验证库。详情可以阅读[表单验证]文档。
+如上所示,CodeIgniter 拥有强大的表单验证库。详情可以阅读表单验证文档。
继续看,你可以发现一个用来检查表单验证是否运行成功的条件。如果失败,显示表单。如果成功提交并通过所有验证,视图将会显示消息。创建一个视图 application/views/news/success.php,并写入成功消息。
@@ -77,9 +77,9 @@
return $this->db->insert('news', $data);
}
-这新方法用来维护插入到数据库的信息。第三行包含了一个新的函数 `url_title()`。这个函数由 [URL 辅助函数]提供,用来组织你输入的字符串,将空格的内容换成横线(-),确保其中全都是小写字母。这样就可以拥有一个漂亮的 slug,可以完美的创建 URI。
+这新方法用来维护插入到数据库的信息。第三行包含了一个新的函数 `url_title()`。这个函数由 URL 辅助函数提供,用来组织你输入的字符串,将空格的内容换成横线(-),确保其中全都是小写字母。这样就可以拥有一个漂亮的 slug,可以完美的创建 URI。
-让我们继续准备将要向$data数组输入的记录。每个元素都和数据库表里的列相对应。你可能已经注意到了一个新方法 [post()]。这个方法可以保证数据是过滤过的,从而保护你不受其他人的恶意攻击。这个输入类默认加载。最后将 $data 数据插入到数据库中。
+让我们继续准备将要向$data数组输入的记录。每个元素都和数据库表里的列相对应。你可能已经注意到了一个新方法 post()。这个方法可以保证数据是过滤过的,从而保护你不受其他人的恶意攻击。这个输入类默认加载。最后将 $data 数据插入到数据库中。
## 路由
@@ -91,11 +91,4 @@
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
-现在可以将你的浏览器定位到安装了 CodeIgniter 本地开发环境,并添加 `index.php/news/create` 到URL。恭喜你创建了第一个 CodeIgniter 程序!添加一些新闻,然后看看以创建的不同页面吧。
-
-
-[表单辅助函数]: form_helper.md
-[安全类]:security.md
-[表单验证]: form_validation.md
-[URL 辅助函数]:url_helper.md
-[post()]: input.md
\ No newline at end of file
+现在可以将你的浏览器定位到安装了 CodeIgniter 本地开发环境,并添加 `index.php/news/create` 到URL。恭喜你创建了第一个 CodeIgniter 程序!添加一些新闻,然后看看以创建的不同页面吧。
\ No newline at end of file
diff --git a/creating_ancillary_classes.md b/creating_ancillary_classes.md
index 8862114..f80b12d 100644
--- a/creating_ancillary_classes.md
+++ b/creating_ancillary_classes.md
@@ -57,4 +57,4 @@
}
}
-在上述的例子中,`foo()` 和 `bar()` 方法将会在你实例化例子类后工作,不需要每次都调用 `get_instance()`。
+在上述的例子中,`foo()` 和 `bar()` 方法将会在你实例化的子类工作,不需要每次都调用 `get_instance()`。
diff --git a/creating_core_system_classes.md b/creating_core_system_classes.md
index 32cfbf6..1d49ae9 100644
--- a/creating_core_system_classes.md
+++ b/creating_core_system_classes.md
@@ -2,13 +2,13 @@
每次 CodeIgniter 运行时,都有很多基础类作为核心架构的一部分被初始化。你也可以使用你自己的类替换核心系统类,或者扩展核心系统类。
-**多数用户没有这个需求,但对于那些想较大幅度的改变CodeIgniter的人来说,我们依然提供了替换和扩展核心系统类的选择**
+**多数用户没有这个需求,但对于那些想较大幅修复 CodeIgniter 的人来说,我们依然提供了替换和扩展核心系统类的方法**
-注意: 改变核心系统类会有很大的影响,所以在你修改前需要清楚自己在做什么
+注意: 改变核心系统类会有很大的影响,所以在你修改前需要清楚自己在做什么。
## 系统类清单
-下面是核心系统类的列表,他们在每次 CodeIgniter 启动时被调用:
+下面是核心系统类的列表,他们在每次 CodeIgniter 启动时被调用:
- Benchmark
- Config
diff --git a/error_handling.md b/error_handling.md
index 2709845..587f2dd 100644
--- a/error_handling.md
+++ b/error_handling.md
@@ -1,16 +1,16 @@
# 错误处理
-CodeIgniter 允许你在应用中使用以下的函数建立错误报告。另外,它又一个错误日志类允许错误和调试信息保存为文本文件。
+CodeIgniter 允许你在应用中使用以下的函数建立错误报告。另外,它有一个错误日志类,允许错误和调试信息保存为文本文件。
注意:默认情况下,CodeIgniter 显示所有 PHP 错误。你可能想要在开发完成后改变这个行为。你可以在 index.php 顶部找到 error_reporting() 函数。即使禁用错误报告,发生错误时,错误日志也不回停止。
CodeIgniter 和其他系统不太一样,错误报告函数是一个简单的程序接口,可以在整个应用程序里使用。不用考虑类或者是函数的范围,这种办法可以直接触发错误通知。
-无论系统核心调用 `exit()`, CodeIgniter 也会返回一个状态码。退出状态码独立于 HTTP 状态码,这个服务监视其他应用程序是否成功的执行完成,如果没有成功,是什么原因导致的。这些值定义在 *application/config/constants.php*。退出状态码在 CLI 设置中很有用,返回的状态码能让服务器软件追踪脚本代码,让你的程序更健壮。
+无论系统核心何时调用 `exit()`, CodeIgniter 也会返回一个状态码。退出状态码独立于 HTTP 状态码,这个服务监视其他应用程序是否成功的执行完成,如果没有成功,是什么原因导致的。这些值定义在 *application/config/constants.php*。退出状态码在 CLI 设置中很有用,返回的状态码能让服务器软件追踪脚本代码,让你的程序更健壮。
以下函数能让你产生错误:
-## show_error($message, $status_code, $heading = 'An Error Was Encountered')
+## show\_error($message, $status_code, $heading = 'An Error Was Encountered')
* 参数 混合$message: 错误消息
* 参数 整数 $status_code: HTTP 状态码
@@ -28,7 +28,7 @@ CodeIgniter 和其他系统不太一样,错误报告函数是一个简单的
可选参数 `$status_code` 确定将会发生什么 HTTP 状态码到错误。如 `$status_code` 少于 100,HTTP 状态码将会设置为 500,退出状态码将会设置为:`$status_code + EXIT__AUTO_MIN`。如果这个值大于 `EXIT__AUTO_MAX`,或者如果 `$status_code` 为大于等于 100 的值,退出码将会设置为 `EXIT_ERROR`。更多细节参考 *application/config/constants.php*。
-## show_404($page = '', $log_error = TRUE)
+## show\_404($page = '', $log_error = TRUE)
* 参数 字符串 $page: URI 字符串
* 参数 bool $log_error: 是否将错误写入日志
@@ -44,7 +44,7 @@ CodeIgniter 和其他系统不太一样,错误报告函数是一个简单的
这个函数希望传入的字符串是没有找到的文件路径。退出状态码将会设置为 `EXIT_UNKNOWN_FILE`。注意如没有找到控制器 CodeIgniter 将会自动的显示 404 消息。CodeIgniter 自动将任何 `show_404()` 调用写入日志。将第二个参数设置为 FALSE,将会跳过日志。
-## log_message($level, $message, $php_error = FALSE)
+## log\_message($level, $message, $php_error = FALSE)
* 参数 字符串 $level: 日志级别 'error', 'debug' 或 'info'
* 参数 字符串 $message: 写入日志的消息
diff --git a/features.md b/features.md
index 51ae0f4..a9460fb 100644
--- a/features.md
+++ b/features.md
@@ -1,6 +1,6 @@
# CodeIgniter 特性
-开发框架是否优秀与它的特性没有太大的关系。从特性中你不知道用户的体验、不能体验到框架设计是否直接了当,是否智能。特性也不能告诉你框架代码的质量如何、性能如何、细节处理的如何、安全性如何。真正的判断一个框架的唯一办法是在使用它。CodeIgniter 的安装很简单,所以请使用它。CodeIgniter的主要特性如下:
+开发框架是否优秀与它的特性没有太大的关系。从特性中你不知道用户的体验、不能体验到框架设计是否直接了当,是否智能。特性也不能告诉你框架代码的质量如何、性能如何、细节处理的如何、安全性如何。真正的判断一个框架的唯一办法是使用它。CodeIgniter 的安装很简单,所以请使用它。CodeIgniter的主要特性如下:
- 系统基于 MVC 模型(Model)- 视图(View)- 控制器(Controllers)
- 超轻量级
diff --git a/getting_started_with_codeIgniter.md b/getting_started_with_codeIgniter.md
index 558b271..de0eb08 100644
--- a/getting_started_with_codeIgniter.md
+++ b/getting_started_with_codeIgniter.md
@@ -11,4 +11,4 @@
如果你遇到了问题,可以到[社区](http://forum.codeigniter.com/)来寻求帮助,也可以看看其他人的例子。
-[安装]:installation.md
+[安装]: installation_instructions.md
diff --git a/handling_multiple_environments.md b/handling_multiple_environments.md
index 90aebd3..e9cfc84 100644
--- a/handling_multiple_environments.md
+++ b/handling_multiple_environments.md
@@ -22,4 +22,4 @@ CodeIgniter 系统中有哪些地方使用了 ENVIRONMENT 常量。这个部分
### 配置文件
-可选的,你可以让 CodeIgniter 加载特定的环境配置文件。这可能会对管理如在多环境使用不同API密钥这样的事情很有用。 这在文档配置类“环境”一节有详细的说明。
\ No newline at end of file
+可选的,你可以让 CodeIgniter 加载特定的环境配置文件。这可能会对管理多环境使用不同 API 密钥这样的事情很有用。这在文档配置类“环境”一节有详细的说明。
\ No newline at end of file
diff --git a/hooks.md b/hooks.md
index 9645241..899dec0 100644
--- a/hooks.md
+++ b/hooks.md
@@ -1,6 +1,6 @@
# 钩子 - 扩展系统核心
-CodeIgniter 的钩子功能,让你可以在不改变系统核心文件的基础上,改变或增加系统的核心运行功能。当 CodeIgniter 运行后,它会产生一个特殊的进程,这个进程在项目流程文件里有说明。当然,您可以自定义一些动作来替代程序运行过程中的某些阶段。例如,你可以在控制器加载前运行一段脚本,或者在加载后运行,或者你想在其他地方触发脚本。
+CodeIgniter 的钩子功能,让你可以在不改变系统核心文件的基础上,改变或增加系统的核心运行功能。当 CodeIgniter 运行后,它会产生一个特殊的进程,这个进程在项目文件里有说明。当然,您可以自定义一些动作来替代程序运行过程中的某些阶段。例如,你可以在控制器加载前运行一段脚本,或者在加载后运行,或者你想在其他地方触发脚本。
## 启用钩子
@@ -27,10 +27,10 @@ CodeIgniter 的钩子功能,让你可以在不改变系统核心文件的基
- **class** 你希望调用的类。如果想使用过程函数来代替类的话,此项为空。
- **function** 你想调用的函数或方法的名字
- **filename** 包含你的类或函数的文件名
-- **filepath** 包含你的脚本的文件夹注意:你的脚本必须放在 *application/* 下的目录里,所以,文件路径是相对于目录的。例如,如果你的脚本放在 *application/hooks/*里,你可以简单的使用 'hooks' 作为文件路径。如果脚本位于 *application/hooks/utilities/*,你可以把 'hooks/utilities' 作为你的文件路径。注意后面没有 "/"。
+- **filepath** 包含你的脚本的文件夹。注意:你的脚本必须放在 *application/* 下的目录里,所以,文件路径是相对于目录的。例如,如果你的脚本放在 *application/hooks/*里,你可以简单的使用 'hooks' 作为文件路径。如果脚本位于 *application/hooks/utilities/*,你可以把 'hooks/utilities' 作为你的文件路径。注意后面没有 "/"。
- **params** 你希望传递给脚本的任何参数。这个参数是可选的。
-如果你用的时 PHP 5.3+, 你也能使用 lambda/anoymous 函数
+如果你用的是 PHP 5.3+, 你也能使用 lambda/anoymous 函数
(或闭包(closures)) 作为钩子:
$hook['post_controller'] = function()
diff --git a/installation_instructions.md b/installation_instructions.md
index a826302..015cec1 100644
--- a/installation_instructions.md
+++ b/installation_instructions.md
@@ -10,16 +10,16 @@ CodeIgniter 的安装分为四个步骤:
如果你希望通过隐藏 CodeIgniter 文件的路径来增加安全性,可以通过修改 system 和 application 目录的名字来实现,把它改成任何你喜欢的名字。如果已经修改了名字,你需要打开主目录下面的 index.php 文件设置里面的 `$system_path` 和 `$application_folder` 变量,把它改成之前修改的新名字。
-为了安全考虑,system 和 application 两个文件夹应放到网站根目录(Web Root)以外的地方,这样浏览器就不能够直接访问它们。在默认设置下, 在每个文件夹中都有一个 `.htaccess` 配置文件以拒绝直接访问, 但是当把代码部署到生产环境时最好移除他们,因为生产环境的 Web 服务可能会不支持 `.htaccess` 的配置。
+为了安全考虑,system 和 application 两个文件夹应放到网站根目录以外的地方,这样浏览器就不能够直接访问它们。在默认设置下, 在每个文件夹中都有一个 `.htaccess` 配置文件以拒绝直接访问, 但是当把代码部署到生产环境时最好移除他们,因为生产环境的 Web 服务可能会不支持 `.htaccess` 的配置。
如果你移动了以上两个文件夹,请打开主目录下的 index.php 文件并编辑 $system_path 和$application_folder 两个变量, 最好使用绝对路径进行替换, 例如:`/www/MyUser/system`.
-另外有一个附加的考虑就是,如果要在生产环境中使用,最好关闭 PHP 的错误报告,和其他任何与开发相关的功能,在 CodeIgniter 中,可以设置 `ENVIRONMENT` 常量来实现这个功能。详细的文档请参阅[安全]章节。
+另外有一个附加的考虑就是,如果要在生产环境中使用,最好关闭 PHP 的错误报告和其他任何与开发相关的功能,在 CodeIgniter 中,可以设置 `ENVIRONMENT` 常量来实现这个功能。详细的文档请参阅[安全]章节。
以上就是全部安装过程!
如果你刚刚接触 CodeIgniter,请阅读[用户指南]的开始部分,学习如何构造动态的 PHP 应用。让我们享受这个过程吧!
[安全]: security.md
-[用户指南]: getting_started.md
\ No newline at end of file
+[用户指南]: getting_started_with_codeIgniter.md
\ No newline at end of file
diff --git a/model_view_controller.md b/model_view_controller.md
index a1462b8..b9db64e 100644
--- a/model_view_controller.md
+++ b/model_view_controller.md
@@ -6,4 +6,4 @@ CodeIgniter 基于模式-视图-控制这一模式设计。MVC 能将逻辑层
- **视图** 是展示给用户看的信息。视图通常是一个 web 页面,但是在 CodeIgniter 中,视图也可以是页面的一部分,比如头部,底部。也可以是 RSS 页面,或者其他任何类型的页面。
- **控制** 是**模式**,**视图**,需要处理的资源的桥梁,并生成 web 页面。
-CodeIgniter 在使用 MVC 方面非常的宽松,因为**模式**并不是必须的。如果你觉得自己不需要分离,或者觉得维护**模式**,需要花费更多的精力,你可以不用管**模式**,仅使用**控制**和**视图**。CodeIgniter 也可以和你现有的脚本合并使用,或者允许自行开发此系统的核心库,可以使你以最适合你的方式工作。
+CodeIgniter 在使用 MVC 方面非常的宽松,因为**模式**并不是必须的。如果你觉得自己不需要分离,或者觉得维护**模式**,需要花费更多的精力,你可以不用管**模式**,仅使用**控制**和**视图**。CodeIgniter 也可以和你现有的脚本合并使用,或者允许自行开发此系统的核心库,可以让你找到最适合你的方式工作。
diff --git a/models.md b/models.md
index 47949f1..2b888fc 100644
--- a/models.md
+++ b/models.md
@@ -44,7 +44,7 @@
}
-注意: 上述例子使用的是 `查询生成器` 数据库方法。
+注意: 上述例子使用的是`查询生成器`数据库方法。
注意: 为了方便,我们直接使用了 `$_POST` 方法。这不是一个好方法,平时我们应该使用输入库方法 `$this->input->post('title')`。
@@ -128,17 +128,19 @@
- 您可以使用标准方法来连接数据库, 也可以通过控制器或者您的模型类。
- 您可以把第三个参数设置为 TRUE,来使模型加载函数自动连接数据库,连接配置可以在您的数据库配置文件中可以定义
- $this->load->model('model_name', '', TRUE);
-- 您可以手动设定第三个参数,来加载您的自定义数据库配置:
+ `$this->load->model('model_name', '', TRUE);`
- $config['hostname'] = 'localhost';
- $config['username'] = 'myusername';
- $config['password'] = 'mypassword';
- $config['database'] = 'mydatabase';
- $config['dbdriver'] = 'mysqli';
- $config['dbprefix'] = '';
- $config['pconnect'] = FALSE;
- $config['db_debug'] = TRUE;
- $this->load->model('model_name', '', $config);
+- 您可以手动设定第三个参数,来加载您的自定义数据库配置:
+
+ $config['hostname'] = 'localhost';
+ $config['username'] = 'myusername';
+ $config['password'] = 'mypassword';
+ $config['database'] = 'mydatabase';
+ $config['dbdriver'] = 'mysqli';
+ $config['dbprefix'] = '';
+ $config['pconnect'] = FALSE;
+ $config['db_debug'] = TRUE;
+
+ $this->load->model('model_name', '', $config);
diff --git a/news_section.md b/news_section.md
index c1374af..f20b6ab 100644
--- a/news_section.md
+++ b/news_section.md
@@ -1,12 +1,12 @@
# 读取新闻
-删一个章节中,我们通过写一个包含静态页面的类了解了这个架构的基本概念。通过添加自定义路由规则我们也重新梳理了 URI。现在我们开始介绍动态内容,并开始使用数据库
+上一个章节中,我们通过写一个包含静态页面的类,了解了这个架构的基本概念。通过添加自定义路由规则我们也重新梳理了 URI。现在我们开始介绍动态内容,并开始使用数据库
## 创建数据模型
数据库操作并不在控制器中(controller),而是在数据模型里,这样可以很容易的被复用。一般我们在数据模型中查询,插入,更新数据库信息。它表示你的数据。
-打开 *application/models/* 文件夹并创建一个新的文件 *News_model.php*,添加以下代码。请确认你已经按照文档[数据库配置]了数据库。
+打开 *application/models/* 文件夹并创建一个新的文件 *News_model.php*,添加以下代码。请确认你已经按照文档数据库配置了数据库。
row_array();
}
-通过这段代码,你可以执行 2 种不同的查询。你可以得到所有新的记录,或者通过 `slug <#>` 得到新的记录。你可能已经注意到 `$slug` 变量在运行前并没有被验证过,因为[查询生成器]已经把这事弄完了。
+通过这段代码,你可以执行 2 种不同的查询。你可以得到所有新的记录,或者通过 `slug <#>` 得到新的记录。你可能已经注意到 `$slug` 变量在运行前并没有被验证过,因为查询生成器已经把这事弄完了。
@@ -103,7 +103,7 @@
-这里,遍历所有的新闻并显示给用户。从上面的代码可以看出我们的模板是 PHP 和 HTML 的混合体。如果你想用模板语言,可以使用 CodeIgniter [模板解析器] 或者第三方解析器。
+这里,遍历所有的新闻并显示给用户。从上面的代码可以看出我们的模板是 PHP 和 HTML 的混合体。如果你想用模板语言,可以使用 CodeIgniter 模板解析器或者第三方解析器。
新闻列表页面已经完成,但是还没有新闻的独立显示页面。早些时候创建的数据模型可以很容易的实现这个功能。仅需要你添加以下代码到控制器并创建一个视图。回到 `News` 控制器并使用以下代码更新 `view()`。
@@ -123,7 +123,7 @@
$this->load->view('templates/footer');
}
-现在这里将 `$slug` 变量作为参赛传给了 `get_news()` 方法,这样就可以方法想要的文章了。剩下需要做的事情仅仅是创建一个相应的视图 *application/views/news/view.php*。添加以下代码:
+现在这里将 `$slug` 变量作为参数传给了 `get_news()` 方法,这样就可以方法想要的文章了。剩下需要做的事情仅仅是创建一个相应的视图 *application/views/news/view.php*。添加以下代码:
'.$news_item['title'].'';
@@ -138,10 +138,4 @@
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
-把浏览器地址定位到你的根目录,后面加上 index.php/news,然后看看你的新闻页面。
-
-
-[数据库配置]: configuration.md
-[查询生成器]: query_builder.md
-[支持的所有数据库]: requirements.md
-[模板解析器]:parser.md
\ No newline at end of file
+把浏览器地址定位到你的根目录,后面加上 index.php/news,然后看看你的新闻页面。
\ No newline at end of file
diff --git a/php_style_guide.md b/php_style_guide.md
index 5504568..5e5166e 100644
--- a/php_style_guide.md
+++ b/php_style_guide.md
@@ -112,7 +112,7 @@ PHP 闭合标签 “?>” 在 PHP 中对 PHP 的分析器是可选的。但是
## 注释
-通常来说,代码尽量需要注释。它不仅能帮助新手描述清楚流程和代码目的,也能让你几个月后再看代码能很快入手。注释灭幼强制规范,但是推荐以下形式。
+通常来说,代码尽量需要注释。它不仅能帮助新手描述清楚流程和代码目的,也能让你几个月后再看代码能很快入手。注释非强制规范,但是推荐以下形式。
[文档块](http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_phpDocumentor.howto.pkg.html#basics.docblock)式的注释要写在类和方法的声明前,这样它们就能被集成开发环境(IDE)捕获:
@@ -216,7 +216,7 @@ PHP 闭合标签 “?>” 在 PHP 中对 PHP 的分析器是可选的。但是
## 比较返回值与类型映射
-某些 PHP 函数失败时返回 FALSE,但是也有可能返回 "" 或 0,它在松散的比较重会被计算为 FALSE。在条件语句中使用这些返回值的时候,为了确保返回值是你所预期的类型而不是一个有着松散类型的值,请进行显式的比较。
+某些 PHP 函数失败时返回 FALSE,但是也有可能返回 "" 或 0,它在松散的比较中会被计算为 FALSE。在条件语句中使用这些返回值的时候,为了确保返回值是你所预期的类型而不是一个有着松散类型的值,请进行显式的比较。
在返回和检查你自己的变量时也要遵循这种严格的方法,必要时使用 === 和 !==。
@@ -261,7 +261,7 @@ PHP 闭合标签 “?>” 在 PHP 中对 PHP 的分析器是可选的。但是
## 兼容性
-CodeIgniter 推荐的版本是 5.4+,但是也需要和 PHP 5.2.4 版本兼容。你的代码必须版本兼容,提供合适的备案,或者做出选择性的功能。
+CodeIgniter 推荐的版本是 5.4+,但是也需要和 PHP 5.2.4 版本兼容。你的代码必须版本兼容,或提供合适的备案,或者做出选择性的功能。
不要使用那些依赖于非默认安装库的 PHP 函数,除非你的代码中包含了该函数不可用时的替代方法。
diff --git a/reserved_names.md b/reserved_names.md
index 373659b..28d1a48 100644
--- a/reserved_names.md
+++ b/reserved_names.md
@@ -1,10 +1,10 @@
# 保留字
-为了便于编码,CodeIgniter 使用了一些列的函数,方法,类和变量名来完成操作。因此,有一些名字开发中不能使用。底下的列表中的保留名字不能被使用。
+为了便于编码,CodeIgniter 使用了一系列的函数,方法,类和变量名来完成操作。因此,有一些名字开发中不能使用。底下的列表中的保留字不能被使用。
## 控制器名
-因为你的控制器类继承自主程序控制器,你方法名一定不要和主程序控制器类中得函数名相同,否则你的局部方法将会覆盖他们。底下列出了保留的名字。不用在你的控制器中使用:
+因为你的控制器类继承自主程序控制器,你方法名一定不要和主程序控制器类中得函数名相同,否则你的局部方法将会覆盖他们。底下列出了保留的名字。不能在你的控制器中使用:
- CI_Controller
@@ -15,9 +15,9 @@
- :php:func:`is_php()`
- :php:func:`is_really_writable()`
-- ``load_class()``
-- ``is_loaded()``
-- ``get_config()``
+- `load_class()`
+- `is_loaded()`
+- `get_config()`
- :php:func:`config_item()`
- :php:func:`show_error()`
- :php:func:`show_404()`
@@ -29,15 +29,15 @@
- :php:func:`is_https()`
- :php:func:`function_usable()`
- :php:func:`get_instance()`
-- ``_error_handler()``
-- ``_exception_handler()``
-- ``_stringify_attributes()``
+- `_error_handler()`
+- `_exception_handler()`
+- `_stringify_attributes()`
## 变量
-- ``$config``
-- ``$db``
-- ``$lang``
+- `$config`
+- `$db`
+- `$lang`
## 常量
diff --git a/running_via_the_cli.md b/running_via_the_cli.md
index 8172566..1b92209 100644
--- a/running_via_the_cli.md
+++ b/running_via_the_cli.md
@@ -11,7 +11,7 @@
这里有很多原因通过命令行运行 CodeIgniter,不过总是被忽略。
- 使用 cron 定时运行任务而不需要使用 wget 或 curl
-- 通过检查 $this->input->is_cli_request() 让你的 cron 任务无法通过网址访问到
+- 通过检查 $this->input->is\_cli\_request() 让你的 cron 任务无法通过网址访问到
- 让交互式任务可以做设置权限、清空缓存、执行备份等操
- 与其他语言进行集成。比如一个 C++ 脚本可以调用一条指令来运行你模型中的代码!
diff --git a/security.md b/security.md
index 8ae672c..8d689e3 100644
--- a/security.md
+++ b/security.md
@@ -1,6 +1,6 @@
# 安全
-本章描述了 web 安全的“最佳实践”,比详细说明了 CodeIgniter 的内部安全特性。
+本章描述了 web 安全的“最佳实践”,详细说明了 CodeIgniter 的内部安全特性。
## URI 安全
@@ -23,11 +23,11 @@ CodeIgniter 严格限制 URI 中所包含的字符,让你设计的程序减少
在生产环境中,通常都通过设置 *display_errors* 值为 0 ,来禁用 PHP 的错误报告。它能禁用 PHP 错误输出,它可能包含敏感信息。
-设置 index.php 里的 **ENVIRONMENT** 常量为 **\'production\'**,将会关闭这些错误。在开发模式中,还是尽量用 'development'。更多开发环境和生产环境的细节参考“处理环境”文档。
+设置 index.php 里的 **ENVIRONMENT** 常量为 **'production'**,将会关闭这些错误。在开发模式中,还是尽量用 'development'。更多开发环境和生产环境的细节参考“处理环境”文档。
-## magic_quotes_runtime
+## magic\_quotes\_runtime
-在系统初始化时, magic_quotes_runtime 指令被关闭,以便在数据库检索数据时不必去掉反斜线。
+在系统初始化时, magic\_quote\_runtime 指令被关闭,以便在数据库检索数据时不必去掉反斜线。
## 最佳实践
@@ -63,7 +63,7 @@ CodeIgniter 提供 CSRF 保护立即可用,它会自动触发每个非 Get HTT
- **不要**使用 Base64 或类似的编码来存储密码。这和以文本格式存储密码一样。一定要**哈希**,而不是编码。编码和加密是两种处理方法。密码必须是本人才能知道,因此只能这么做。哈希算法是不可逆的。
-- **不要**使用弱哈希算法,例如 MD5 或者 SHA1。这些算法已经过时,并且是有缺陷的,所以不是密码哈希的算法。同时,**不要**发明你自己的哈希算法。必须使用强哈希算法,比如 BCrypt,它使用 PHP 自己的哈希函数。请使用他们,即使你的 PHP 版本不是 5.5+,CodeIgniter 为你提供的版本最低是 5.3.7(如果你的版本打不到要求,请升级)。如果你不能升级到新版本,请使用 [hash_pbkdf()](http://php.net/hash_pbkdf2) 函数,它也提供了兼容算法。
+- **不要**使用弱哈希算法,例如 MD5 或者 SHA1。这些算法已经过时,并且是有缺陷的,所以不是好的密码哈希的算法。同时,**不要**发明你自己的哈希算法。必须使用强哈希算法,比如 BCrypt,它是 PHP 自己的哈希函数。请使用他们,即使你的 PHP 版本不是 5.5+,CodeIgniter 为你提供的版本最低是 5.3.7(如果你的版本达不到要求,请升级)。如果你不能升级到新版本,请使用 [hash_pbkdf()](http://php.net/hash_pbkdf2) 函数,它也提供了兼容算法。
- **不要**以明文的形式发送密码!即使对于密码拥有者,如果使用了“忘记密码”功能,重新生成一个随机的一次性密码,将它发送给用户。
diff --git a/static_pages.md b/static_pages.md
index 45bc5e2..dc01283 100644
--- a/static_pages.md
+++ b/static_pages.md
@@ -24,9 +24,9 @@
}
}
-你已经创建了一个 `pages` 类,包含一个名卫 `view` 的方法,参数卫 `$page`.`page` 类继承自 `CI_Controller` 类。这个新的 pages 类可以继承 `CI_Controller` (system/core/Controller.php) 类里面定义的方法和变量。
+你已经创建了一个 `pages` 类,包含一个名为 `view` 的方法,参数为 `$page`。`page` 类继承自 `CI_Controller` 类。这个新的 pages 类可以继承 `CI_Controller` (system/core/Controller.php) 类里面定义的方法和变量。
-这个控制器将会成为 **web 应用煤气请求的中心**。在 CodeIgniter 技术讨论中,它被称为超级对象。和任何 php 类一样,可以通过 `$this` 来调用这个控制器。通过 `$this`,可以加载库,视图,和常用的框架。
+这个控制器将会成为 **web 应用请求的中心**。在 CodeIgniter 技术讨论中,它被称为超级对象。和任何 php 类一样,可以通过 `$this` 来调用这个控制器。通过 `$this`,可以加载库,视图,和常用的框架。
现在你已经有了第一个方法,可以开始创建基础页面模板了。我们将会创建两个视图(页面模板),页头和页尾。
@@ -88,12 +88,12 @@
$route['default_controller'] = 'pages/view';
$route['(:any)'] = 'pages/view/$1';
-CodeIgniter 从头到尾读取路由规则,并且路由到即一个匹配规则上。每一个规则都是一个正则表达式(左侧)映射到一个由斜线分隔的控制器和方法名(右侧)。当有请求时,CodeIgniter 查找第一个匹配规则,并且调用合适的控制器和方法,可能还会带参数。
+CodeIgniter 从头到尾读取路由规则,并且路由到一个匹配规则上。每一个规则都是一个正则表达式(左侧)映射到一个由斜线分隔的控制器和方法名(右侧)。当有请求时,CodeIgniter 查找第一个匹配规则,并且调用合适的控制器和方法,可能还会带参数。
更多和 URI 路由相关的信息可以查看[路由文档].
-上面的代码第二行是指利用通配符 (:any) 可以使任何请求都能匹配到 `$routes` 数组,并且通过参数传递给pages 类的 view() 方法。
+上面的代码第二行是指利用通配符 (:any) 可以使任何请求都能匹配到 `$routes` 数组,并且通过参数传递给 pages 类的 view() 方法。
现在访问:`index.php/about`。看看是否已经能正确地显示页面了呢?真帅!
-[路由文档]: routing.md
+[路由文档]: uri_routing.md
diff --git a/uri_routing.md b/uri_routing.md
index d989a63..5ef8a03 100644
--- a/uri_routing.md
+++ b/uri_routing.md
@@ -4,7 +4,7 @@
example.com/class/function/id/
-然而在一些例子中,你也许想要重新隐射这个关系来调用一个不同的类/方法(class/function),而不是与 URL --对应。
+然而在一些例子中,你也许想要重新隐射这个关系来调用一个不同的类/方法(class/function),而不是与 URL 一一对应。
例如, 比如你想要 URL 长成这样:
@@ -30,6 +30,7 @@
你可以匹配文字的值或者使用以下两种通配类型:
**(:num)** 将匹配一个只包含数字的段
+
**(:any)** 将会匹配一个包含任何字符的段(除了 '/' 字符,因为它是段分割器)
注意: 通配符实际是常规表达式的别名,**:any** 被翻译成 **[^/]+**,**:num** 被翻译成 **[0-9]+**。
diff --git a/views.md b/views.md
index 1b0df8b..d540458 100644
--- a/views.md
+++ b/views.md
@@ -166,11 +166,5 @@ CodeIgniter 将会智能的处理多个从控制器发起的 `$this->load->view(
## 返回视图
view 函数第三个可选参数可以改变函数的行为,让数据作为字符串返回而不是发送到浏览器。如果你想用其他方法处理数据,这会很有用。如果你将参数设置为 TRUE (boolean),它将会返回数据。默认为 false,这样会发送给浏览器。如果你想要返回数据,记得将他赋值给变量。
-There is a third **optional** parameter lets you change the behavior of
-the method so that it returns data as a string rather than sending it
-to your browser. This can be useful if you want to process the data in
-some way. If you set the parameter to TRUE (boolean) it will return
-data. The default behavior is false, which sends it to your browser.
-Remember to assign it to a variable if you want the data returned::
$string = $this->load->view('myfile', '', TRUE);
diff --git a/web_page_caching.md b/web_page_caching.md
index f18fc8c..07181e6 100644
--- a/web_page_caching.md
+++ b/web_page_caching.md
@@ -20,17 +20,17 @@ CodeIgniter 允许单页缓存,你也可以设置缓存时间。当页面第
以上的代码可以放到任何一个方法中。先后的顺序不会影响,所以你可以自己定制位置。一旦标签设置好,你的页面就开始缓存。
-注意: 由于 CodeIgniter 存储缓存文件的方式,只有通过 view 文件的输出才能被缓存。
+> 注意: 由于 CodeIgniter 存储缓存文件的方式,只有通过 view 文件的输出才能被缓存。
-注意: 如果你改变了配置选项将会影响输出,你需要手工的删除缓存文件。
+> 注意: 如果你改变了配置选项将会影响输出,你需要手工的删除缓存文件。
-注意: 在缓存文件产生之前,请确保 application/cache 文件夹可写。
+> 注意: 在保存缓存文件之前,请确保 application/cache 文件夹可写。
## 删除缓存
如果你不再需要缓存,可以删除标签,这样它再失效后就不再缓存。
-注意: 删除标签并不会立即删除缓存文件。它将会在失效后才会删除。
+> 注意: 删除标签并不会立即删除缓存文件。它将会在失效后才会删除。
如果你需要手工删除缓存,可以使用 `delete_cache()` 方法。