# Changes for PHP Mode by Version

This file documents notable changes to PHP Mode according to the [Keep a Changelog](https://keepachangelog.com/) principles.

<!-- ## Unreleased -->

## [1.28.0] - 2026-08-25

### Added

 * Add `php-phpdbg-disassemble-file` and `php-parse-file` commands ([#804])
 * Select an HTML template major mode for PHP files that contain HTML and add per-project control through `php-project-php-file-as-template` ([#742])
 * Include `php-align.el` and `php-flymake.el` in the package ([#820])
 * Add a `php-pipe-op` face for PHP 8.5's pipe operator ([#821])
 * Add `php-ide-set-feature`, `php-ide-status`, and `php-ide-eglot-activate` commands ([#826])
 * Add `phpantom` and `php-lsp` presets to `php-ide-lsp-command-alist` ([#830])
 * Add `php-cc-mode` as a forward-compatible alias for the CC Mode based `php-mode` ([#828])

### Changed

 * Add `readonly` class modifier to [Imenu] ([#802])
 * Add `enum` support to `php-current-class` ([#802])
 * Remove hardcoding of implicit paths in `php` that are not guaranteed to exist ([#803])
 * Make `php-mode-maybe` honor `major-mode-remap-alist` ([#816])
 * Let `php-project-get-root-dir` use `project.el` backends after PHP-specific markers ([#823])
 * Make `php-ide-features` accept a bare feature symbol and make `php-ide-turn-on` a no-op when no features are configured ([#826])
 * Restrict safe directory-local PHP-IDE values and mark command and function alists as risky ([#826])
 * Warn about multiple active LSP clients and make PHP-IDE server and mode alists customizable ([#827])

### Fixed

 * Fix array alignment when an empty line is present ([#801])
 * Fix compatibility with upcoming Emacs 32 ([#809])
 * Fix PHP function completion sorting, module filtering, and directory-local validation ([#825])
 * Fix PHP-IDE feature activation, deactivation, repeated enabling, and Phpactor hover cleanup ([#826], [#827])
 * Return a valid `project.el` representation from `php-project-project-find-function` ([#823])
 * Fall back to an HTML mode for Blade templates when `web-mode` is unavailable ([#817])
 * Use one PHP executable source for project and Flymake integrations ([#818])
 * Fix compilation of `php-flymake` with current Emacs versions ([#829])

### Deprecated

 * `php-project-use-projectile-to-detect-root` is obsolete; Projectile 3 registers itself on `project-find-functions`, which `php-project-get-root-dir` now consults automatically

### Removed

 * Drop support for Emacs 27.x ([#811])

[Imenu]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Imenu.html
[#742]: https://github.com/emacs-php/php-mode/pull/742
[#801]: https://github.com/emacs-php/php-mode/pull/801
[#802]: https://github.com/emacs-php/php-mode/pull/802
[#803]: https://github.com/emacs-php/php-mode/pull/803
[#804]: https://github.com/emacs-php/php-mode/pull/804
[#809]: https://github.com/emacs-php/php-mode/pull/809
[#811]: https://github.com/emacs-php/php-mode/issues/811
[#816]: https://github.com/emacs-php/php-mode/pull/816
[#817]: https://github.com/emacs-php/php-mode/pull/817
[#818]: https://github.com/emacs-php/php-mode/pull/818
[#820]: https://github.com/emacs-php/php-mode/pull/820
[#821]: https://github.com/emacs-php/php-mode/pull/821
[#823]: https://github.com/emacs-php/php-mode/pull/823
[#825]: https://github.com/emacs-php/php-mode/pull/825
[#826]: https://github.com/emacs-php/php-mode/pull/826
[#827]: https://github.com/emacs-php/php-mode/pull/827
[#828]: https://github.com/emacs-php/php-mode/pull/828
[#829]: https://github.com/emacs-php/php-mode/pull/829
[#830]: https://github.com/emacs-php/php-mode/pull/830

## [1.27.0] - 2024-12-20

### Added

 * Support PHP 8.4 property-hooks ([#797])

### Changed

 * Improve `php-syntax-propertize-extend-region` efficiency ([#789], thanks [@phil-s]!)
 * Update `php-phpdoc-type-names` to support [PHPStan 2.0.4] ([#795])

### Fixed

 * Fix Emacs 30 byte-compile errors ([#792])
 * Use `when-let*` instead of `when-let` to enhance Emacs 30 compatibility ([#796])
...
...
