Skip to content

Commit

Permalink
Merge pull request #162 from CodeIgniter-Chinese/upgrade-4.4.3
Browse files Browse the repository at this point in the history
升级到 4.4.3
  • Loading branch information
hex-ci authored Oct 28, 2023
2 parents 0c0e7eb + 614870b commit 3531a5f
Show file tree
Hide file tree
Showing 20 changed files with 146 additions and 31 deletions.
1 change: 1 addition & 0 deletions source/changelogs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
.. toctree::
:titlesonly:

v4.4.3
v4.4.2
v4.4.1
v4.4.0
Expand Down
2 changes: 1 addition & 1 deletion source/changelogs/v4.3.7.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
版本 4.3.7
#############

发布日期:2023年7月30日
发布日期:2023 年 7 月 30 日

**CodeIgniter4 4.3.7 版本发布**

Expand Down
2 changes: 1 addition & 1 deletion source/changelogs/v4.3.8.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
版本 4.3.8
#############

发布日期:2023年8月25日
发布日期:2023 年 8 月 25 日

**CodeIgniter4 4.3.8 版本发布**

Expand Down
4 changes: 2 additions & 2 deletions source/changelogs/v4.4.0.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
版本 4.4.0
#############

发布日期:2023年8月25日
发布日期:2023 年 8 月 25 日

CodeIgniter4 4.4.0 版本发布
**CodeIgniter4 4.4.0 版本发布**

.. contents::
:local:
Expand Down
4 changes: 2 additions & 2 deletions source/changelogs/v4.4.1.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
版本 4.4.1
#############

发布日期:2023年9月5日
发布日期:2023 年 9 月 5 日

**CodeIgniter4 4.4.1 版本**
**CodeIgniter4 4.4.1 版本发布**

.. contents::
:local:
Expand Down
4 changes: 2 additions & 2 deletions source/changelogs/v4.4.2.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
版本 4.4.2
#############

发布日期:2023年10月19日
发布日期:2023 年 10 月 19 日

**CodeIgniter4 4.4.2 版本**
**CodeIgniter4 4.4.2 版本发布**

.. contents::
:local:
Expand Down
25 changes: 25 additions & 0 deletions source/changelogs/v4.4.3.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
版本 4.4.3
#############

发布日期:2023 年 10 月 26 日

**CodeIgniter4 4.4.3 版本发布**

.. contents::
:local:
:depth: 3

安全性
********

- 修复了 *在生产环境中显示详细错误报告的问题*。
有关更多信息,请参阅 `安全公告 GHSA-hwxf-qxj7-7rfj <https://github.com/codeigniter4/CodeIgniter4/security/advisories/GHSA-hwxf-qxj7-7rfj>`_。

已修复的错误
************

- **UserGuide:** 修复了 :ref:`event-points` 中 ``pre_system`` 和 ``post_system`` 的描述。

请参阅仓库的
`CHANGELOG.md <https://github.com/codeigniter4/CodeIgniter4/blob/develop/CHANGELOG.md>`_
获取完整的修复 bug 列表。
20 changes: 15 additions & 5 deletions source/concepts/autoloader.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,10 @@ CodeIgniter 提供了一个非常灵活的自动加载器,可以通过非常少

初始配置在 **app/Config/Autoload.php** 中完成。该文件包含两个主要数组:一个用于类映射,一个用于 PSR-4 兼容命名空间。

.. _autoloader-namespaces:

命名空间
**********
==========

组织类的推荐方法是为应用程序文件创建一个或多个命名空间。这对于任何业务逻辑相关的类、实体类等尤为重要。配置文件中的 ``$psr4`` 数组允许你将命名空间映射到可以找到这些类的目录:

Expand All @@ -39,11 +41,19 @@ CodeIgniter 提供了一个非常灵活的自动加载器,可以通过非常少
每行的键是命名空间本身。这个不需要尾部反斜杠。
值是可以找到类的目录位置。

.. note:: 你可以使用 ``spark namespaces`` 命令检查命名空间配置:
.. _confirming-namespaces:

确认命名空间
=====================

你可以使用 ``spark namespaces`` 命令检查命名空间配置:

.. code-block:: console
.. code-block:: console
php spark namespaces
php spark namespaces
应用程序命名空间
=====================

默认情况下,应用程序目录被映射到 ``App`` 命名空间。你必须为应用程序目录中的控制器、库或模型添加命名空间,它们将在 ``App`` 命名空间下被找到。

Expand All @@ -57,7 +67,7 @@ CodeIgniter 提供了一个非常灵活的自动加载器,可以通过非常少
.. important:: 配置文件使用 ``Config`` 命名空间,而不是你可能期望的 ``App\Config``。这使得核心系统文件总是能够定位它们,即使应用程序命名空间已更改。

类映射
********
========

CodeIgniter 通过不通过文件系统进行额外的 ``is_file()`` 调用来获取系统最后的性能,广泛使用类映射。你可以使用类映射链接到未使用命名空间的第三方库:

Expand Down
2 changes: 1 addition & 1 deletion source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
version = '4.4'

# The full version, including alpha/beta/rc tags.
release = '4.4.2'
release = '4.4.3'

# -- General configuration ---------------------------------------------------

Expand Down
10 changes: 6 additions & 4 deletions source/extending/events.rst
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,16 @@ Events 库也使你可以在自己的代码中简单地创建事件。要使用

.. literalinclude:: events/008.php

事件点
.. _event-points:

事件挂钩点
============

以下是 CodeIgniter 核心代码中可用的事件点列表:
以下是 CodeIgniter 核心代码中可用的事件挂钩点列表:

* **pre_system** 在系统执行非常早期时调用。此时仅加载了 benchmark 和 events 类。没有进行路由或其他处理
* **pre_system** 在系统执行的早期调用。URI、请求和响应已经实例化,但尚未进行页面缓存检查、路由和执行“before”控制器过滤器
* **post_controller_constructor** 在控制器实例化后但在任何方法调用发生前立即调用。
* **post_system** 在向浏览器发送最终渲染页面后调用,在向浏览器发送最终数据后系统执行结束时调用
* **post_system** 在系统执行结束后,在最终渲染的页面发送到浏览器之前调用,在执行“after”控制器过滤器之后
* **email** 从 ``CodeIgniter\Email\Email`` 成功发送邮件后调用。接收 ``Email`` 类属性数组作为参数。
* **DBQuery** 在数据库查询成功或失败后调用。接收 ``Query`` 对象。
* **migrate** 在对 ``latest()`` 或 ``regress()`` 的成功迁移调用后调用。接收 ``MigrationRunner`` 的当前属性以及方法名称。
2 changes: 2 additions & 0 deletions source/general/environments.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@

如果你想要另一个环境,例如用于暂存,你可以添加自定义环境。请参阅 `添加环境`_。

.. _setting-environment:

*******************
设置环境
*******************
Expand Down
6 changes: 5 additions & 1 deletion source/general/errors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,11 @@ Exceptions 简单来说就是在抛出异常时发生的事件。这将中止脚
错误报告
---------------

默认情况下,CodeIgniter 将在 ``development`` 和 ``testing`` 环境中显示包含所有错误的详细错误报告,并且在 ``production`` 环境中不显示任何错误。你可以通过在 :ref:`.env <dotenv-file>` 文件中设置 ``CI_ENVIRONMENT`` 变量来更改此设置。
默认情况下,CodeIgniter 在 ``development`` 和 ``testing`` 环境下会显示包含所有错误的详细错误报告,并且在 ``production`` 环境下不会显示任何错误。

.. image:: ../images/error.png

你可以通过设置 ``CI_ENVIRONMENT`` 变量来更改你的环境。请参阅 :ref:`setting-environment`。

.. important:: 禁用错误报告并不会停止在错误发生时写入日志。

Expand Down
28 changes: 23 additions & 5 deletions source/general/helpers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,18 @@

CodeIgniter 默认不加载辅助文件,所以使用辅助函数的第一步是加载它。一旦加载,它就可以在你的 :doc:`控制器 <../incoming/controllers>` 和 :doc:`视图 <../outgoing/views>` 中全局使用。

辅助函数通常存储在 **system/Helpers** 或 **app/Helpers** 目录中。 CodeIgniter 会首先在你的 **app/Helpers** 目录中查找。如果目录不存在或指定的 helper 不在那里,CI 将改为在全局的 **system/Helpers** 目录中查找
辅助函数通常存储在 **system/Helpers** 或 **app/Helpers** 目录中。

****************
加载辅助函数
****************

.. note:: URL 辅助函数总是加载的,所以你不需要自己加载它。

使用以下方法加载辅助文件非常简单:
加载单个辅助函数
================

使用以下方法加载辅助函数文件非常简单:

.. literalinclude:: helpers/001.php

Expand All @@ -38,6 +41,19 @@ CodeIgniter 默认不加载辅助文件,所以使用辅助函数的第一步是

.. note:: 上面的辅助函数加载方法不返回值,所以不要试图将其分配给变量。只按显示的方式使用它。

自动发现和 Composer 包
------------------------

默认情况下,CodeIgniter 会通过 :ref:`auto-discovery` 在所有定义的命名空间中搜索辅助函数文件。
你可以使用 spark 命令来检查你定义的命名空间。请参阅 :ref:`confirming-namespaces`。

如果你使用了许多 Composer 包,那么你将有许多已定义的命名空间。
CodeIgniter 默认会扫描所有命名空间。

为了避免浪费时间扫描不相关的 Composer 包,你可以手动指定要进行自动发现的包。请参阅 :ref:`modules-specify-composer-packages` 了解详细信息。

或者,你可以为要加载的辅助函数 :ref:`指定一个命名空间 <helpers-loading-from-specified-namespace>`。

加载多个辅助函数
========================

Expand All @@ -54,12 +70,14 @@ CodeIgniter 默认不加载辅助文件,所以使用辅助函数的第一步是

但是,如果你想在控制器构造函数中加载,则可以改用 Controller 中的 ``$helpers`` 属性。参见 :ref:`控制器 <controllers-helpers>`。

.. _helpers-loading-from-non-standard-locations:
.. _helpers-loading-from-specified-namespace:

从非标准位置加载
从指定命名空间加载
===================================

只要通过 :doc:`自动加载器配置文件 <../concepts/autoloader>` 中的 PSR-4 部分设置的命名空间可以找到该路径,就可以从 **app/Helpers** 和 **system/Helpers** 之外的目录加载辅助函数。你会使用可以找到它们的命名空间前缀辅助函数的名称。在该命名空间目录内,加载器期望它存在于名为 **Helpers** 的子目录中。一个示例将有助于理解这一点。
辅助函数可以从 **app/Helpers** 和 **system/Helpers** 之外的目录加载,只要该路径可以在定义的命名空间中找到即可。

你会使用可以找到它们的命名空间前缀辅助函数的名称。在该命名空间目录内,加载器期望它存在于名为 **Helpers** 的子目录中。一个示例将有助于理解这一点。

对于此示例,假设我们已经将所有与博客相关的代码分组到自己的命名空间 ``Example\Blog`` 中。文件存在于我们的服务器上的 **Modules/Blog/** 中。因此,我们会将博客模块的辅助函数文件放在 **Modules/Blog/Helpers/** 中。**blog_helper** 文件将位于 **Modules/Blog/Helpers/blog_helper.php**。在我们的控制器中,我们可以使用以下命令加载辅助函数:

Expand Down
4 changes: 2 additions & 2 deletions source/general/modules.rst
Original file line number Diff line number Diff line change
Expand Up @@ -201,11 +201,11 @@ For Windows:
辅助函数
========

在使用 ``helper()`` 函数时,定义的命名空间内的辅助函数将被自动发现,只要它们在 **Helpers** 目录内:
在使用 :php:func:`helper()` 函数时,定义的命名空间内的辅助函数将被自动发现,只要它们在 **Helpers** 目录内:

.. literalinclude:: modules/009.php

你可以指定命名空间。详情请参阅 :ref:`helpers-loading-from-non-standard-locations`。
你可以指定命名空间。详情请参阅 :ref:`helpers-loading-from-specified-namespace`。

语言文件
==============
Expand Down
2 changes: 1 addition & 1 deletion source/helpers/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
辅助函数
########

辅助函数是一些程序功能的集合。
辅助函数是一些程序功能的集合。另请参阅 :doc:`../general/helpers`。

.. toctree::
:glob:
Expand Down
42 changes: 42 additions & 0 deletions source/installation/upgrade_443.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#############################
从 4.4.2 升级到 4.4.3
#############################

请参考与你的安装方法相对应的升级说明。

- :ref:`使用 Composer 安装 App Starter 升级 <app-starter-upgrading>`
- :ref:`使用 Composer 将 CodeIgniter4 添加到现有项目中升级 <adding-codeigniter4-upgrading>`
- :ref:`手动安装升级 <installing-manual-upgrading>`

.. contents::
:local:
:depth: 2

必要的文件更改
**********************

error_exception.php
===================

以下文件已经发生了重大更改,**你必须将更新的版本与你的应用程序合并**:

- app/Views/errors/html/error_exception.php

项目文件
*************

**项目空间** (根目录、app、public、writable) 中的一些文件已经更新。由于这些文件位于 **system** 范围之外,因此在没有你的干预下不会更改。

有一些第三方 CodeIgniter 模块可用于帮助合并对项目空间的更改:`在 Packagist 上查看 <https://packagist.org/explore/?query=codeigniter4%20updates>`_。

所有更改
===========

这是 **项目空间** 中所有已经更改的文件的列表;其中许多只是注释或格式化的简单更改,对运行时没有影响:

- app/Config/Boot/development.php
- app/Config/Boot/production.php
- app/Config/Boot/testing.php
- app/Config/Filters.php
- app/Views/errors/html/error_404.php
- app/Views/errors/html/error_exception.php
6 changes: 4 additions & 2 deletions source/installation/upgrade_4xx.rst
Original file line number Diff line number Diff line change
Expand Up @@ -110,11 +110,13 @@ CodeIgniter 4 是框架的重写,并且不向后兼容。将你的应用程序
钩子
=====

- `钩子 <https://www.codeigniter.com/userguide3/general/hooks.html>`_ 已被
:doc:`../extending/events` 替换。
- `钩子 <https://www.codeigniter.com/userguide3/general/hooks.html>`_ 已被 :doc:`../extending/events` 替换。
- 不再使用 CI3 的 ``$hook['post_controller_constructor']``,现在使用
``Events::on('post_controller_constructor', ['MyClass', 'MyFunction']);``,命名空间为 ``CodeIgniter\Events\Events;``。
- 事件始终启用,并全局可用。
- 挂钩点 ``pre_controller`` 和 ``post_controller`` 已被移除。使用 :doc:`../incoming/filters` 代替。
- 挂钩点 ``display_override`` 和 ``cache_override`` 已被移除。因为基础方法已被移除。
- 挂钩点 ``post_system`` 已经移动到在发送最终渲染页面之前。

扩展框架
=======================
Expand Down
1 change: 1 addition & 0 deletions source/installation/upgrading.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

backward_compatibility_notes

upgrade_443
upgrade_442
upgrade_441
upgrade_440
Expand Down
6 changes: 5 additions & 1 deletion source/libraries/validation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -806,7 +806,8 @@ valid_cc_number 是 验证信用卡号是否与指定提供程
======================= ========== ============================================================ ===================================================
规则 参数 描述 示例
======================= ========== ============================================================ ===================================================
uploaded 是 如果参数的名称与任何上传的文件的名称不匹配,则失败。 ``uploaded[field_name]``
uploaded 是 如果参数的名称与任何上传文件的名称不匹配,则会失败。 ``uploaded[field_name]``
如果你希望文件上传是可选的(不是必需的),则不要定义此规则。
max_size 是 如果名为参数的上传文件大于第二个参数的千字节(kb),则失败。
或者如果文件大于 php.ini 配置文件中声明的
最大大小 - ``upload_max_filesize`` 指令。
Expand All @@ -819,3 +820,6 @@ is_image 是 如果根据 mime 类型无法确定文件
======================= ========== ============================================================ ===================================================

文件验证规则适用于单个和多个文件上传。

.. note:: 仅可以使用专门为文件验证创建的规则(如上表中列出的规则)来验证文件。
因此,将任何通用规则(如 ``permit_empty``)添加到文件验证规则数组或字符串中,文件验证将无法正常工作。
6 changes: 5 additions & 1 deletion source/models/model.rst
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,11 @@ initialize()
连接数据库
==========================

当类首次实例化时,如果没有向构造函数传递数据库连接实例,它将自动连接到配置中设置的默认数据库组。你可以通过在类中添加 ``$DBGroup`` 属性为每个模型修改使用的组。这确保模型内对 ``$this->db`` 的任何引用都通过适当的连接进行。
当首次实例化类时,如果没有将数据库连接实例传递给构造函数,并且如果你没有在模型类上设置 ``$DBGroup`` 属性,
它将自动连接到数据库配置中设置的默认数据库组。

你可以通过在类中添加 ``$DBGroup`` 属性来修改每个模型使用的组。
这样可以确保在模型内部,对 ``$this->db`` 的任何引用都通过适当的连接进行。

.. literalinclude:: model/004.php

Expand Down

0 comments on commit 3531a5f

Please sign in to comment.