Skip to content

Commit

Permalink
升级到 v4.5.5 (#167)
Browse files Browse the repository at this point in the history
  • Loading branch information
hex-ci authored Sep 19, 2024
1 parent f626823 commit 86ac3a4
Show file tree
Hide file tree
Showing 26 changed files with 328 additions and 107 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.5
v4.5.4
v4.5.3
v4.5.2
Expand Down
2 changes: 1 addition & 1 deletion source/changelogs/v4.1.2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
- 统一并弃用 ``ControllerResponse`` 和 ``FeatureResponse``,改用 ``TestResponse``。
- 弃用 ``Time::instance()``,改用 ``Time::createFromInstance()`` (现在接受 ``DateTimeInterface``)。
- 弃用 ``IncomingRequest::removeRelativeDirectory()``,改用 ``URI::removeDotSegments()``。
- 弃用 ``\API\ResponseTrait::failValidationError``,改用 ``\API\ResponseTrait::failValidationErrors``。
- 弃用 ``\API\ResponseTrait::failValidationError()``,改用 ``\API\ResponseTrait::failValidationErrors()``。

错误修复
----------
Expand Down
21 changes: 21 additions & 0 deletions source/changelogs/v4.5.5.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#############
版本 4.5.5
#############

发布日期:2024 年 9 月 7 日

**CodeIgniter4 的 4.5.5 版本发布**

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

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

- **URL 辅助函数:** 修复了 :php:func:`auto_link()` 中正则表达式过时的错误。通过此修复,现在使用与 CodeIgniter 3 相同的正则表达式。

请参阅仓库的
`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.4'
release = '4.5.5'

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

Expand Down
97 changes: 49 additions & 48 deletions source/helpers/html_helper.rst

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions source/helpers/text_helper.rst
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@

.. note:: 出于历史原因,此函数也接受并处理字符串输入。但是,这使它只是一个 ``stripslashes()`` 的别名。

.. php:function:: reduce_multiples($str[, $character = ''[, $trim = false]])
.. php:function:: reduce_multiples($str[, $character = ','[, $trim = false]])
:param string $str: 要搜索的文本
:param string $character: 要缩减的字符
Expand All @@ -122,7 +122,7 @@

.. literalinclude:: text_helper/009.php

如果第三个参数设置为 true,则会移除字符串开头和结尾处的字符出现。示例:
如果第三个参数设置为 ``true``,它将移除字符串开头和结尾处出现的字符。例如:

.. literalinclude:: text_helper/010.php

Expand Down
2 changes: 1 addition & 1 deletion source/helpers/text_helper/009.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?php

$string = 'Fred, Bill,, Joe, Jimmy';
$string = reduce_multiples($string, ','); // results in "Fred, Bill, Joe, Jimmy"
$string = reduce_multiples($string); // results in "Fred, Bill, Joe, Jimmy"
2 changes: 1 addition & 1 deletion source/helpers/text_helper/010.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?php

$string = ',Fred, Bill,, Joe, Jimmy,';
$string = reduce_multiples($string, ', ', true); // results in "Fred, Bill, Joe, Jimmy"
$string = reduce_multiples($string, ',', true); // results in "Fred, Bill, Joe, Jimmy"
28 changes: 28 additions & 0 deletions source/incoming/routing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -983,3 +983,31 @@ spark 路由
.. code-block:: console
php spark routes --host accounts.example.com
获取路由信息
***************************

在 CodeIgniter 4 中,理解和管理路由信息对于有效处理 HTTP 请求至关重要。这涉及到检索有关活动控制器和方法的详细信息,以及应用于特定路由的过滤器。下面,我们探讨如何访问这些路由信息,以帮助完成诸如日志记录、调试或实现条件逻辑等任务。

检索当前控制器/方法名称
==============================================

在某些情况下,你可能需要确定当前 HTTP 请求触发了哪个控制器和方法。这对于日志记录、调试或基于活动控制器方法的条件逻辑非常有用。

CodeIgniter 4 提供了一种简单的方法来使用 ``Router`` 类访问当前路由的控制器和方法名称。以下是一个示例:

.. literalinclude:: routing/071.php

当你需要动态地与控制器交互或记录处理特定请求的方法时,这个功能特别有用。

获取当前路由的活动过滤器
============================================

:doc:`过滤器 <filters>` 是一个强大的功能,使你能够在处理 HTTP 请求之前或之后执行诸如身份验证、日志记录和安全检查等操作。要访问特定路由的活动过滤器,你可以使用 ``Router`` 类中的 :php:meth:`CodeIgniter\\Router\\Router::getFilters()` 方法。

此方法返回当前正在处理的路由的活动过滤器列表:

.. literalinclude:: routing/072.php

.. note:: ``getFilters()`` 方法仅返回为特定路由定义的过滤器。
它不包括全局过滤器或在 **app/Config/Filters.php** 文件中指定的过滤器。
14 changes: 14 additions & 0 deletions source/incoming/routing/071.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

// Get the router instance.
/** @var \CodeIgniter\Router\Router $router */
$router = service('router');

// Retrieve the fully qualified class name of the controller handling the current request.
$controller = $router->controllerName();

// Retrieve the method name being executed in the controller for the current request.
$method = $router->methodName();

echo 'Current Controller: ' . $controller . '<br>';
echo 'Current Method: ' . $method;
8 changes: 8 additions & 0 deletions source/incoming/routing/072.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

// Get the router instance.
/** @var \CodeIgniter\Router\Router $router */
$router = service('router');
$filters = $router->getFilters();

echo 'Active Filters for the Route: ' . implode(', ', $filters);
39 changes: 39 additions & 0 deletions source/installation/upgrade_455.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#############################
从 4.5.4 升级到 4.5.5
#############################

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

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

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

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

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

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

内容更改
===============

以下文件进行了重大更改(包括弃用或视觉调整),建议你将更新版本与应用程序合并:

配置
------

- composer.json

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

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

- composer.json
16 changes: 11 additions & 5 deletions source/installation/upgrade_models.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@
升级指南
=============

1. 首先,将所有模型文件移到 **app/Models** 文件夹中
2. 在打开的 php 标记之后添加此行:``namespace App\Models;``。
3. 在 ``namespace App\Models;`` 行的下面添加此行:``use CodeIgniter\Model;``。
1. 首先,将所有模型文件移动到文件夹 **app/Models**。
2. 在 PHP 标签的开头之后添加这一行:``namespace App\Models;``。
3. 在 ``namespace App\Models;`` 行的下面添加这一行:``use CodeIgniter\Model;``。
4. 将 ``extends CI_Model`` 替换为 ``extends Model``。
5. 与 CI3 的 ``$this->load->model('x');`` 不同,你现在会使用 ``$this->x = new X();``,遵循组件的命名空间约定。或者,你可以使用 :php:func:`model()` 函数:``$this->x = model('X');``。
5. 添加 ``protected $table`` 属性并设置表名。
6. 添加 ``protected $allowedFields`` 属性并设置允许插入/更新的字段名称数组。
7. 代替 CI3 的 ``$this->load->model('x');``,你现在应该使用 ``$this->x = new X();``,遵循组件的命名空间约定。或者,你可以使用 :php:func:`model()` 函数:``$this->x = model('X');``。

如果在模型结构中使用子目录,则必须根据情况更改命名空间。
例如:你有一个版本 3 模型位于 **application/models/users/user_contact.php**,命名空间必须是 ``namespace App\Models\Users;``,版本 4 中的模型路径应如下所示:**app/Models/Users/UserContact.php**
Expand All @@ -51,4 +53,8 @@ CodeIgniter 4.x 版本

.. literalinclude:: upgrade_models/001.php

要插入数据,可以直接调用 ``$model->insert()``,因为这个方法在 CI4 中是内置的。
上述代码是从 CI3 到 CI4 的直接翻译。它在模型中直接使用了查询构建器。请注意,当你直接使用查询构建器时,你将无法使用 CodeIgniter 模型中的功能。

如果你想使用 CodeIgniter 模型的功能,代码将是:

.. literalinclude:: upgrade_models/002.php
17 changes: 15 additions & 2 deletions source/installation/upgrade_models/001.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,20 @@

use CodeIgniter\Model;

class UserContact extends Model
class NewsModel extends Model
{
// insert() method already implemented in parent
// Sets the table name.
protected $table = 'news';

public function setNews($title, $slug, $text)
{
$data = [
'title' => $title,
'slug' => $slug,
'text' => $text,
];

// Gets the Query Builder for the table, and calls `insert()`.
return $this->builder()->insert($data);
}
}
26 changes: 26 additions & 0 deletions source/installation/upgrade_models/002.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

namespace App\Models;

use CodeIgniter\Model;

class NewsModel extends Model
{
// Sets the table name.
protected $table = 'news';

// Sets the field names to allow to insert/update.
protected $allowedFields = ['title', 'slug', 'text'];

public function setNews($title, $slug, $text)
{
$data = [
'title' => $title,
'slug' => $slug,
'text' => $text,
];

// Uses Model's`insert()` method.
return $this->insert($data);
}
}
16 changes: 9 additions & 7 deletions source/installation/upgrade_models/ci3sample/001.php
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
<?php

class User_contact extends CI_Model
class News_model extends CI_Model
{
public function insert($name, $address, $email)
public function set_news($title, $slug, $text)
{
$this->db->insert('user_contacts', array(
'name' => $name,
'address' => $address,
'email' => $email,
));
$data = array(
'title' => $title,
'slug' => $slug,
'text' => $text,
);

return $this->db->insert('news', $data);
}
}
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_455
upgrade_454
upgrade_453
upgrade_452
Expand Down
9 changes: 5 additions & 4 deletions source/libraries/curlrequest.rst
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ form_params

.. literalinclude:: curlrequest/024.php

.. note:: ``form_params`` 不能与 ``multipart`` 选项一起使用。你需要使用其中一个。对 ``application/x-www-form-urlencoded`` 请求使用 ``form_params``,对 ``multipart/form-data`` 请求使用 ``multipart``。
.. note:: ``form_params`` 不能与 `multipart`_ 选项一起使用。你需要使用其中一个。对 ``application/x-www-form-urlencoded`` 请求使用 ``form_params``,对 ``multipart/form-data`` 请求使用 ``multipart``。

.. _curlrequest-request-options-headers:

Expand Down Expand Up @@ -249,12 +249,13 @@ json
multipart
=========

当你需要通过 POST 请求发送文件和其他数据时,可以使用 ``multipart`` 选项,以及 `CURLFile 类 <https://www.php.net/manual/en/class.curlfile.php>`_。值应该是一个关联数组,包含要发送的 POST 数据。为了更安全地使用,上传文件通过在名称前加上 `@` 的遗留方法已被禁用。你想要发送的任何文件必须作为 CURLFile 实例传递:
当你需要通过 POST 请求发送文件和其他数据时,可以使用 ``multipart`` 选项,以及 `CURLFile 类 <https://www.php.net/manual/zh/class.curlfile.php>`_。

这些值应该是一个关联数组,包含要发送的 POST 数据。为了更安全地使用,前缀带有 ``@`` 的旧方法已被禁用。任何你想发送的文件必须作为 CURLFile 的实例传递:

.. literalinclude:: curlrequest/028.php

.. note:: ``multipart`` 不能与 ``form_params`` 选项一起使用。你只能使用其中一个。对 ``application/x-www-form-urlencoded`` 请求使用
``form_params``,对 ``multipart/form-data`` 请求使用 ``multipart``。
.. note:: ``multipart`` 不能与 `form_params`_ 选项一起使用。你只能使用其中一个。使用 ``form_params`` 进行 ``application/x-www-form-urlencoded`` 请求,使用 ``multipart`` 进行 ``multipart/form-data`` 请求。

.. _curlrequest-request-options-proxy:

Expand Down
10 changes: 6 additions & 4 deletions source/libraries/curlrequest/028.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<?php

$post_data = [
'foo' => 'bar',
'userfile' => new \CURLFile('/path/to/file.txt'),
];
$client->request('POST', '/post', [
'multipart' => [
'foo' => 'bar',
'userfile' => new \CURLFile('/path/to/file.txt'),
],
]);
4 changes: 4 additions & 0 deletions source/libraries/validation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,8 @@ withRequest()
.. literalinclude:: validation/045.php
:lines: 2-

.. _saving-validation-rules-to-config-file:

将一组验证规则保存到配置文件
==================================================

Expand Down Expand Up @@ -738,6 +740,8 @@ PHP 请求之间不共享任何内容。所以在验证失败时重定向,重定
.. literalinclude:: validation/047.php
:lines: 2-

.. _validation-available-rules:

***************
可用规则
***************
Expand Down
Loading

0 comments on commit 86ac3a4

Please sign in to comment.