refactor(php): centralize the default PHP version into a single constant#238
Open
mrrobot47 wants to merge 2 commits into
Open
refactor(php): centralize the default PHP version into a single constant#238mrrobot47 wants to merge 2 commits into
mrrobot47 wants to merge 2 commits into
Conversation
Introduce WordPress::DEFAULT_PHP_VERSION and WordPress::SUPPORTED_PHP_VERSIONS as the single source of truth. The default value was previously hardcoded independently in three places: - the `--php` get_flag_value() default - the 8.x unsupported-version fallback - the `latest` -> image tag map in Site_WP_Docker All three now read DEFAULT_PHP_VERSION, so moving the default is a one-line edit. The `default:` line is removed from the `--php` docblock so the constant is the authoritative default: EE injects a docblock default into the args only when one is declared, so with it gone the get_flag_value() fallback supplies the constant. Also fix the indentation of the 8.x fallback branch and use string literals for the versions so an x.0 version no longer stringifies to "8" in the image name.
There was a problem hiding this comment.
Pull request overview
This PR centralizes the default/supported PHP versions for the ee site create --type=wp flow into WordPress class constants, so future default bumps are a single edit and consumers share the same source of truth.
Changes:
- Introduces
WordPress::DEFAULT_PHP_VERSIONandWordPress::SUPPORTED_PHP_VERSIONS. - Uses
DEFAULT_PHP_VERSIONas the runtime default when--phpis omitted and as the 8.x unsupported-version fallback. - Updates
Site_WP_Dockersolatestresolves to the Docker image tag matchingDEFAULT_PHP_VERSION.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| src/WordPress.php | Adds centralized version constants and wires them into --php defaulting/validation/fallback logic. |
| src/Site_WP_Docker.php | Makes latest map to the Docker image tag derived from WordPress::DEFAULT_PHP_VERSION. |
Comments suppressed due to low confidence (1)
src/WordPress.php:391
in_array()is currently non-strict for validatingphp_version. Because the supported list contains numeric-looking strings (e.g.'8.0'), a user input like'8'will be treated as supported via loose comparison and will skip the fallback, producing image keys likeeasyengine/php8that likely don't exist. Using strict comparison and normalizing to string avoids this class of mismatch.
$supported_php_versions = self::SUPPORTED_PHP_VERSIONS;
if ( ! in_array( $this->site_data['php_version'], $supported_php_versions ) ) {
$old_version = $this->site_data['php_version'];
$floor = (int) floor( $this->site_data['php_version'] );
if ( 5 === $floor ) {
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…ation Address review feedback on the version-constant refactor: - Use a strict in_array() check for the supported-version test. Now that SUPPORTED_PHP_VERSIONS holds strings and php_version is always a string at that point, strict comparison avoids loose numeric matches (e.g. '8' loosely matching '8.0') that would otherwise skip the fallback and yield a non-existent image tag; such input now routes to the unsupported-version fallback instead. - Normalize the 8.5 entry in the --php options list to a tab to match the other entries (it used spaces), keeping the docblock consistent.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Centralizes the PHP version into a single source of truth so a default bump is a one-line edit. Introduces two class constants on
WordPress:The default
8.4was previously hardcoded independently in three spots; all now readDEFAULT_PHP_VERSION:--phpomitteddefault: 8.4get_flag_value( …, 'php', self::DEFAULT_PHP_VERSION )= 8.4;= self::DEFAULT_PHP_VERSION;latest→ image tag (Site_WP_Docker)'easyengine/php8.4''easyengine/php' . WordPress::DEFAULT_PHP_VERSIONThe inline
$supported_php_versionsarray is replaced bySUPPORTED_PHP_VERSIONS.Why removing the docblock
default:worksEE injects a docblock
default:into$assoc_argsbeforecreate()runs, so a docblock default would always win over the constant. Removing it lets theget_flag_value()fallback supplyDEFAULT_PHP_VERSIONwhen--phpis omitted — making the constant authoritative. Effective default is unchanged (8.4).Also included
8 === $floorbranch (was mis-indented vs the 5.x/7.x branches).x.0version stringifies to"8"in the image name ('easyengine/php' . 8.0→easyengine/php8).Notes / tradeoffs for reviewers
--helpno longer printsdefault: 8.4for--php(the options list still shows). This is the inherent cost of single-sourcing the default in code. If preferred, the alternative is to keep the docblockdefault:and add a test asserting it equals the constant (drift-proof, but a bump becomes two edits).default:is gone from the docblock,ee scaffold package-readmewill no longer emit thedefault: 8.4line that docs: regenerate README for current PHP version support #237 added. Coordinate a README regen after merge (or keep the docblock default per the point above).options:list and prose still enumerate versions (PHPDoc can't reference a constant), so adding a new version still touches the docblock +SUPPORTED_PHP_VERSIONS. A synopsis↔constant guard test would make that drift-proof — happy to add it.