Skip to content

Commit ba07b37

Browse files
authored
Merge pull request #161 from CodeIgniter-Chinese/upgrade-4.4.2
Upgrade 4.4.2
2 parents 8bef592 + 493ff47 commit ba07b37

File tree

242 files changed

+4275
-1202
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

242 files changed

+4275
-1202
lines changed

source/_static/css/citheme.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,10 @@ html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(
241241
margin-top: 2rem;
242242
}
243243

244+
.highlight-console .highlight {
245+
background-color: #fffff0;
246+
}
247+
244248
/* Messages ----------------------------------------------------------------- */
245249

246250
.rst-content .success {

source/_static/css/citheme_dark.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,4 +343,8 @@
343343
.highlight .ni {
344344
color: #b780b7;
345345
}
346+
347+
.highlight-console .highlight pre {
348+
background: #434343;
349+
}
346350
}

source/changelogs/index.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
.. toctree::
1313
:titlesonly:
1414

15+
v4.4.2
16+
v4.4.1
17+
v4.4.0
18+
v4.3.8
19+
v4.3.7
1520
v4.3.6
1621
v4.3.5
1722
v4.3.4

source/changelogs/v4.1.1.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
- 修复了 ``.gitattributes`` 阻止框架下载的问题。
1616

17-
请注意,此修复也被回溯应用于 **framework** 仓库中的 ``4.0.5``
17+
请注意,此修复也被回溯应用于 **framework** 仓库中的 4.0.5
1818

1919
有关已修复的错误列表,请参见仓库的
2020
`CHANGELOG_4.1.md <https://github.com/codeigniter4/CodeIgniter4/blob/develop/changelogs/CHANGELOG_4.1.md>`_。

source/changelogs/v4.3.7.rst

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
版本 4.3.7
2+
#############
3+
4+
发布日期:2023年7月30日
5+
6+
**CodeIgniter4 4.3.7 版本发布**
7+
8+
.. contents::
9+
:local:
10+
:depth: 3
11+
12+
重大变更
13+
********
14+
15+
- **路由集合 (RouteCollection):** 在 ``RouteCollection::getRoutes()`` 方法中添加了第二个参数 ``bool $includeWildcard = true``。
16+
- **AutoRouting Legacy:** ``AutoRouter::__construct()`` 的第一个参数从 ``$protectedControllers`` 更改为 ``$cliRoutes``。
17+
- **FeatureTestTrait:** 当使用 :ref:`withBodyFormat() <feature-formatting-the-request>` 时,请求正文的优先级已更改。详情请参考 :ref:`升级指南 <upgrade-437-feature-testing>`。
18+
- **验证 (Validation):** ``Validation::loadRuleGroup()`` 的返回值从“**规则数组**”更改为“**规则数组** 和* *自定义错误数组** 的 **数组**” (``[rules, customErrors]``)。
19+
20+
变更
21+
*******
22+
23+
- 数字辅助函数 :php:func:`number_to_amount()`,以前返回“1000”,现在在数字恰好为1000时已更正为返回“1千”。
24+
25+
已修复的错误
26+
************
27+
28+
- **自动路由遗留功能:** 修复了一个问题,当你使用 ``$routes->add()`` 添加路由时,控制器的其他方法在Web浏览器中无法访问。
29+
30+
请查看仓库的 `CHANGELOG.md <https://github.com/codeigniter4/CodeIgniter4/blob/develop/CHANGELOG.md>`_ 以获取已修复错误的完整列表。

source/changelogs/v4.3.8.rst

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
版本 4.3.8
2+
#############
3+
4+
发布日期:2023年8月25日
5+
6+
**CodeIgniter4 4.3.8 版本发布**
7+
8+
.. contents::
9+
:local:
10+
:depth: 3
11+
12+
已修复的错误
13+
************
14+
15+
- **控制器过滤器 (Controller Filters):** 在以前的版本中,``['except' => []]`` 或 ``['except' => '']``
16+
意味着“排除所有”。已修复此错误,现在
17+
18+
- ``['except' => []]`` 意味着不排除任何内容。
19+
- ``['except' => '']`` 意味着只排除基础URL。
20+
21+
请查看仓库的 `CHANGELOG.md <https://github.com/codeigniter4/CodeIgniter4/blob/develop/CHANGELOG.md>`_ 以获取已修复错误的完整列表。

source/changelogs/v4.4.0.rst

Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,304 @@
1+
版本 4.4.0
2+
#############
3+
4+
发布日期:2023年8月25日
5+
6+
CodeIgniter4 的 4.4.0 版本发布
7+
8+
.. contents::
9+
:local:
10+
:depth: 3
11+
12+
亮点
13+
**********
14+
15+
- 调试工具栏现在具有新的“热重载”功能
16+
(** `lonnieezell <https://github.com/lonnieezell>`_ 贡献)。
17+
请参阅 `测试`_。
18+
19+
重大变更
20+
********
21+
22+
行为变更
23+
================
24+
25+
URI::setSegment() 和不存在的段
26+
------------------------------------------
27+
28+
当你设置最后一个 ``+2`` 段时,现在会抛出异常。
29+
在之前的版本中,只有当指定了最后一个段的 ``+3`` 或更多时才会抛出异常。请参阅 :ref:`upgrade-440-uri-setsegment`。
30+
31+
当前最后一个段的下一个段(``+1``)可以像以前一样设置。
32+
33+
.. _v440-factories:
34+
35+
工厂
36+
---------
37+
38+
使用命名空间传递类名
39+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
40+
41+
现在,只有在请求 :ref:`不带命名空间的类名 <factories-passing-classname-without-namespace>` 时,``preferApp`` 才起作用。
42+
43+
例如,当你调用 ``model(\Myth\Auth\Models\UserModel::class)`` 或
44+
``model('Myth\Auth\Models\UserModel')`` 时:
45+
46+
- 之前:
47+
48+
- 如果存在 ``App\Models\UserModel`` 并且 ``preferApp`` 为 true(默认值),则返回该类
49+
- 如果存在 ``Myth\Auth\Models\UserModel`` 并且 ``preferApp`` 为 false,则返回该类
50+
51+
- 现在:
52+
53+
- 无论 ``preferApp`` 是否为 true(默认值),都返回 ``Myth\Auth\Models\UserModel``
54+
- 如果在调用 ``model()`` 之前定义了 ``Factories::define('models', 'Myth\Auth\Models\UserModel', 'App\Models\UserModel')``,则返回 ``App\Models\UserModel``
55+
56+
如果你错误地传递了一个不存在的类名,之前的版本会返回 ``App`` 或 ``Config`` 命名空间中的类实例,因为存在 ``preferApp`` 功能。
57+
58+
例如,在控制器(``namespace App\Controllers``)中,如果你错误地调用了 ``config(Config\App::class)`` (注意类名缺少前导的 ``\``),实际上传递的是 ``App\Controllers\Config\App``。
59+
但是该类不存在,因此 Factories 现在将返回 ``null``。
60+
61+
属性名称
62+
^^^^^^^^^^^^^
63+
64+
属性 ``Factories::$basenames`` 已更名为 ``$aliases``。
65+
66+
自动加载器
67+
----------
68+
69+
以前,CodeIgniter 的自动加载器允许加载以 `.php` 扩展名结尾的类名。这意味着可以实例化类似 `new Foo.php()` 的对象,并将其实例化为 `new Foo()`。由于 `Foo.php` 是无效的类名,自动加载器的行为已更改。现在,实例化这样的类将失败。
70+
71+
.. _v440-codeigniter-and-exit:
72+
73+
CodeIgniter 和 exit()
74+
----------------------
75+
76+
``CodeIgniter::run()`` 方法不再调用 ``exit(EXIT_SUCCESS)``。退出调用已移至 **public/index.php**。
77+
78+
.. _v440-site-uri-changes:
79+
80+
站点 URI 更改
81+
----------------
82+
83+
添加了一个扩展了 ``URI`` 类并表示站点 URI 的新 ``SiteURI`` 类,并且现在在许多需要当前 URI 的地方使用它。
84+
85+
控制器中的 ``$this->request->getUri()`` 返回 ``SiteURI`` 实例。
86+
此外,:php:func:`site_url()` 、:php:func:`base_url()` 和 :php:func:`current_url()`
87+
在内部使用 SiteURI。
88+
89+
getPath()
90+
^^^^^^^^^
91+
92+
``getPath()`` 方法现在始终返回带有前导 ``/`` 的完整 URI 路径。
93+
因此,当你的 baseURL 具有子目录并且你想获取相对于 baseURL 的路径时,必须使用新的 ``getRoutePath()`` 方法。
94+
95+
例如::
96+
97+
baseURL: http://localhost:8888/CodeIgniter4/
98+
当前 URI: http://localhost:8888/CodeIgniter4/foo/bar
99+
getPath(): /CodeIgniter4/foo/bar
100+
getRoutePath(): foo/bar
101+
102+
站点 URI 值
103+
^^^^^^^^^^^^^^^
104+
105+
SiteURI 类现在比以前更严格地规范化站点 URI,并修复了一些错误。
106+
107+
因此,与之前的版本相比,框架可能会以稍微不同的方式返回站点 URI 或 URI 路径。
108+
例如,在 ``index.php`` 之后会添加 ``/``::
109+
110+
http://example.com/test/index.php?page=1
111+
112+
http://example.com/test/index.php/?page=1
113+
114+
.. _v440-interface-changes:
115+
116+
接口更改
117+
=================
118+
119+
.. note:: 只要你没有扩展相关的 CodeIgniter 核心类或实现这些接口,所有这些更改都是向后兼容的,无需干预。
120+
121+
- **Validation:** 在 ``ValidationInterface`` 中添加了 ``getValidated()`` 方法。
122+
123+
.. _v440-method-signature-changes:
124+
125+
方法签名更改
126+
========================
127+
128+
.. _v440-parameter-type-changes:
129+
130+
参数类型更改
131+
----------------------
132+
133+
- **Services:**
134+
- ``Services::security()`` 的第一个参数已从 ``Config\App`` 更改为 ``Config\Security``。
135+
- ``Services::session()`` 的第一个参数已从 ``Config\App`` 更改为 ``Config\Session``。
136+
- **Session:**
137+
- ``Session::__construct()`` 的第二个参数已从 ``Config\App`` 更改为 ``Config\Session``。
138+
- 数据库的 ``BaseHandler``、``DatabaseHandler``、``FileHandler``、``MemcachedHandler`` 和 ``RedisHandler`` 中的 ``__construct()`` 的第一个参数已从 ``Config\App`` 更改为 ``Config\Session``。
139+
- **Security:** ``Security::__construct()`` 的第一个参数已从 ``Config\App`` 更改为 ``Config\Security``。
140+
- **Validation:** ``Validation::check()`` 的方法签名已更改。``$rule`` 参数上的 ``string`` 类型提示已被删除。
141+
- **CodeIgniter:** ``CodeIgniter::setRequest()`` 的方法签名已更改。``$request`` 参数上的 ``Request`` 类型提示已被删除。
142+
- **FeatureTestCase:**
143+
- ``FeatureTestCase::populateGlobals()`` 的方法签名已更改。``$request`` 参数上的 ``Request`` 类型提示已被删除。
144+
- ``FeatureTestCase::setRequestBody()`` 的方法签名已更改。``$request`` 参数上的 ``Request`` 类型提示和返回类型 ``Request`` 已被删除。
145+
146+
添加的参数
147+
----------------
148+
149+
- **Routing:** 在 ``RouteCollection::__construct()`` 中添加了第三个参数 ``Routing $routing``。
150+
151+
删除的参数
152+
------------------
153+
154+
- **Services:** 在 ``Services::exceptions()`` 中删除了第二个参数 ``$request`` 和第三个参数 ``$response``。
155+
- **错误处理:** 在 ``CodeIgniter\Debug\Exceptions::__construct()`` 中删除了第二个参数 ``$request`` 和第三个参数 ``$response``。
156+
157+
返回类型更改
158+
-------------------
159+
160+
- **自动加载器:** ``loadClass`` 和 ``loadClassmap`` 方法的返回签名都改为 ``void``,以便与 ``spl_autoload_register`` 和 ``spl_autoload_unregister`` 函数中的回调兼容。
161+
162+
增强功能
163+
************
164+
165+
命令
166+
========
167+
168+
- **spark routes:**
169+
- 现在你可以在请求 URL 中指定主机。
170+
请参阅 :ref:`routing-spark-routes-specify-host`。
171+
- 它在 *Handler* 中显示 :ref:`view-routes` 的视图文件,如下所示:
172+
173+
+---------+-------------+------+------------------------------+----------------+---------------+
174+
| Method | Route | Name | Handler | Before Filters | After Filters |
175+
+---------+-------------+------+------------------------------+----------------+---------------+
176+
| GET | about | » | (View) pages/about | | toolbar |
177+
+---------+-------------+------+------------------------------+----------------+---------------+
178+
179+
180+
测试
181+
=======
182+
183+
- **调试工具栏:**
184+
- 调试工具栏现在具有新的“热重载”功能,可以在文件更改时自动重新加载页面。
185+
请参阅 :ref:`debug-toolbar-hot-reload`。
186+
- 现在,在 *Routes* 选项卡的 *DEFINED ROUTES* 中显示 :ref:`view-routes`。
187+
188+
数据库
189+
========
190+
191+
- **MySQLi:** 在数据库配置中添加了 ``numberNative`` 属性,以保持 SQL 查询后获取的变量类型与数据库中设置的类型一致。
192+
请参阅 :ref:`Database Configuration <database-config-explanation-of-values>`。
193+
- **SQLSRV:** 字段元数据现在包括 ``nullable``。请参阅 :ref:`db-metadata-getfielddata`。
194+
195+
模型
196+
=====
197+
198+
- 为实体添加了特殊的 getter/setter,以避免方法名称冲突。
199+
请参阅 :ref:`entities-special-getter-setter`。
200+
201+
202+
=========
203+
204+
- **Validation:** 添加了 ``Validation::getValidated()`` 方法,用于获取实际验证的数据。请参阅 :ref:`validation-getting-validated-data` 了解详细信息。
205+
- **Images:** 现在可以使用选项 ``$quality`` 压缩 WebP 图像。
206+
- **Uploaded Files:** 添加了 ``UploadedFiles::getClientPath()`` 方法,如果通过目录上传方式上传文件,则返回文件的 `full_path` 索引的值。
207+
- **CURLRequest:** 添加了请求选项 ``proxy``。请参阅 :ref:`CURLRequest Class <curlrequest-request-options-proxy>`。
208+
- **URI:** 添加了一个扩展了 ``URI`` 并表示站点 URI 的新 ``SiteURI`` 类。
209+
210+
辅助函数和方法
211+
=====================
212+
213+
- **Array:** 添加了 :php:func:`array_group_by()` 辅助函数,用于将数据值分组在一起。支持点符号语法。
214+
- **Common:** :php:func:`force_https()` 不再终止应用程序,而是抛出 ``RedirectException``。
215+
216+
其他
217+
======
218+
219+
- **DownloadResponse:** 添加了 ``DownloadResponse::inline()`` 方法,将 ``Content-Disposition: inline`` 标头设置为在浏览器中显示文件。
220+
请参阅 :ref:`open-file-in-browser` 了解详细信息。
221+
- **View:** 在 ``renderSection()`` 上添加了可选的第二个参数 ``$saveData``,以防止在显示后自动清除数据。请参阅 :ref:`View Layouts <creating-a-layout>` 了解详细信息。
222+
- **自动路由(改进):**
223+
- 现在你可以路由到模块。请参阅 :ref:`auto-routing-improved-module-routing` 了解详细信息。
224+
- 如果找到与 URI 段对应的控制器,并且该控制器没有为该 URI 段定义的方法,则将执行默认方法。这样可以更灵活地处理自动路由中的 URI。请参阅 :ref:`controller-default-method-fallback` 了解详细信息。
225+
- **过滤器:** 现在可以在 :ref:`$filters 属性 <filters-filters-filter-arguments>` 中使用过滤器参数。
226+
- **请求:** 添加了 ``IncomingRequest::setValidLocales()`` 方法,用于设置有效的区域设置。
227+
- **Table:** 添加了 ``Table::setSyncRowsWithHeading()`` 方法,用于将行列与标题同步。请参阅 :ref:`table-sync-rows-with-headings` 了解详细信息。
228+
- **错误处理:** 现在可以使用 :ref:`custom-exception-handlers`。
229+
- **RedirectException:**
230+
- 它还可以接受实现 ``ResponseInterface`` 的对象作为第一个参数。
231+
- 它实现了 ``ResponsableInterface``。
232+
- **Factories:**
233+
- 现在可以定义实际加载的类名。请参阅 :ref:`factories-defining-classname-to-be-loaded`。
234+
- 实现了配置缓存。请参阅 :ref:`factories-config-caching` 了解详细信息。
235+
236+
消息更改
237+
***************
238+
239+
- 添加了 ``Core.invalidDirectory`` 错误消息。
240+
- 改进了 ``HTTP.invalidHTTPProtocol`` 错误消息。
241+
242+
变更
243+
*******
244+
245+
- **Images:** 在 ``GDHandler`` 中,WebP 的默认质量从 80 改为 90。
246+
- **Config:**
247+
- 删除了 **app/Config/App.php** 中已弃用的 Cookie 项。
248+
- 删除了 **app/Config/App.php** 中已弃用的 Session 项。
249+
- 删除了 **app/Config/App.php** 中已弃用的 CSRF 项。
250+
- 将路由设置移至 **app/Config/Routing.php** 配置文件。
251+
请参阅 :ref:`Upgrading Guide <upgrade-440-config-routing>`。
252+
- **DownloadResponse:** 在生成响应标头时,如果之前已指定了 ``Content-Disposition`` 标头,则不替换它。
253+
- **自动加载器:**
254+
- 在 v4.4.0 之前,CodeIgniter 的自动加载器不允许在某些操作系统上的文件名中使用特殊字符。
255+
可以使用的符号是 ``/``、``_``、``.``、``:``、``\`` 和空格。
256+
因此,如果你将 CodeIgniter 安装在包含特殊字符(如 ``(``、``)`` 等)的文件夹中,CodeIgniter 将无法工作。
257+
从 v4.4.0 开始,此限制已被移除。
258+
- ``Autoloader::loadClass()`` 和 ``Autoloader::loadClassmap()`` 方法现在都标记为 ``@internal``。
259+
- **RouteCollection:** 受保护属性 ``$routes`` 的数组结构已进行了修改以提高性能。
260+
- **HSTS:** 现在,无论是通过 :php:func:`force_https()` 还是 ``Config\App::$forceGlobalSecureRequests = true``,都会设置 HTTP 状态码 307,允许在重定向后保留 HTTP 请求方法。
261+
在之前的版本中,它是 302。
262+
263+
弃用
264+
************
265+
266+
- **Entity:** 弃用了 ``Entity::setAttributes()`` 方法。请改用 ``Entity::injectRawData()``。
267+
- **错误处理:** 弃用了 ``CodeIgniter\Debug\Exceptions`` 中的许多方法和属性。因为这些方法已移至 ``BaseExceptionHandler`` 或 ``ExceptionHandler``。
268+
- **自动加载器:** 弃用了 ``Autoloader::sanitizeFilename()``。
269+
- **CodeIgniter:**
270+
- 弃用了 ``CodeIgniter::$returnResponse`` 属性。不再使用。
271+
- 弃用了 ``CodeIgniter::$cacheTTL`` 属性。不再使用。请改用 ``ResponseCache``。
272+
- 弃用了 ``CodeIgniter::cache()`` 方法。不再使用。请改用 ``ResponseCache``。
273+
- 弃用了 ``CodeIgniter::cachePage()`` 方法。不再使用。请改用 ``ResponseCache``。
274+
- 弃用了 ``CodeIgniter::generateCacheName()`` 方法。不再使用。请改用 ``ResponseCache``。
275+
- 弃用了 ``CodeIgniter::callExit()`` 方法。不再使用。
276+
- **RedirectException:** 弃用了 ``\CodeIgniter\Router\Exceptions\RedirectException``。请改用 ``\CodeIgniter\HTTP\Exceptions\RedirectException``。
277+
- **Session:** 弃用了 ``Session`` 中的属性 ``$sessionDriverName``、``$sessionCookieName``、
278+
``$sessionExpiration``、``$sessionSavePath``、``$sessionMatchIP``、
279+
``$sessionTimeToUpdate`` 和 ``$sessionRegenerateDestroy``,不再使用。请改用 ``$config``。
280+
- **Security:** 弃用了 ``Security`` 中的属性 ``$csrfProtection``、``$tokenRandomize``、
281+
``$tokenName``、``$headerName``、``$expires``、``$regenerate`` 和
282+
``$redirect``,不再使用。请改用 ``$config``。
283+
- **URI:**
284+
- 弃用了 ``URI::$uriString``。
285+
- 弃用了 ``URI::$baseURL``。请改用 ``SiteURI``。
286+
- 弃用了 ``URI::setSilent()``。
287+
- 弃用了 ``URI::setScheme()``。请改用 ``withScheme()``。
288+
- 弃用了 ``URI::setURI()``。
289+
290+
- **IncomingRequest:**
291+
- 弃用了 ``IncomingRequest::detectURI()``,不再使用。
292+
- 弃用了 ``IncomingRequest::detectPath()``,不再使用。已移至 ``SiteURIFactory``。
293+
- 弃用了 ``IncomingRequest::parseRequestURI()``,不再使用。已移至 ``SiteURIFactory``。
294+
- 弃用了 ``IncomingRequest::parseQueryString()``,不再使用。已移至 ``SiteURIFactory``。
295+
- 弃用了 ``IncomingRequest::setPath()``。
296+
297+
已修复的错误
298+
************
299+
300+
- **自动路由(改进):** 在之前的版本中,当 ``$translateURIDashes`` 为 true 时,两个 URI 对应于单个控制器方法,一个 URI 用于破折号(例如 **foo-bar**),另一个 URI 用于下划线(例如 **foo_bar**)。修复了此错误。现在,下划线的 URI(**foo_bar**)无法访问。
301+
- **输出缓冲:** 修复了输出缓冲的错误。
302+
- **ControllerTestTrait:** ``ControllerTestTrait::withUri()`` 使用 URI 创建一个新的 Request 实例。因为 Request 实例应该具有 URI 实例。此外,如果 URI 字符串中的主机名与 ``Config\App`` 中的有效主机名不匹配,则将设置有效的主机名。
303+
304+
有关修复的所有错误的完整列表,请参阅存储库的 `CHANGELOG.md <https://github.com/codeigniter4/CodeIgniter4/blob/develop/CHANGELOG.md>`_。

0 commit comments

Comments
 (0)