PHP compatibility and project lifecycle
Unknown. The supplied source does not state Flow's supported PHP versions, current release, or support status. The learning track targets PHP 8.4 with PHP 8.5 planned, but Flow compatibility with either is unverified and must be checked in the official documentation.
Official sources checked 2026-10-22. Browser lessons on this site run PHP 8.5.
It relies on a single short official page, so many details are marked unknown instead of guessed.
What Neos Flow is
The official Flow site describes Flow as a PHP web application framework focused on Domain-Driven Design and clean code. It says Flow is based on strong conventions and best practices, and that this lets you create powerful web applications rapidly. It also says Flow was created by the Neos project. The page adds that Flow is not a solution for every problem, but that where it fits, there is hardly anything better.
For this learning track, the focus is that Flow is the application framework underlying Neos. Flow is a framework, not a CMS and not a PHP runtime.
Classification: framework, not runtime, not CMS
It helps to keep several categories apart:
- PHP core is the language and its engine. Flow runs on PHP and does not replace it.
- A framework gives you structure and conventions for building your own application. Flow belongs here.
- A CMS product is a finished content-management application. Drupal is a CMS built on PHP, and Neos is a CMS product. Flow is the framework layer that the assignment says underlies Neos.
- Async libraries, framework adapters and historical alternative interpreters are not standalone PHP runtimes. Flow is none of these.
- Swoole and Open Swoole are separate projects, and they are different from each other. The supplied source says nothing about either, so Flow's relationship to them is unknown.
This guide does not explain how Neos organizes content, because the supplied source does not cover it. Learning Flow does not mean learning the Neos CMS editing experience.
Architecture and conventions
The source gives only the design philosophy: Domain-Driven Design, clean code, strong conventions and best practices. Domain-Driven Design generally means modelling the business domain explicitly. Common vocabulary includes entities, value objects, repositories and services, which keep domain logic apart from delivery concerns such as HTTP. How Flow maps these ideas onto its own classes, directory layout, configuration, dependency handling or persistence is unknown from the supplied source. Check the official documentation for those details before relying on them.
Execution model
The source does not describe how Flow executes requests. The following background is general PHP knowledge and is not a statement about Flow.
In the classic request lifetime, a web server hands each request to PHP, the application boots, handles the request and releases its memory. Static properties, singletons and caches are discarded at the end of every request, so leaked state is rare.
A persistent worker boots the application once and handles many requests in the same process. This can reduce repeated boot work, but state can leak between requests. Typical leaks include a user identity left in a singleton, a request-scoped object kept in a static property, an unbounded in-memory cache, and open database transactions or connections. The usual remedies are to reset or recreate request-scoped services after each request, avoid mutable static state, limit worker lifetime and memory, and test that two consecutive requests from different users cannot see each other's data.
Whether Flow supports persistent workers is unknown from the source. Assume the classic request lifetime unless the official documentation says otherwise.
Practical use cases
The source suggests Flow suits web applications where the domain model is central and conventions are valued. Beyond that, the page itself says Flow is not a solution for all problems. Judge fit by trying a small domain-focused prototype. Concrete examples such as admin back offices or internal tools are the author's inference, not source claims.
Installation approach
The supplied source contains no installation instructions, package names, commands or version requirements. This guide therefore does not invent any. The safe approach is:
- Read the official site and follow its current installation documentation.
- Confirm the supported PHP versions there. The learning track uses PHP 8.4 with PHP 8.5 planned, but Flow's compatibility with either is unknown from the source.
- Run a first installation in a disposable local environment, never directly on a production host.
The example below is only a preflight check of your PHP 8.4 environment. It does not install or run Flow. Its Composer manifest declares only a PHP constraint and no Flow package.
Strengths
From the source, Flow's strengths are its explicit focus on Domain-Driven Design and clean code, and its reliance on strong conventions that aim to speed up development. The Neos origin also means a defined community and project behind it. Nothing in the source supports claims about performance, ecosystem size or ease of learning.
Limitations and unknowns
- Current version, release cadence and support status are unknown, so lifecycle is recorded as unknown.
- PHP 8.4 and PHP 8.5 compatibility are unknown.
- License and pricing are unknown from the source.
- Persistent-worker support and cleanup behavior are unknown.
- Strong conventions can feel restrictive if your team prefers a free-form structure. This is a general trade-off, not a documented Flow weakness.
- The official page itself says Flow does not solve every problem.
Deployment
The source gives no deployment guidance. In general, deploy a framework application the way its official documentation recommends. Keep secrets out of the repository. Never expose FastCGI to the public network. Bind local development ports to 127.0.0.1. Because persistent-worker support is unknown, plan around the classic web-server-plus-PHP model until the documentation says otherwise.
Suggested learning path
Start with PHP foundations, then run the preflight example on PHP 8.4. Read the official site, and only then follow its installation documentation. Treat this guide as a map of what to verify. They are not browser exercises.
Links
The official source is the Flow website, listed in the links section.
Practical examples
These examples have not been run in a live environment yet. Commands and versions follow the official documentation linked on this page; check them before relying on them, and report a problem if one does not work.
PHP 8.4 preflight check before evaluating Flow
A small CLI-only script and Composer manifest that verify your local PHP is 8.4 or newer and print basic environment facts. It does not install Flow, which the supplied source does not document. Use it to prepare a disposable evaluation environment.
composer.json
{
"name": "example/flow-preflight",
"description": "Environment preflight for evaluating Neos Flow. Does not include Flow.",
"type": "project",
"require": {
"php": "^8.4"
}
}
preflight.php
declare(strict_types=1);
$required = 80400;
echo 'PHP version: ' . PHP_VERSION . PHP_EOL;
echo 'SAPI: ' . PHP_SAPI . PHP_EOL;
echo 'memory_limit: ' . ini_get('memory_limit') . PHP_EOL;
$informational = ['mbstring', 'json', 'pdo'];
foreach ($informational as $extension) {
$state = extension_loaded($extension) ? 'loaded' : 'not loaded';
echo 'Extension ' . $extension . ' (informational only): ' . $state . PHP_EOL;
}
if (PHP_VERSION_ID < $required) {
fwrite(STDERR, 'PHP 8.4 or newer is required for this learning track.' . PHP_EOL);
exit(1);
}
echo 'Preflight passed. Next step: follow the official Flow documentation.' . PHP_EOL;
Install and run
php -v
composer validate
php preflight.phpExpected behavior
On PHP 8.4 or newer, the script prints the PHP version, SAPI, memory limit and extension status, then reports that the preflight passed and exits with code 0. On older PHP it prints an error to stderr and exits with code 1. Composer validation checks only the manifest.
Requires PHP 8.4 CLI and Composer, and is not a browser exercise. The extension list is informational and is not a statement of Flow's requirements, which are unknown from the supplied source. The example installs no Flow package and starts no server.