Skip to content

Commit

Permalink
升级到 4.5.4 (#166)
Browse files Browse the repository at this point in the history
  • Loading branch information
hex-ci authored Sep 6, 2024
1 parent 544925b commit 7a44b18
Show file tree
Hide file tree
Showing 14 changed files with 222 additions and 133 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.5.4
v4.5.3
v4.5.2
v4.5.1
Expand Down
22 changes: 22 additions & 0 deletions source/changelogs/v4.5.4.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#############
版本 4.5.4
#############

发布日期:2024 年 7 月 27 日

**CodeIgniter4 的 4.5.4 版本发布**

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

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

- **路由:** 修复了一个错误,即传递给 ``$routes->group()`` 的过滤器没有合并到传递给内部路由的过滤器中。
- **CURLRequest:** 修复了一个错误,即在进行请求时,配置数组中的 ``version`` 字符串无法使用。

请参阅仓库的
`CHANGELOG.md <https://github.com/codeigniter4/CodeIgniter4/blob/develop/CHANGELOG.md>`_
以获取修复错误的完整列表。
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.5'

# The full version, including alpha/beta/rc tags.
release = '4.5.3'
release = '4.5.4'

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

Expand Down
8 changes: 5 additions & 3 deletions source/database/query_builder.rst
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,8 @@ $builder->fromSubquery()
Join
====

.. _query-builder-join:

$builder->join()
----------------

Expand All @@ -226,7 +228,7 @@ RawSql

.. versionadded:: 4.2.0

v4.2.0 开始, ``$builder->join()`` 接受一个 ``CodeIgniter\Database\RawSql`` 实例,它表示原始 SQL 字符串。
v4.2.0 起,``$builder->join()`` 接受一个 ``CodeIgniter\Database\RawSql`` 实例作为 JOIN ON 条件,该实例用于表示原始 SQL 字符串。

.. literalinclude:: query_builder/102.php

Expand Down Expand Up @@ -1329,13 +1331,13 @@ $builder->resetQuery()
.. php:method:: join($table, $cond[, $type = ''[, $escape = null]])
:param string $table: 要连接的表名
:param string $cond: JOIN ON 条件
:param string|RawSql $cond: JOIN ON 条件
:param string $type: JOIN 类型
:param bool $escape: 是否转义值和标识符
:returns: ``BaseBuilder`` 实例(方法链)
:rtype: ``BaseBuilder``

向查询添加 ``JOIN`` 子句。
向查询添加 ``JOIN`` 子句。自 v4.2.0 起,``RawSql`` 可以用作 JOIN ON 条件。另见 :ref:`query-builder-join`。

.. php:method:: where($key[, $value = null[, $escape = null]])
Expand Down
2 changes: 2 additions & 0 deletions source/general/configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,8 @@ CodeIgniter 期望 **.env** 文件与 **app** 目录一起位于项目的根目

如果在 :doc:`模块 </general/modules>` 中启用了 :ref:`auto-discovery`,则注册器可以在命名空间和文件之间在运行时更改配置属性。

.. note:: 此功能在 ``CodeIgniter\Config\BaseConfig`` 类中实现。因此,它不适用于 **app/Config** 文件夹中未继承该类的某些文件。

有两种实现注册器的方法: **隐式** 和 **显式**。

.. note:: 来自 **.env** 的值始终优先于注册器。
Expand Down
26 changes: 16 additions & 10 deletions source/incoming/filters.rst
Original file line number Diff line number Diff line change
Expand Up @@ -62,29 +62,33 @@
配置过滤器
*******************

配置过滤器运行时有两种方法。一种是在 **app/Config/Filters.php** 中进行配置,另一种是在 **app/Config/Routes.php** 中进行配置。
配置过滤器的运行方式有两种。一种是在 **app/Config/Filters.php** 中进行配置,另一种是在 **app/Config/Routes.php** 中进行配置。

如果你想为特定的路由指定过滤器,请使用 **app/Config/Routes.php** 并参考 :ref:`URI Routing <applying-filters>`。
如果你想为定义的路由指定过滤器,请使用 **app/Config/Routes.php** 并参考 :ref:`URI 路由 <applying-filters>`。

.. note:: 最安全的应用过滤器方法是 :ref:`禁用自动路由 <use-defined-routes-only>`,并 :ref:`设置过滤器到路由 <applying-filters>`。
.. note:: 应用过滤器最安全的方法是 :ref:`禁用自动路由 <use-defined-routes-only>`并 :ref:`将过滤器设置到路由 <applying-filters>`。

app/Config/Filters.php
======================

**app/Config/Filters.php** 文件包含四个属性,允许你精确配置过滤器的运行时机。

.. warning:: 建议你在过滤器设置中的 URI 末尾始终添加 ``*``。因为控制器方法可能比你想象的通过不同的 URL 访问。例如,当启用 :ref:`auto-routing-legacy` 时,如果你有 ``Blog::index``,它可以通过 ``blog``、``blog/index`` 和 ``blog/index/1`` 等方式访问。
.. warning:: 建议你在过滤器设置中的 URI 末尾始终添加 ``*``。因为控制器方法可能比你想象的通过不同的 URL 访问。例如,当启用 :ref:`auto-routing-legacy` 时,如果你有 ``Blog::index()``,它可以通过 ``blog``、``blog/index`` 和 ``blog/index/1`` 等方式访问。

.. _filters-aliases:

$aliases
--------

``$aliases`` 数组用于将简单名称与一个或多个完全限定的类名相关联,这些类名是要运行的过滤器:
``$aliases`` 数组用于将一个简单的名称与一个或多个完全限定类名关联起来,这些类名是要运行的过滤器

.. literalinclude:: filters/003.php

别名是强制性的,如果你稍后尝试使用完整的类名,系统将抛出错误。以这种方式定义使得切换使用的类变得简单。非常适合当你决定需要更改到不同的身份验证系统时,因为你只需要更改过滤器的类即可完成。
别名是强制性的,如果你尝试稍后使用完整的类名,系统会抛出错误。

以这种方式定义它们可以简化类的切换。当你决定需要更换不同的认证系统时,这种方式非常有用,因为你只需更改过滤器的类即可。

你可以将多个过滤器组合成一个别名,使复杂的过滤器组非常简单:
你可以将多个过滤器组合成一个别名,使得应用复杂的过滤器集变得简单:

.. literalinclude:: filters/004.php

Expand Down Expand Up @@ -131,7 +135,7 @@ $globals

.. warning:: 在 v4.4.7 之前,由于一个漏洞,被过滤器处理的 URI 路径没有进行 URL 解码。换句话说,路由中指定的 URI 路径和过滤器中指定的 URI 路径可能会不同。详细信息请参见 :ref:`upgrade-447-filter-paths`。

在过滤器设置中可以使用 URI 路径(相对于 BaseURL)的任何位置,你都可以使用正则表达式,或者像在这个例子中使用星号 (``*``) 作为通配符,匹配之后的所有字符。在这个例子中,任何以 ``api/`` 开头的 URI 路径都将被免于 CSRF 保护,但网站的表单将全部受保护
在过滤器设置中,任何可以使用 URI 路径(相对于 BaseURL)的地方,你都可以使用正则表达式,或者像上面的例子中那样,使用星号 (``*``) 作为通配符来匹配其后的所有字符。在这个例子中任何以 ``api/`` 开头的 URI 路径都将被排除在 CSRF 保护之外,但网站的表单将全部受到保护

如果你需要指定多个 URI,可以使用 URI 路径模式数组:

Expand All @@ -142,13 +146,15 @@ $methods

.. warning:: 如果使用 ``$methods`` 过滤器,你应该 :ref:`禁用自动路由(传统) <use-defined-routes-only>`,因为 :ref:`auto-routing-legacy` 允许任何 HTTP 方法访问控制器。以你不期望的方法访问控制器可能会绕过过滤器。

你可以将过滤器应用于所有某种 HTTP 方法的请求,如 POSTGETPUT 等。在此数组中,你需要以 **全小写** 指定方法名称。它的值将是要运行的过滤器数组:
你可以对某个 HTTP 方法(如 ``POST``、``GET``、``PUT`` 等)的所有请求应用过滤器。其值将是一个要运行的过滤器数组:

.. literalinclude:: filters/008.php

.. note:: 与 ``$globals`` 或 ``$filters`` 属性不同,这些只能作为前置过滤器运行。

除了标准的 HTTP 方法外,这也支持一个特殊情况:``cli``。``cli`` 方法将应用于所有从命令行运行的请求。
除了标准的 HTTP 方法外,这里还支持一个特殊情况:``CLI``。``CLI`` 方法将应用于所有从命令行运行的请求。

.. note:: 在 v4.5.0 之前,由于一个错误,你需要以 **小写** 指定 HTTP 方法名称。

$filters
--------
Expand Down
11 changes: 7 additions & 4 deletions source/incoming/routing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -350,12 +350,13 @@ HTTP 动词路由
================

你可以通过在控制器之前或之后提供要运行的过滤器来更改特定路由的行为。这在认证或 API 日志记录时特别方便。

过滤器的值可以是字符串或字符串数组:

* 与 **app/Config/Filters.php** 中定义的别名匹配。
* 过滤器类名

有关设置过滤器的更多信息,请参阅 :doc:`控制器过滤器 <filters>`
请参阅 :ref:`控制器过滤器 <filters-aliases>` 了解更多关于定义别名的信息

.. warning:: 如果你在 **app/Config/Routes.php** 中为路由设置过滤器(而不是在 **app/Config/Filters.php** 中)
建议禁用 Auto Routing(传统)。当启用 :ref:`auto-routing-legacy` 时,控制器可能可以通过与配置路由不同的 URL 访问,
Expand All @@ -364,7 +365,7 @@ HTTP 动词路由
别名过滤器
------------

你为过滤器值指定在 **app/Config/Filters.php** 中定义的别名:
你可以为过滤器值指定一个 :ref:`app/Config/Filters.php 中定义 <filters-aliases>` 的别名。

.. literalinclude:: routing/034.php

Expand All @@ -377,7 +378,7 @@ HTTP 动词路由

.. versionadded:: 4.1.5

你可以为过滤器值指定过滤器类名:
你可以为过滤器值指定一个过滤器类名:

.. literalinclude:: routing/036.php

Expand All @@ -394,7 +395,7 @@ HTTP 动词路由
:ref:`从 4.1.4 升级到 4.1.5 <upgrade-415-multiple-filters-for-a-route>`
了解详情。

你可以为过滤器值指定一个数组:
你可以为过滤器值指定一个数组

.. literalinclude:: routing/037.php

Expand Down Expand Up @@ -509,6 +510,8 @@ HTTP 动词路由

过滤器的值必须与 **app/Config/Filters.php** 内定义的别名之一匹配。

.. note:: 在 v4.5.4 之前,由于一个 bug,传递给 ``group()`` 的过滤器没有合并到传递给内部路由的过滤器中。

设置其他选项
=====================

Expand Down
2 changes: 2 additions & 0 deletions source/installation/upgrade_420.rst
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ Config/Constants.php
composer.json
=============

.. note:: 此步骤在 v4.5.0 或更高版本中不再需要。

如果你使用 Composer,在安装 CodeIgniter v4.1.9 或更早版本时,如果 ``/composer.json`` 的 ``autoload.psr-4`` 中存在类似下面的 ``App\\`` 和 ``Config\\`` 命名空间,你需要删除这些行并运行 ``composer dump-autoload``。

.. code-block:: text
Expand Down
30 changes: 30 additions & 0 deletions source/installation/upgrade_454.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#############################
从 4.5.3 升级到 4.5.4
#############################

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

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

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

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

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

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

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

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

- app/Config/Events.php
- composer.json
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_454
upgrade_453
upgrade_452
upgrade_451
Expand Down
Loading

0 comments on commit 7a44b18

Please sign in to comment.