From 43063950ab6f53631e2b7a7a061cad23582a0655 Mon Sep 17 00:00:00 2001 From: Mark Randall Date: Sat, 20 Jun 2026 16:43:42 +0100 Subject: [PATCH 01/17] Most of the front page --- include/branch-highlights.inc | 495 +++++++++ include/footer.inc | 14 +- include/header.inc | 4 +- public/images/bg-texture-dark.png | 0 public/images/bg-texture-light.png | 0 public/images/community/libera.svg | 8 + public/images/community/linkedin.svg | 1 + public/images/community/mailing-lists.png | Bin 0 -> 12005 bytes public/images/community/mastodon.svg | 4 + public/images/community/phpc-discord.png | Bin 0 -> 36820 bytes .../community/phpdevelopers-discord.webp | Bin 0 -> 3792 bytes public/images/community/reddit.png | Bin 0 -> 80185 bytes public/images/icons/vendors/debian.svg | 0 .../icons/vendors/docker-ocean-blue.svg | 33 + public/images/icons/vendors/remi-repo.png | 0 .../language-development/documentation.png | Bin 0 -> 731748 bytes .../language-development/get-involved.png | Bin 0 -> 336415 bytes .../github_invertocat_white.svg | 10 + .../language-development/php-internals.png | Bin 0 -> 12005 bytes public/images/language-development/rfcs.png | Bin 0 -> 27795 bytes .../submit-bug-report.png | Bin 0 -> 12113 bytes public/images/logos/composer.png | 0 .../images/logos/github_invertocat_white.svg | 0 public/images/logos/php-foundation.svg | 0 public/images/vendors/composer.png | Bin 0 -> 104378 bytes public/images/vendors/php-foundation.svg | 11 + public/index.php | 952 ++++++++++++++---- public/styles/theme-gst.css | 688 +++++++++++++ public/styles/theme-medium.css | 13 +- src/Navigation/NavItem.php | 4 + src/Releases/VersionLogos.php | 139 +++ src/Themes/FooterRenderer.php | 141 +++ 32 files changed, 2321 insertions(+), 196 deletions(-) create mode 100644 include/branch-highlights.inc create mode 100644 public/images/bg-texture-dark.png create mode 100644 public/images/bg-texture-light.png create mode 100644 public/images/community/libera.svg create mode 100644 public/images/community/linkedin.svg create mode 100644 public/images/community/mailing-lists.png create mode 100644 public/images/community/mastodon.svg create mode 100644 public/images/community/phpc-discord.png create mode 100644 public/images/community/phpdevelopers-discord.webp create mode 100644 public/images/community/reddit.png create mode 100644 public/images/icons/vendors/debian.svg create mode 100644 public/images/icons/vendors/docker-ocean-blue.svg create mode 100644 public/images/icons/vendors/remi-repo.png create mode 100644 public/images/language-development/documentation.png create mode 100644 public/images/language-development/get-involved.png create mode 100644 public/images/language-development/github_invertocat_white.svg create mode 100644 public/images/language-development/php-internals.png create mode 100644 public/images/language-development/rfcs.png create mode 100644 public/images/language-development/submit-bug-report.png create mode 100644 public/images/logos/composer.png create mode 100644 public/images/logos/github_invertocat_white.svg create mode 100644 public/images/logos/php-foundation.svg create mode 100644 public/images/vendors/composer.png create mode 100644 public/images/vendors/php-foundation.svg create mode 100644 public/styles/theme-gst.css create mode 100644 src/Releases/VersionLogos.php create mode 100644 src/Themes/FooterRenderer.php diff --git a/include/branch-highlights.inc b/include/branch-highlights.inc new file mode 100644 index 0000000000..4c6ad1e4c1 --- /dev/null +++ b/include/branch-highlights.inc @@ -0,0 +1,495 @@ + [ + 'features' => [ + [ + 'title' => 'URI Extension', + 'about' => 'PHP 8.5 adds a built-in URI extension to parse, normalize, and handle URLs following RFC 3986 and WHATWG URL standards.', + ], + [ + 'title' => 'Pipe Operator', + 'about' => 'The |> operator enables chaining callables left-to-right, passing values smoothly through multiple functions without intermediary variables.', + ], + [ + 'title' => 'Clone With', + 'about' => 'Clone objects and update properties with the new clone() syntax, making the "with-er" pattern simple for readonly classes.', + ], + [ + 'title' => '#[\NoDiscard] Attribute', + 'about' => 'The #[\NoDiscard] attribute warns when a return value isn’t used, helping prevent mistakes and improving overall API safety.', + ], + [ + 'title' => 'Closures and First-Class Callables in Constant Expressions', + 'about' => 'Static closures and first-class callables can now be used in constant expressions, such as attribute parameters.', + ], + [ + 'title' => 'Persistent cURL Share Handles', + 'about' => 'Handles can now be persisted across multiple PHP requests, avoiding the cost of repeated connection initialization to the same hosts.', + ], + ], + ], + '8.4' => [ + 'support_label' => 'Supported', + 'features' => [ + [ + 'title' => 'Property Hooks', + 'short' => 'Property Hooks allow intercepting properties', + ], + [ + 'title' => 'Asymmetric Property Visibility', + 'short' => 'Asymmetric Visibility for get and set', + ], + [ + 'title' => '#[Deprecated] Attribute', + 'short' => '#[Deprecated] attribute signals removal intent', + ], + [ + 'title' => 'Additional Array Functions', + 'short' => 'New array lookup and query options', + ], + ], + ], + '8.3' => [ + 'support_label' => 'Security Support', + 'features' => [ + [ + 'title' => 'Typed Class Constants', + 'short' => 'Class constants can now be typed', + ], + [ + 'title' => 'Dynamic Class Constants', + 'about' => 'Class constants can now be accessed via dynamic calls', + ], + [ + 'title' => 'Readonly Deep Cloning', + 'short' => 'Enhanced deep cloning of readonly instances', + ], + [ + 'title' => 'Randomizer Improvements', + 'short' => 'Generate random strings from provided character sets', + ], + ], + ], + '8.2' => [ + 'support_label' => 'Security Support', + 'features' => [ + [ + 'title' => 'Readonly classes', + 'short' => 'Entire classes can now be marked Readonly', + ], + [ + 'title' => 'Disjunction Normal Form Types', + 'short' => 'Improved type support with Disjunction Normal Forms', + ], + [ + 'title' => 'Improved Standalone Types', + 'short' => 'Null, true and false are now usable as types', + ], + ], + ], + + /* + * The rest of these were AI generated + */ + + '8.1' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Enums', + 'short' => 'Native support for Enumerations', + ], + [ + 'title' => 'Fibers', + 'short' => 'Core support for asynchronous programming', + ], + [ + 'title' => 'Readonly Properties', + 'short' => 'Class properties can be permanently marked readonly', + ], + [ + 'title' => 'First-class Callable Syntax', + 'short' => 'Clean syntax for creating closures from callables', + ], + ], + ], + '8.0' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Named Arguments', + 'short' => 'Pass arguments to functions based on parameter names', + ], + [ + 'title' => 'Attributes', + 'short' => 'Native syntax for structured metadata (annotations)', + ], + [ + 'title' => 'Constructor Property Promotion', + 'short' => 'Shorthand syntax for defining and initializing properties', + ], + [ + 'title' => 'Match Expression', + 'short' => 'Strict, expression-based alternative to switch statements', + ], + ], + ], + '7.4' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Typed Properties', + 'short' => 'Class properties fully support type declarations', + ], + [ + 'title' => 'Arrow Functions', + 'short' => 'Concise syntax for simple one-liner closures', + ], + [ + 'title' => 'Null Coalescing Assignment', + 'short' => 'Assign values quickly using the ??= operator', + ], + [ + 'title' => 'Spread Operator in Arrays', + 'short' => 'Unpack arrays directly inside other arrays using ...', + ], + ], + ], + '7.3' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Flexible Heredoc/Nowdoc', + 'short' => 'Improved formatting and indentation parsing for multi-line strings', + ], + [ + 'title' => 'Trailing Commas', + 'short' => 'Allow trailing commas in function calls', + ], + [ + 'title' => 'Array Destructuring References', + 'short' => 'List destructuring supports assignment by reference', + ], + [ + 'title' => 'is_countable()', + 'short' => 'New function to safely verify if a variable is countable', + ], + ], + ], + '7.2' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Object Typehint', + 'short' => 'Use \'object\' as a formal type declaration', + ], + [ + 'title' => 'Argon2 Hashing', + 'short' => 'Native support for the Argon2 password hashing algorithm', + ], + [ + 'title' => 'Libsodium Integration', + 'short' => 'Modern cryptography via the core Sodium extension', + ], + [ + 'title' => 'Abstract Method Overriding', + 'short' => 'Traits can now be overridden by abstract methods', + ], + ], + ], + '7.1' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Nullable Types', + 'short' => 'Prepend types with a question mark to allow nulls', + ], + [ + 'title' => 'Void Return Type', + 'short' => 'Functions can explicitly declare a \'void\' return', + ], + [ + 'title' => 'Iterable Pseudo-type', + 'short' => 'Accept arrays or Traversable objects interchangeably', + ], + [ + 'title' => 'Multi-catch Exceptions', + 'short' => 'Catch multiple exception types within a single block', + ], + ], + ], + '7.0' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Scalar Type Declarations', + 'short' => 'Type hinting for int, float, string, and bool', + ], + [ + 'title' => 'Return Type Declarations', + 'short' => 'Specify the strict return type of a function', + ], + [ + 'title' => 'Null Coalescing Operator', + 'short' => 'Simplify isset checks with the ?? operator', + ], + [ + 'title' => 'Spaceship Operator', + 'short' => 'Combined comparison using the <=> operator', + ], + ], + ], + '5.6' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Variadic Functions', + 'short' => 'Accept variable-length argument lists using ...', + ], + [ + 'title' => 'Argument Unpacking', + 'short' => 'Unpack arrays dynamically into function arguments', + ], + [ + 'title' => 'Constant Scalar Expressions', + 'short' => 'Use basic math and expressions when defining constants', + ], + [ + 'title' => 'Exponentiation Operator', + 'short' => 'Calculate powers easily using the ** operator', + ], + ], + ], + '5.5' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Generators', + 'short' => 'Create simple iterators using the \'yield\' keyword', + ], + [ + 'title' => 'Finally Keyword', + 'short' => 'Execute code unconditionally after try/catch blocks', + ], + [ + 'title' => '::class Resolution', + 'short' => 'Fetch fully qualified class names as strings', + ], + [ + 'title' => 'empty() Expressions', + 'short' => 'The empty() construct now accepts arbitrary expressions', + ], + ], + ], + '5.4' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Traits', + 'short' => 'Enable horizontal code reuse across independent classes', + ], + [ + 'title' => 'Short Array Syntax', + 'short' => 'Define arrays cleanly using the [] syntax', + ], + [ + 'title' => 'Built-in Web Server', + 'short' => 'Integrated CLI web server for local development', + ], + [ + 'title' => 'Closure $this', + 'short' => 'Anonymous functions can automatically access object scope', + ], + ], + ], + '5.3' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Namespaces', + 'short' => 'Organize code and prevent naming collisions', + ], + [ + 'title' => 'Late Static Binding', + 'short' => 'Reference the called class context using static::', + ], + [ + 'title' => 'Closures', + 'short' => 'Support for anonymous functions and inline callbacks', + ], + [ + 'title' => 'Ternary Shortcut', + 'short' => 'Omit the middle expression using the ?: operator', + ], + ], + ], + '5.2' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'JSON Support', + 'short' => 'Native json_encode and json_decode functions added', + ], + [ + 'title' => 'Filter Extension', + 'short' => 'Built-in data validation and sanitization filters', + ], + [ + 'title' => 'Zip Extension', + 'short' => 'Native support for creating and reading ZIP archives', + ], + [ + 'title' => 'DateTime Extension', + 'short' => 'Introduction of the object-oriented DateTime class', + ], + ], + ], + '5.1' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'PDO Extension', + 'short' => 'Standardized, lightweight interface for database access', + ], + [ + 'title' => 'Performance Upgrades', + 'short' => 'Significant execution speed improvements over 5.0', + ], + [ + 'title' => 'Magic Methods', + 'short' => 'Added support for __isset() and __unset()', + ], + [ + 'title' => 'Type Hinting for Arrays', + 'short' => 'Allow \'array\' as an explicit parameter type hint', + ], + ], + ], + '5.0' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Zend Engine 2', + 'short' => 'A completely rewritten core engine for better performance', + ], + [ + 'title' => 'Robust Object Model', + 'short' => 'Introduction of true OOP with visibility (public/protected/private)', + ], + [ + 'title' => 'Exceptions', + 'short' => 'Standardized try/catch error handling model', + ], + [ + 'title' => 'SimpleXML', + 'short' => 'An easy-to-use extension for parsing XML structures', + ], + ], + ], + '4.4' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Reference Memory Fixes', + 'short' => 'Fixed major memory corruption issues related to references', + ], + [ + 'title' => 'max_input_nesting_level', + 'short' => 'Added an INI directive to limit the nesting level of input variables', + ], + [ + 'title' => 'Stream-based Hashing', + 'short' => 'File hashing functions now use streams instead of low-level IO', + ], + [ + 'title' => 'SORT_LOCALE_STRING', + 'short' => 'Added flag to sort arrays based on the current locale', + ], + ], + ], + '4.3' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Command Line Interface', + 'short' => 'Introduced a separate CLI SAPI for developing shell applications', + ], + [ + 'title' => 'Streams API', + 'short' => 'Unified approach to handling files, pipes, sockets, and I/O resources', + ], + [ + 'title' => 'Bundled GD Library', + 'short' => 'The GD image manipulation library is now bundled by default', + ], + [ + 'title' => 'New Build System', + 'short' => 'A more portable and less resource-consuming build process', + ], + ], + ], + '4.2' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'register_globals Off', + 'short' => 'External variables are no longer registered in the global scope by default', + ], + [ + 'title' => 'Sockets Overhaul', + 'short' => 'Major overhaul of the sockets extension for better reliability', + ], + [ + 'title' => 'File Upload Performance', + 'short' => 'Highly improved performance and handling of file uploads', + ], + [ + 'title' => 'Apache 2 Support', + 'short' => 'Introduced experimental support for the Apache 2 web server', + ], + ], + ], + '4.1' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Superglobals', + 'short' => 'Introduced autoglobal arrays like $_GET, $_POST, and $_SESSION', + ], + [ + 'title' => 'Windows Performance', + 'short' => 'Revolutionary performance and stability improvements under Windows', + ], + [ + 'title' => 'Output Compression', + 'short' => 'Added turn-key output compression support', + ], + [ + 'title' => 'Extension Versioning', + 'short' => 'Added infrastructure to support version numbers for different extensions', + ], + ], + ], + '4.0' => [ + 'support_label' => 'End of Life', + 'features' => [ + [ + 'title' => 'Zend Engine', + 'short' => 'A new, highly optimized two-stage parse and execute engine', + ], + [ + 'title' => 'Native Sessions', + 'short' => 'Built-in support for HTTP session management', + ], + [ + 'title' => 'Output Buffering', + 'short' => 'Ability to buffer output before sending it to the browser', + ], + [ + 'title' => 'Enhanced OOP', + 'short' => 'More comprehensive object-oriented programming support over PHP 3', + ], + ], + ], +]; diff --git a/include/footer.inc b/include/footer.inc index faa7305d68..75d38174c4 100644 --- a/include/footer.inc +++ b/include/footer.inc @@ -1,4 +1,10 @@ - + + + + + "; @@ -59,7 +65,11 @@ - + +
+ +
+