PHP Annotated – May 2025 ![rw-book-cover](https://blog.jetbrains.com/wp-content/uploads/2025/05/PS-social-BlogSocialShare-1280x720-2x.jpg) ## Metadata - Author: [[Roman Pronskiy]] - Full Title: PHP Annotated – May 2025 - Category: #articles - Document Note: --- tags: - #php - #opensource - #community - #security - #ai Author: Roman Pronskiy Source: JetBrains PhpStorm Blog Reference: [PHP Annotated – May 2025](https://blog.jetbrains.com/phpstorm/2025/05/php-annotated-may-2025/?ref=dailydev) date created: 2025-06-13 16:19 --- # Title: PHP Annotated – May 2025: 30 Years of PHP, Core Security, AI, and Community Highlights ## Table of Contents: - [📝 Summary](#-summary) - [📖 Main Content](#-main-content) - [🗒️ Notes](#-notes) - [📖 References](#-references) - [🗣️ Paraphrase](#-paraphrase) - [📰 Newsletter](#-newsletter) - [✅ Action Items](#-action-items) - [🧪 Hypotheses](#-hypotheses) - [📊 Methodology](#-methodology) - [❓ Questions](#-questions) - [🔮 Future Research](#-future-research) - [💡 Implications](#-implications) - [🧠 Learning Styles Assessment](#-learning-styles-assessment) - [📊 Accessibility Assessment](#-accessibility-assessment) - [🌍 DEIB (Diversity, Equity, Inclusion, and Belonging) Assessment](#-deib-diversity-equity-inclusion-and-belonging-assessment) - [✅ Logical validity](#-logical-validity) - [🔍 DARVO Analysis Prompt](#-darvo-analysis-prompt) - [🔍 SEO Evaluation](#-seo-evaluation) - [🎯 Conclusion](#-conclusion) --- ## 📝 Summary: The May 2025 edition of PHP Annotated celebrates PHP’s 30th anniversary, recaps the results of a significant PHP core security audit, and highlights major updates in the PHP ecosystem. These include new language features like the pipe operator, fresh tools for running PHP in diverse environments (including Node.js), and the rapid growth of AI frameworks and integrations in PHP. The post also showcases innovative community projects and discusses the importance of upgrading for security, community engagement, and sustainable open-source development. --- ## 📖 Main Content: The article opens with an energetic announcement of PHP’s 30th birthday and an invitation to the PHPverse online event. It then details the findings of a major security audit of the PHP core, which uncovered and resolved 27 issues, emphasizing the importance of keeping PHP installations up to date. Next, it covers the official support for FrankenPHP by The PHP Foundation, a modern PHP application server, and introduces php-node, a tool for running PHP seamlessly inside Node.js environments. The newsletter highlights new language features coming in PHP 8.5, such as the long-awaited pipe operator (`|>`) for cleaner functional code, and `array_first()` and `array_last()` for easier array handling. There’s mention of new RFCs, including one for true async support, aiming to modernize PHP’s concurrency model. On the tooling front, the article features several projects, from packaging PHP scripts as binaries, to desktop and mobile app development with PHP, and a range of NPX-like package runners. It also spotlights experimental and fun projects like a pure-PHP WebRTC implementation and OpenGL gaming frameworks. In the AI section, the article discusses MCP servers and LLM frameworks for PHP, and tools that enable running ONNX models natively. Throughout, the tone is upbeat, community-focused, and forward-looking, encouraging readers to participate, upgrade, and celebrate PHP’s ongoing evolution. --- ### 🗒️ Notes - **PHP’s 30th Anniversary** - PHPverse online event: June 17, 2025, hosted by JetBrains. - Nostalgic look back at PHP 1.0 running experiments. - **PHP Core Security Audit** - First external audit in a decade, led by The PHP Foundation. - 27 issues found (17 security-related); all fixed. - Strongly encourages upgrading to latest PHP versions. - **FrankenPHP Official Support** - Modern PHP application server, built with Go and Caddy. - Supported by The PHP Foundation. - Aims for high performance and easy deployment. - **Running PHP in Node.js** - `@platformatic/php-node`: Rust-based, allows PHP inside Node.js worker pools. - Enables hybrid Node/PHP applications. - **New Language Features (PHP 8.5)** - Pipe operator (`|>`) for chaining function calls. - `array_first()` and `array_last()` for easier value retrieval. - `#[\NoDiscard]` attribute to warn if function return values are ignored. - **True Async RFC** - Proposes a standard for concurrency and a C-API for extensions. - Intends to simplify PHP’s async programming landscape. - **Innovative Projects** - Pure-PHP WebRTC implementation (FFI required). - Tools for packaging PHP scripts as standalone binaries. - NativePHP for building desktop/mobile apps with PHP and JS/HTML/CSS. - NPX-like runners (cpx, phpx, pocus) for Composer packages and GitHub scripts. - PHP version manager, binary downloader, VCS abstraction, GraphQL schema builder, OpenGL/GLFW for PHP. - **AI in PHP** - MCP servers and SDKs for AI integration. - LLPhant and Neuron-AI frameworks. - Running ONNX models natively in PHP. - **Community Engagement** - Encourages sharing links and feedback via comments or Twitter/X. --- ## 📖 References: - [PHP Annotated – May 2025 | The PhpStorm Blog](https://blog.jetbrains.com/phpstorm/2025/05/php-annotated-may-2025/?ref=dailydev) - Additional links and RFCs mentioned within the article. --- ## 🗣️ Paraphrase: 1. **Original:** "In 2024, the first in a decade external security audit of the PHP core was conducted by The PHP Foundation, and commissioned by the Sovereign Tech Agency. The audit focused on the most critical parts of the PHP source code, given the limited budget." **Paraphrased:** In 2024, The PHP Foundation, with backing from the Sovereign Tech Agency, carried out the first comprehensive external security audit of PHP core in ten years. Due to budget constraints, the review zeroed in on the most vital sections of the PHP codebase. 2. **Original:** "php-node is a Rust-based, Node.js-native module that allows running PHP applications within a Node.js environment. It works by dispatching requests to a PHP instance running multi-threaded in the worker pool provided by the Node.js. This means you can enjoy the performance of Node.js while utilizing PHP’s extensive ecosystem and functionality." **Paraphrased:** php-node is a Node.js-native module built with Rust, enabling PHP apps to run inside Node.js. It achieves this by sending requests to a multi-threaded PHP process managed within Node’s worker pool, letting developers harness Node.js’s speed alongside PHP’s robust features. --- ## 📰 Newsletter: PHP turns 30 this year, and the May 2025 edition of PHP Annotated is a must-read for anyone passionate about web development! 🎂 Join the global PHPverse party on June 17th, hosted by JetBrains, and reminisce about the good ol’ days of PHP 1.0. This issue dives into the results of a major PHP core security audit (spoiler: 17 security issues fixed—update your PHP, folks!), introduces FrankenPHP as the new darling of high-performance app servers, and spotlights the wild world of running PHP inside Node.js with php-node. Developers can look forward to shiny new toys in PHP 8.5, including the long-awaited pipe operator and handy array helpers. The AI section is buzzing too, with frameworks like LLPhant and Neuron-AI making PHP a contender in the LLM space. Plus, there’s a smorgasbord of tools for packaging, deploying, and experimenting with PHP in ways you never imagined. Don’t miss the community tools, the push for true async, and the call to share your favorite links with the PHP Annotated crew. For all things PHP—from nostalgia to next-gen features—this edition has you covered. Read the full post [here](https://blog.jetbrains.com/phpstorm/2025/05/php-annotated-may-2025/?ref=dailydev). --- ## ✅ Action Items: - **Open Source Advocacy**: The article’s focus on security audits, new RFCs, and official foundation support for projects like FrankenPHP aligns with the mission of promoting transparency, security, and innovation in open-source communities. - **Contributor Engagement**: By highlighting new tools, engaging community events (like PHPverse), and calls for feedback, the article encourages active participation and lowers barriers for new contributors. - **Education**: The breakdown of new language features, hands-on tools, and AI integ - Summary: Welcome to the May edition of PHP Annotated! It’s been a minute since the last edition. Turns out time flies when you’re deep in foundation work, and the occasional existential debugging session. But - URL: https://blog.jetbrains.com/phpstorm/2025/05/php-annotated-may-2025/?ref=dailydev [![PHP Annotated](https://blog.jetbrains.com/wp-content/uploads/2025/05/PS-social-BlogSocialShare-1280x720-2x.jpg)](https://blog.jetbrains.com/phpstorm/2025/05/php-annotated-may-2025/)[PHP Annotated](https://blog.jetbrains.com/phpstorm/2025/05/php-annotated-may-2025/) Welcome to the May edition of PHP Annotated! It’s been a minute since the last edition. Turns out time flies when you’re deep in foundation work, and the occasional existential debugging session. But we are back. Here’s everything you might’ve missed in the PHP world, we dug through the noise so you can just enjoy the highlights. #### Highlights * ##### [Join PHPverse to Celebrate 30 Years of PHP!](https://blog.jetbrains.com/phpstorm/2025/05/join-jetbrains-phpverse-to-celebrate-30-years-of-php/) PHP is turning 30 this year! 🎉 PHPverse is a free online event hosted by JetBrains to mark this amazing milestone together. **[Register](https://lp.jetbrains.com/phpverse-2025/#registration-for-jetbrains-phpverse)** 📅 **June 17, 2025** 🕚 **11:30–16:30 UTC** And if you’re feeling nostalgic, check out my experiment from last year, where I actually *run* PHP 1.0: * ##### [PHP 8.1.32](https://www.php.net/ChangeLog-8.php#8.1.32), [PHP 8.2.28](https://www.php.net/ChangeLog-8.php#8.2.28), [PHP 8.3.19](https://www.php.net/ChangeLog-8.php#8.3.19), and [PHP 8.4.5](https://www.php.net/ChangeLog-8.php#8.4.5) Released ❗️These security updates address several vulnerabilities, including: [CVE-2025-1219](https://github.com/php/php-src/security/advisories/GHSA-p3x9-6h7p-cgfc), [CVE-2025-1736](https://github.com/php/php-src/security/advisories/GHSA-hgf5-96fm-v528), [CVE-2025-1861](https://github.com/php/php-src/security/advisories/GHSA-52jp-hrpf-2jff), [CVE-2025-1734](https://github.com/php/php-src/security/advisories/GHSA-pcmh-g36c-qc44), [CVE-2025-1217](https://github.com/php/php-src/security/advisories/GHSA-v8xr-gpvj-cx9g), and [out-of-bounds read when using `XML_OPTION_SKIP_TAGSTART`](https://github.com/php/php-src/security/advisories/GHSA-wg4p-4hqh-c3g9). * ##### [PHP Core Security Audit Results](https://thephp.foundation/blog/2025/04/10/php-core-security-audit-results/) In 2024, the first in a decade external security audit of the PHP core was conducted by [The PHP Foundation](https://thephp.foundation/), and commissioned by the [Sovereign Tech Agency](https://www.sovereign.tech/). The audit focused on the most critical parts of the PHP source code, given the limited budget. The audit uncovered 27 issues, 17 of which had security implications. All identified issues have since been fixed by the PHP development team. PHP users are strongly encouraged to upgrade to the latest PHP versions to benefit from these security improvements. * ##### [FrankenPHP Is Now Officially Supported by The PHP Foundation](https://thephp.foundation/blog/2025/05/15/frankenphp/) [FrankenPHP](https://frankenphp.dev/), a modern PHP application server built for performance and ease of deployment, is now officially supported by The PHP Foundation. It’s built in Go, powered by the Caddy web server, and offers a fresh take on running PHP outside of the traditional FPM model. * ##### Run PHP Inside Node.js with [@platformatic/php-node](https://github.com/platformatic/php-node) php-node is a Rust-based, Node.js-native module that allows running PHP applications within a Node.js environment. It works by dispatching requests to a PHP instance running multi-threaded in the worker pool provided by the Node.js. This means you can enjoy the performance of Node.js while utilizing PHP’s extensive ecosystem and functionality. Here is a hello world example: ![php-node](https://blog.jetbrains.com/wp-content/uploads/2025/05/Screenshot-2025-05-28-at-10.45.57-PM.png) 👉 [Intro blog post](https://blog.platformatic.dev/seamlessly-blend-php-with-nodejs) * ##### [Think of an Elephpant](https://liamhammett.com/think-of-an-elephpant) 🐘 > PHP doesn’t need defending. It needs celebrating. > > A brilliant message and post from Liam Hammett! #### PHP Core * The [first proposal](https://wiki.php.net/rfc/pipe-operator) to bring a pipe operator to PHP dates back to 2016, followed by a [second attempt](https://wiki.php.net/rfc/pipe-operator-v2) in 2020. Now, on the third try it’s finally happening! Starting with PHP 8.5, you’ll be able to use the `|>` operator to chain function calls in a clean, readable way: $result = "Hello World" |> htmlentities(...) |> str\_split(...) |> fn($x) => array\_map(strtoupper(...), $x) |> fn($x) => array\_filter($x, fn($v) => $v != 'O'); Kudos to Larry Garfield for the persistence and effort to see this through! Check out Brent’s video [overview of PHP 8.5’s pipe operator](https://www.youtube.com/watch?v=UG_yb_WOutE). * ##### ✅ [RFC: array\_first() and array\_last()](https://wiki.php.net/rfc/array_first_last) PHP 7.3 introduced `array_key_first()` and `array_key_last()` to get the first and last keys of an array, but still no functions to get the first and last values of an array. Thanks to Niels Dossche two new functions will be added in PHP 8.5: array\_first([1 => 'a', 0 => 'b', 3 => 'c', 2 => 'd']); // 'a' array\_last([1 => 'a', 0 => 'b', 3 => 'c', 2 => 'd']); // 'd' * ##### ✅ [RFC: Marking return values as important (#[\NoDiscard])](https://wiki.php.net/rfc/marking_return_value_as_important) PHP 8.5 will come with a new `#[\NoDiscard]` attribute to indicate that the return value of a function or method is “important” and that not doing anything with the return value is likely to be a bug. #[\NoDiscard("this is important")]function foo(): int {return 0;}$results = foo(); // No warning, because the return value is consumed by the assignmentfoo();// Warning: The return value of function foo() is expected to be consumed * ##### 📣 [RFC: True Async](https://wiki.php.net/rfc/true_async) Edmond Dantes proposes to create a standard for writing concurrent code in PHP, as well as a C-API interface that will allow PHP to be extended at a low level with C, Rust, C++, and other languages. This will allow modules to support non-blocking I/O operations without having to override PHP functions or duplicate code. As Edmond clarified on the mailing list, the plan is to simplify the current RFC as much as possible to make it easier to pass. New syntax should be discussed closer to future versions of PHP (likely 9.0). You can follow the development process almost live in this separate [github.com/true-async](https://github.com/true-async/). * As is tradition, PHP 8.5 will have 2 rookie release managers: [Volker Dusch](https://github.com/edorian) and [Daniel Scherzer](https://github.com/DanielEScherzer). They will be assisted by veteran RM [Pierrick Charron](https://github.com/adoy). There are a few other RFCs with mentioning that passed, are under discussion, or were declined already: + **✅ [RFC: Add get\_error\_handler(), get\_exception\_handler() functions](https://wiki.php.net/rfc/get-error-exception-handler)** + **📣 [RFC: Final Property Promotion](https://wiki.php.net/rfc/final_promotion)** + **📣 [RFC: Modern Compression](https://wiki.php.net/rfc/modern_compression)** + **📣 [RFC: Change default zend.exception\_ignore\_args INI setting](https://wiki.php.net/rfc/exception_ignore_args_default_value)** + **❌ [RFC: Nested Classes](https://wiki.php.net/rfc/short-and-inner-classes)** + **❌ [RFC: Never Parameters (v2)](https://wiki.php.net/rfc/never-parameters-v2)** #### Tools * [**PHP WebRTC**](https://github.com/PHP-WebRTC) A full implementation of the WebRTC protocol in pure PHP! No Node.js or JavaScript is required on the backend to use. You would need FFI enabled, however. The goal is to make it easy to build WebRTC-based apps in pure PHP – including media servers, video conference web app, SFUs, and peer-to-peer apps. Bravo! 👏 * [**phpacker/phpacker**](https://github.com/phpacker/phpacker) Package any PHP script or PHAR into a standalone, cross-platform executable. I briefly explained how this works in my blogpost [Turn Any PHP Script into a Native Single-File Binary](https://pronskiy.com/blog/php-script-as-binary/). Phacker makes it really easy and builds for Mac, Linux, and Windows! * [**NativePHP 1.0**](https://github.com/NativePHP) The tool allows building desktop application with PHP and JavaScript/HTML/CSS. There is also a paid version for iOS and Android devices: [NativePHP for Mobile](https://nativephp.com/mobile). * [**boson-php/boson**](https://github.com/boson-php/boson) This is another tool to build cross-platform desktop apps with PHP, JavaScript, HTML, and CSS. But instead of Electron, under the hood, it uses [saucer/saucer](https://github.com/saucer/saucer), a modern, cross-platform C++ webview library, which allows making apps really slim: $app = new Boson\Application();$app->webview->html = <<<'HTML'<button onclick="foo('HELLO');">Hello</button> HTML;$app->webview->bind('foo', var\_dump(...));$app->run(); * **NPX-like package execution tools for PHP** There are a few such tools available out there: + [imliam/cpx](https://github.com/imliam/cpx) – Run any command from any composer package, even if it’s not installed in your project. + [eduardocruz/phpx](https://github.com/eduardocruz/phpx) – PHPX is a NPX-like package execution tool for PHP.I also vibe-coded prototyped my own tool in Python. The difference is that it does not require users to have PHP or Composer on their machine: [pronskiy/pocus](https://github.com/pronskiy/pocus). Originally I wanted my friends who have `uvx` installed to be able to use my MCP servers with no additional prerequisites. So it allows them to run any script from GitHub with one command: uvx pocus https://github.com/pronskiy/mcp examples/echo.php Or any command from an existing PHP package: uvx pocus phpstan/phpstan phpstan analyse ./src * [**masan4444/phpup**](https://github.com/masan4444/phpup) – Cross-Platform PHP version manager written in Rust. Seems abandoned, but maybe someone wants to pick it up? * [**php-internal/dload**](https://github.com/php-internal/dload) – Helps to download binaries from release assets. * [**utopia-php/vcs**](https://github.com/utopia-php/vcs) – Lite & fast micro PHP vcs abstraction library that is easy to use. * [**jerowork/graphql-attribute-schema**](https://github.com/jerowork/graphql-attribute-schema) – Easily build your GraphQL schema using PHP attributes instead of large configuration arrays. * [**mario-deluna/php-glfw**](https://github.com/mario-deluna/php-glfw) **– A fully-featured OpenGL and GLFW extension for PHP.** At first I thought it was another fun project to make cool demos like these: [medilies/php-pong](https://github.com/medilies/php-pong) – Classic Pong game programmed with pure OpenGL wrapped in OOP code. ![ping-pong](https://blog.jetbrains.com/wp-content/uploads/2025/05/pingpong.gif) [mario-deluna/php-chip8](https://github.com/mario-deluna/php-chip8) – Yet another CHIP-8 emulator, but in PHP!. ![](https://blog.jetbrains.com/wp-content/uploads/2025/05/chhip8-php.gif) Or even like this: [phpgl/php-craft](https://github.com/phpgl/php-craft) – Mining PHPotentials: A Minecraft-Inspired Game written in PHP. ![](https://blog.jetbrains.com/wp-content/uploads/2025/05/php-craft.jpg) But it actually has useful applications, for example: [**creating animated code snippets with Tempest Highlight & PHP-GLFW**](https://station.clancats.com/creating-animated-code-snippets-with-tempest-highlighting-and-php-glfw/): ![](https://blog.jetbrains.com/wp-content/uploads/2025/05/output_shorter.gif) #### AI The ecosystem of AI tooling for PHP is growing fast! Here are just a few interesting findings. ##### MCP If you’re new to the topic, check out my short intro video: [**MCP – What is that?**](https://www.youtube.com/watch?v=qPVtVulhFC4) I found the interface of [logiscapedev/mcp-sdk-php](https://github.com/logiscapedev/mcp-sdk-php) a bit frustrating to work with, so I built a simple wrapper to make things easier: * [**pronskiy/mcp**](https://github.com/pronskiy/mcp) – 🐉 The fast, PHP way to build MCP servers. Here’s what a minimal MCP server looks like using the wrapper: new \Pronskiy\Mcp\Server(name: 'echo-server')->tool( name: 'echo' , description 'Echoes text', fn (string $text) => $text)->run(); But there is a much more powerful alternative: * [**php-mcp/server**](https://github.com/php-mcp/server) – PHP implementation for the Model Context Protocol (MCP) server. ![mcp server](https://blog.jetbrains.com/wp-content/uploads/2025/05/mcp-server.jpeg)mcp server ##### LLM Frameworks * [**LLPhant/LLPhant**](https://github.com/LLPhant/LLPhant) – A lightweight and intuitive framework with tons of ready-to-use tools. Well-documented, actively developed. * [**inspector-apm/neuron-ai**](https://github.com/inspector-apm/neuron-ai) – Open source framework to create full featured AI Agents in PHP. ##### Using AI models in PHP Thanks to an open [ONNX](https://onnxruntime.ai/) format, it is possible to run many AI models in PHP natively. These are the tools that facilitate it: * [**CodeWithKyrian/transformers-php**](https://github.com/CodeWithKyrian/transformers-php) * [**ankane/onnxruntime-php**](https://github.com/ankane/onnxruntime-php) #### PhpStorm * [**PhpStorm 2025.1**](https://www.jetbrains.com/phpstorm/whatsnew/) This release is a major update that includes improvements in PHPStan annotations, Xdebug, and WordPress support. It also includes new subscription system for JetBrains AI with AI Free tier. And speaking of AI, [**Junie, the coding agent by JetBrains**](https://www.jetbrains.com/junie/), is now available for PhpStorm too! * [**New JetBrains Xdebug Helper browser extension**](https://blog.jetbrains.com/phpstorm/2025/03/jetbrains-xdebug-helper/). * [**Cron & Crontab Support IDE Plugin**](https://github.com/xepozz/crontab-intellij-plugin) – Crontab syntax support: schedule periods and errors highlighting, shell command completions, human-readable schedule folding, and more. * [**Laravel Idea 10 released**](https://www.jetbrains.com/phpstorm/laravel/) – The popular plugin for PhpStorm has received a major update. It includes the Database tables and fields completion, code generation improvements, and more. #### Frameworks * [**Laravel 12 is Now Released**](https://laravel-news.com/laravel-12) This update introduces new starter kits for React, Vue, and Livewire * [Capevace/laravel-introspect](https://github.com/capevace/laravel-introspect) – Query your Laravel codebase like a database, with an Eloquent-like API. * [fdomgjoni99/laravel-ai-factory](https://github.com/fdomgjoni99/laravel-ai-factory) – A package for generating realistic test data using AI models. * [10 Efficient (and Fun) Ways to Seed Your Database](https://tighten.com/insights/10-efficient-and-fun-ways-to-seed-your-database/) by Nico Devs. * [Secure Your Webhooks in Laravel: Preventing Data Spoofing](https://christalks.dev/post/secure-your-webhooks-in-laravel-preventing-data-spoofing-fe25a70e) by Chris. * [Custom PHPStan Rules to Improve Every Symfony project](https://tomasvotruba.com/blog/custom-phpstan-rules-to-improve-every-symfony-project) by Tomas Votruba. * [**Symfony 7.3.0 has been released**](https://github.com/symfony/symfony/pull/60578) Check the [Living on the Edge](https://symfony.com/blog/category/living-on-the-edge/7.3) category on this blog to learn about the main features of this new stable release. #### Misc * [PHP 3 to 8: The Evolution of a Codebase](https://dailyrefactor.com/php-3-to-8-the-evolution-of-a-codebase) by Aleksander Kaim. * [Create Weird Fun PHPStan Rules like Nobody’s Watching](https://tomasvotruba.com/blog/create-weird-fun-phpstan-rules) by Tomas Votruba. * [Discovering PHP’s yield Keyword After 10 Years](https://ides.dev/notes/discovering-php-yield-keyword/) by Will. * [And Then There Was PIE](https://derickrethans.nl/and-then-there-was-pie.html) by Derick Rethans. * [Combining regular expressions with named capture groups to improve performance](https://tideways.com/profiler/blog/combining-regular-expressions-with-named-capture-groups-to-improve-performance) by Benjamin Eberlei. #### Conferences These PHP events are all worth a visit, and some are still accepting presentation proposals: * [PHPverse 2025](https://lp.jetbrains.com/phpverse-2025/) – June 17, Online. * [PHP Conference Kansai 2025](https://2025.kphpug.jp/) – July 18–19, Kobe, Japan. * [Laracon 2025](https://laracon.us/) – July 29–30, Denver, CO, USA. * [API Platform Conference 2025](https://api-platform.com/fr/con/2025/) – September 18–19, Lille, France. * [Forum PHP 2025](https://event.afup.org/) – October 9–10, Disneyland Paris, France. * [International PHP Conference 2025](https://phpconference.com/munich/) – October 27‒31, Munich, Germany. * [SymfonyCon Amsterdam 2025](https://live.symfony.com/2025-amsterdam-con/) – November 27-28. Amsterdam, Netherlands. [CFP](https://live.symfony.com/2025-amsterdam-con/cfp) To find a PHP meetup happening near you, check out [the calendar on php.net](https://www.php.net/cal.php?cm=05&cy=2024). #### Fun * [Just fucking use HTML](https://justfuckingusehtml.com/) ![](https://pbs.twimg.com/profile_images/2937166411/d695aebea03b2485f3a486362a709f89.jpeg) [TeamSplog](https://twitter.com/TeamSplog) [@TeamSplog](https://twitter.com/TeamSplog) A Sonic game (PoC) in PHP using Symfony, ReactPHP, and Castor, compiled to WASM with SDL and SDL\_image — thanks to [@dunglas](https://twitter.com/dunglas), [@s0yuka](https://twitter.com/s0yuka), [@reactphp](https://twitter.com/reactphp), and [@JoliCode](https://twitter.com/JoliCode)! Source code: [github.com/davidnurdin/so…](http://github.com/davidnurdin/sonicGamePhp/) and [github.com/davidnurdin/ph…](https://github.com/davidnurdin/php-wasm-sdl) ![](https://pbs.twimg.com/media/GrLdv2DWoAAnC3u.png) [Posted May 17, 2025 at 8:58PM](https://twitter.com/TeamSplog/status/1923845486005354617) ![](https://pbs.twimg.com/profile_images/1755187316480430080/cOKO4uc6.jpg) [Roman Pronskiy](https://twitter.com/pronskiy) [@pronskiy](https://twitter.com/pronskiy) ![](https://pbs.twimg.com/media/GrdhH6AXQAAQ__W.jpg) [Posted May 21, 2025 at 9:09AM](https://twitter.com/pronskiy/status/1925116718801719598) If you have any interesting or useful links to share via PHP Annotated, please leave a comment on this post or let us know on X/Twitter: [@pronskiy](https://twitter.com/pronskiy). [Subscribe to PHP Annotated](https://info.jetbrains.com/PHP-Annotated-Subscription.html) If you have any interesting or useful links to share via PHP Annotated, please leave a comment on this post or let us know [on X/Twitter](https://twitter.com/pronskiy)., PHP Annotated – May 2025, Roman Pronskiy, 01jxnf4cfw96cah887gmgqcwqw.