PHP Asymmetric Visibility Cheat Sheet
PHP 8.4 added support for property asymmetric visibility. This feature allows controlling get/set access separately. It includes a bunch of shorthand and implicit declarations which make it hard to remember.
Below is my attempt to create a cheat-sheet which documents all the possibilities.
| Declaration | Get | Set | Effective Definition |
|---|---|---|---|
| public | public | public | public public(set) |
| protected | protected | protected | protected protected(set) |
| private | private | private | final private private(set) |
| public(set) | public | public | public public(set) |
| protected(set) | public | protected | protected protected(set) |
| private(set) | public | private | final private private(set) |
| public public(set) | public | public | public public(set) |
| public protected(set) | public | protected | public protected(set) |
| public private(set) | public | private | final public private(set) |
| protected public(set) | invalid | invalid | |
| protected protected(set) | protected | protected | |
| protected private(set) | protected | private | final protected private(set) |
| private public(set) | invalid | invalid | |
| private protected(set) | invalid | invalid | |
| private private(set) | private | private | final private private(set) |
| public readonly | public | protected | public protected(set) readonly |
| protected readonly | protected | protected | protected protected(set) readonly |
| private readonly | private | private | final private private(set) readonly |