@@ -12,6 +12,98 @@ Please refer to the upgrade instructions corresponding to your installation meth
1212 :local:
1313 :depth: 2
1414
15+ ****************
16+ Breaking Changes
17+ ****************
18+
19+ PHP 8.2 Required
20+ ================
21+
22+ The minimum PHP requirement has been updated to **PHP 8.2 **.
23+
24+ If your current runtime is older than PHP 8.2, upgrade PHP first before
25+ upgrading CodeIgniter.
26+
27+ Validation ``regex_match `` Placeholders
28+ =======================================
29+
30+ Placeholders in the ``regex_match `` validation rule must now use double curly
31+ braces.
32+
33+ If you previously used single braces like
34+ ``regex_match[/^{placeholder}$/] ``, update it to:
35+ ``regex_match[/^{{placeholder}}$/] ``.
36+
37+ This avoids ambiguity with regex quantifiers such as ``{1,3} ``.
38+
39+ Model Primary Key Validation Timing and Exceptions
40+ ==================================================
41+
42+ Primary key values are now validated before database queries in
43+ ``insert() ``/``insertBatch() `` (without auto-increment), ``update() ``, and
44+ ``delete() ``.
45+
46+ Invalid primary key values now throw ``InvalidArgumentException `` instead of
47+ database-layer ``DatabaseException ``.
48+
49+ If your code catches ``DatabaseException `` for invalid primary keys, update it
50+ to handle ``InvalidArgumentException `` as well.
51+
52+ Entity Change Detection Is Now Deep
53+ ===================================
54+
55+ ``Entity::hasChanged() `` and ``Entity::syncOriginal() `` now perform deep
56+ comparison for arrays and objects.
57+
58+ If you relied on the previous shallow (reference-based) behavior, review your
59+ entity update flows and tests because nested changes are now detected.
60+
61+ Also, ``Entity::toRawArray() `` now recursively converts arrays of entities when
62+ ``$recursive `` is ``true ``.
63+
64+ Encryption Handler Key State
65+ ============================
66+
67+ ``OpenSSLHandler `` and ``SodiumHandler `` no longer mutate the handler's internal
68+ key when a key is passed via ``$params `` to ``encrypt() ``/``decrypt() ``.
69+
70+ If your code depended on passing a key once and reusing it implicitly later,
71+ move to explicit key configuration in ``Config\\Encryption `` (or pass a custom
72+ config when creating the encrypter service).
73+
74+ Interface Changes
75+ =================
76+
77+ Some interface changes have been made. Classes that implement framework
78+ interfaces should update their APIs to reflect these changes.
79+
80+ See :ref: `ChangeLog <v470-interface-changes >` for details.
81+
82+ Method Signature Changes
83+ ========================
84+
85+ Some method signature changes have been made. Classes that extend framework
86+ classes should update their method signatures to keep LSP compatibility.
87+
88+ See :ref: `ChangeLog <v470-method-signature-changes >` for details.
89+
90+ Property Signature Changes
91+ ==========================
92+
93+ Some property type signatures have changed (for example nullable
94+ ``Entity::$dataCaster ``). If you extend these classes, update your code
95+ accordingly.
96+
97+ See :ref: `ChangeLog <v470-property-signature-changes >` for details.
98+
99+ Removed Deprecated Items
100+ ========================
101+
102+ Some deprecated items have been removed. If your app still uses or extends
103+ these APIs, update your code before upgrading.
104+
105+ See :ref: `ChangeLog <v470-removed-deprecated-items >` for details.
106+
15107*************
16108Project Files
17109*************
0 commit comments