PHP.GT

Latest releases

Cron: Custom expressions and running tasks now

Published on by Greg Bowler

This release makes the runner more useful during development, and opens up the schedule parser for project-specific behaviour. We can now use custom ExpressionFactory implementations to teach the parser extra schedule tokens, such as @start, while still falling back to ordinary cron expressions. The built-in parser also accepts nickname schedules including @hourly, @daily, @weekly, @monthly, @yearly, and @annually.

The crontab syntax now supports second-precision schedules with an s suffix in the first field:

  • */10s * * * * hello

That runs hello every 10 seconds, which is useful for local development, short-running workers, or jobs where minute precision is not enough.

The CLI has gained a more targeted –now mode. We can still run every task immediately:

  • vendor/bin/cron --now

Or run one named job by its displayed command name:

  • vendor/bin/cron --now hello

This works well with --watch, so a single job can be triggered once before the normal schedule continues.

Runner output is also clearer. It now prints the current time, shows the next job name, and includes the UTC time when the local timezone is not UTC. The runner detects the system timezone from TZ, /etc/localtime, or /etc/timezone.

Other improvements include better command display names for scripts, static methods, and query-string script calls; corrected alias loading for go() scripts; updated examples; and updated development tooling, including PHP_CodeSniffer 4 support.

WebEngine: June 2026 release

Published on by Greg Bowler

What’s Changed

Full Changelog: https://github.com/phpgt/WebEngine/compare/v5.0.0...v5.0.1

Fetch: June 2026 release

Published on by Greg Bowler

What’s Changed

Full Changelog: https://github.com/phpgt/Fetch/compare/v1.2.2...v1.2.3

Database: DevMigrator

Published on by Greg Bowler

What’s Changed

Full Changelog: https://github.com/phpgt/Database/compare/v1.7.0...v1.7.1

Daemon: Callback on completion and asterisk output

Published on by Greg Bowler

In this release we see the GT refactoring complete and two new features. The first is a callback function for when a process completes. The second is to remove the word ERROR from STDERR output - this might not be an error - instead, we use an asterisk to mark that the output is going to STDERR.

What’s Changed

Full Changelog: https://github.com/phpgt/Daemon/compare/v1.1.5...v1.1.6

DomTemplate: List Binding Normalisation

Published on by Greg Bowler

  • Fixed bindListCallback() so callback data includes values from #[BindGetter] methods, not just direct bindable properties. This closes #524.
  • Updated object list binding so bindable objects are normalised before nested-list detection. This allows objects with bindable getters to be treated as key-value bind data inside list callbacks.
  • Fixed unnamed list resolution when a context contains deeper named list templates. Unnamed bindList() calls now ignore named list elements while searching for the correct unnamed template, avoiding cases where a nested named list is selected incorrectly.
  • Added ListElement::isNamed() to distinguish explicit named templates from unnamed data-list templates.
  • Made bind attribute detection namespace-case-insensitive, covering GT\... vs Gt\... attribute class name differences.
  • Updated namespace references from Gt\Dom to GT\Dom across source files.
  • Test coverage has been improved around bindList() and BindGetter usage.

PRs included in this release

Full Changelog: https://github.com/phpgt/DomTemplate/compare/v3.6.1...v3.6.2

SqlBuilder: May 2026 release

Published on by Greg Bowler

What’s Changed

Full Changelog: https://github.com/phpgt/SqlBuilder/compare/v1.0.1...v1.0.2

WebEngine: v5

Published on by Greg Bowler

WebEngine v5 is a substantial refactor of the framework’s core. If you’ve used previous versions, the philosophy will feel familiar and unchanged: start static-first, keep logic close to the URL it serves, and let the framework step aside as quickly as possible. What has changed in v5 is how much cleaner, more testable and more explicit the internals have become.

This release focuses on making the request-response lifecycle easier to reason about, improving support for non-HTML responses, and giving applications more control over redirects, errors and runtime behaviour. A lot of the work in this version is under the bonnet, but it should still be felt directly in day-to-day development.

Read the whole discussion here: https://github.com/orgs/phpgt/discussions/664

DomTemplate: Bind attribute improvements

Published on by Greg Bowler

What’s Changed

Full Changelog: https://github.com/phpgt/DomTemplate/compare/v3.5.1...v3.5.2

Csrf: v1.9.1

Published on by Greg Bowler

What’s Changed

Full Changelog: https://github.com/phpgt/Csrf/compare/v1.9.0...v1.9.1

Dom: April 2026 release

Published on by Greg Bowler

What’s Changed

Full Changelog: https://github.com/phpgt/Dom/compare/v4.1.9...v4.2.0

Async: April 2026 release

Published on by Greg Bowler

What’s Changed

New Contributors

Full Changelog: https://github.com/phpgt/Async/compare/v1.0.1...v1.0.2

Input: April 2026 release

Published on by Greg Bowler

There are many small changes implemented here. Beside the small CI and build improvements and documentation updates, the following improvements have been made:

The following changes are minor tweaks or documentation related:

Full Changelog: https://github.com/phpgt/Input/compare/v1.3.2...v1.4.0

Build: INI config

Published on by Greg Bowler

This v1.4 release introduces the new organisation-wide GT namespace prefix, with backwards compatibility layer, and the all-new INI syntax. The documentation will be updated to prefer INI syntax over JSON due to its simplicity and terseness.

Full Changelog: https://github.com/phpgt/Build/compare/v1.3.0...v1.4.0

Cron: April 2026 release

Published on by Greg Bowler

What’s Changed

Full Changelog: https://github.com/phpgt/Cron/compare/v1.0.4...v1.0.5