Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ body:
id: package-version
attributes:
label: Package version
placeholder: '8.4.0'
placeholder: '8.5.0'
validations:
required: true
- type: input
id: php-version
attributes:
label: PHP version
placeholder: '8.4'
placeholder: '8.5'
validations:
required: true
- type: textarea
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
versions: ${{ steps.php.outputs.versions }}

steps:
# Each "8.N.x" branch targets exactly PHP 8.N; any other branch uses the 8.4 baseline.
# Each "8.N.x" branch targets exactly PHP 8.N; any other branch uses the 8.5 baseline.
- name: Resolve PHP versions from branch
id: php
shell: bash
Expand All @@ -43,7 +43,7 @@ jobs:
if [[ "${BRANCH}" =~ ^8\.[0-9]+\.x$ ]]; then
VERSIONS="[\"${BRANCH%.x}\"]"
else
VERSIONS='["8.4"]'
VERSIONS='["8.5"]'
fi

echo "branch=${BRANCH} php=${VERSIONS}"
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@

All notable changes to this project will be documented in this file.

## 8.5.1 - 2026-10-08

The `8.5.x` line now runs the rebuilt 8.x path engine, with results identical to `8.4.1`. **`8.5.0` still had the 2.x engine, so this patch changes results for `8.5.0` users**: every change listed under [8.0.0](#800---2026-10-08) applies. Read [UPGRADE.md](UPGRADE.md#from-850-to-851) before updating.

### Changed

- **Requires PHP `>=8.5 <8.6`** (`8.5.0` allowed `^8.5`). Use the `8.4.x` line on PHP 8.4.
- `dot()` accepts `null` and another `DotArray` again (`8.5.0` accepted arrays only).
- Requires `pharaonic/php-readable` `~8.5.0`, its PHP 8.5 line.
- PHPStan analyses against PHP 8.5, and CI falls back to PHP 8.5 on branches that are not an `8.N.x` line.
- PHPStan `^2.1.22` is required for development, the first release that analyses against PHP 8.5.

## 8.4.1 - 2026-10-08

The `8.4.x` line now runs the rebuilt 8.x path engine, with results identical to `8.3.0`. **`8.4.0` still had the 2.x engine, so this patch changes results for `8.4.0` users**: every change listed under [8.0.0](#800---2026-10-08) applies. Read [UPGRADE.md](UPGRADE.md#from-840-to-841) before updating.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<p align="center"><a href="https://pharaonic.dev/packages/php/dot-array" target="_blank"><img src="https://raw.githubusercontent.com/Pharaonic/php-dot-array/develop/docs/cover.webp"></a></p>

<p align="center">
<a href="https://php.net" target="_blank"><img src="https://img.shields.io/static/v1?label=PHP&message=8.4&color=blue&style=flat-square" alt="PHP Version : 8.4"></a>
<a href="https://php.net" target="_blank"><img src="https://img.shields.io/static/v1?label=PHP&message=8.5&color=blue&style=flat-square" alt="PHP Version : 8.5"></a>
<img src="https://img.shields.io/static/v1?label=License&message=MIT&color=brightgreen&style=flat-square" alt="License">
<img src="https://github.com/Pharaonic/php-dot-array/actions/workflows/build.yml/badge.svg" alt="Tests">
<br>
Expand Down
1 change: 1 addition & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Security fixes are released for the latest version of each maintained release li

| Version | PHP | Supported |
|----------|-----|--------------------|
| `8.5.x` | 8.5 | :white_check_mark: |
| `8.4.x` | 8.4 | :white_check_mark: |
| `8.3.x` | 8.3 | :white_check_mark: |
| `8.2.x` | 8.2 | :white_check_mark: |
Expand Down
15 changes: 8 additions & 7 deletions UPGRADE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,26 @@ To upgrade, install the line that matches your PHP version. Composer picks it fo

| Line | PHP | `pharaonic/php-readable` |
|---------|-----|--------------------------|
| `8.5.x` | 8.5 | `~8.5.0` |
| `8.4.x` | 8.4 | `~8.4.0` |
| `8.3.x` | 8.3 | `~8.3.0` |
| `8.2.x` | 8.2 | `~8.2.0` |
| `8.1.x` | 8.1 | `~8.1.0` |
| `8.0.x` | 8.0 | `~8.0.1` |

## From 8.4.0 to 8.4.1
## From 8.5.0 to 8.5.1

⚠️ `8.4.0` was released before the 8.x rebuild and still ran the 2.x engine. `8.4.1` is a patch release, so `composer update` installs it automatically, but it brings every result change listed in [From 2.x to 8.0](#from-2x-to-80). The API is the same. Review that section before updating, or pin `8.4.0` until you have:
⚠️ `8.5.0` was released before the 8.x rebuild and still ran the 2.x engine. `8.5.1` is a patch release, so `composer update` installs it automatically, but it brings every result change listed in [From 2.x to 8.0](#from-2x-to-80). The API is the same. Review that section before updating, or pin `8.5.0` until you have:

```bash
composer require pharaonic/php-dot-array:8.4.0
composer require pharaonic/php-dot-array:8.5.0
```

Differences from `8.4.0` that are not in the 2.x list:
Differences from `8.5.0` that are not in the 2.x list:

- `8.4.0` already deleted integer keys correctly, so section 10's `delete($int)` fix doesn't apply.
- `dot()` accepts `null` and another `DotArray` again; `8.4.0` accepted arrays only.
- PHP `>=8.4 <8.5` instead of `^8.4`. On PHP 8.5, Composer installs the `8.5.x` line.
- `8.5.0` already deleted integer keys correctly, so section 10's `delete($int)` fix doesn't apply.
- `dot()` accepts `null` and another `DotArray` again; `8.5.0` accepted arrays only.
- PHP `>=8.5 <8.6` instead of `^8.5`.

## From 2.x to 8.0

Expand Down
6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@
"security": "https://github.com/Pharaonic/php-dot-array/security/policy"
},
"require": {
"php": ">=8.4 <8.5",
"pharaonic/php-readable": "~8.4.0"
"php": ">=8.5 <8.6",
"pharaonic/php-readable": "~8.5.0"
},
"require-dev": {
"phpstan/phpstan": "^2.1.18",
"phpstan/phpstan": "^2.1.22",
"phpunit/phpunit": "^12.0",
"squizlabs/php_codesniffer": "^3.13 || ^4.0"
},
Expand Down
4 changes: 2 additions & 2 deletions docs/sections/02-installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ Install the package with Composer. There is nothing to register or configure.

### Requirements

- PHP 8.4.x (each `8.x` release line targets the matching PHP version)
- PHP 8.5.x (each `8.x` release line targets the matching PHP version)
- `ext-mbstring`
- `pharaonic/php-readable` ~8.4.0 (installed automatically)
- `pharaonic/php-readable` ~8.5.0 (installed automatically)

### Composer Installation

Expand Down
6 changes: 3 additions & 3 deletions docs/sections/09-upgrading.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@

Each `8.N.x` line targets exactly one PHP version: `8.0.x` runs on PHP 8.0, `8.1.x` on PHP 8.1, and so on. Moving from one 8.x line to another never changes the public API or results, so no code changes are needed. Composer picks the line that matches your PHP version.

## Upgrading from 8.4.0
## Upgrading from 8.5.0

:::warning Patch with result changes
`8.4.0` still ran the 2.x engine. `8.4.1` is a patch release, so `composer update` installs it automatically, but every change below applies. Review them first, or pin `8.4.0` with `composer require pharaonic/php-dot-array:8.4.0` until you have.
`8.5.0` still ran the 2.x engine. `8.5.1` is a patch release, so `composer update` installs it automatically, but every change below applies. Review them first, or pin `8.5.0` with `composer require pharaonic/php-dot-array:8.5.0` until you have.
:::

## Upgrading from 2.x

{release.label} rebuilt the path engine. Every method and helper from 2.x still exists with the same parameters, and `delete()` still returns `bool`, but some results changed. Most of them were bugs.

The full list, with before and after values for every change, is in [UPGRADE.md]({package.githubUrl}/blob/8.4.x/UPGRADE.md).
The full list, with before and after values for every change, is in [UPGRADE.md]({package.githubUrl}/blob/8.5.x/UPGRADE.md).

### What Changed

Expand Down
2 changes: 1 addition & 1 deletion phpstan.neon.dist
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
parameters:
level: max
phpVersion: 80400
phpVersion: 80500
paths:
- src
- tests
Loading