gemvc / helper
GEMVC helper utilities: ProjectHelper, CryptHelper, type checking, file/image helpers, and more.
Requires
- php: ^8.2
- composer-runtime-api: ^2.2
- symfony/dotenv: ^6.4 || ^7.2
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.1
Suggests
- ext-gd: Required for ImageHelper WebP conversion
- ext-openssl: Required for FileHelper encryption and CryptHelper
README
Helper utilities for the GEMVC framework.
Composer package: gemvc/helper
GitHub repo: gemvc/helper
WARNING
This is an internal GEMVC ecosystem package. It is designed to be installed with
gemvc/library, not on its own.Do not run
composer require gemvc/helperin a generic PHP project expecting a standalone utility library — several classes depend ongemvc/library(HTTP layer, system page paths, etc.) and may not work without the full framework invendor/.Supported install path:
composer require gemvc/library(which pulls ingemvc/helperautomatically).
Installation
Installed automatically with the framework:
composer require gemvc/library
gemvc/library requires gemvc/helper — you do not need a separate install in normal apps.
Classes
| Class | Purpose |
|---|---|
ProjectHelper |
Project root, .env, URLs, library paths |
CryptHelper |
Password hashing (Argon2i) |
TypeChecker / TypeHelper |
Request schema type validation |
FileHelper |
AES-256-CBC file encryption |
ImageHelper |
WebP conversion |
JsonHelper, StringHelper, WebHelper |
General utilities |
ServerMonitorHelper, NetworkHelper |
Monitoring metrics |
Namespace: Gemvc\Helper\ (unchanged from monorepo layout).
Pairing with gemvc/library (no circular Composer dependency)
gemvc/libraryrequiresgemvc/helper— normal app install pathgemvc/helperdoes NOT requiregemvc/library— avoidslibrary → helper → librarycycle
Some classes (ChatGptClient, legacy TraceKitToolkit) use Gemvc\Http\* from gemvc/library at runtime in real apps. When both packages are in vendor/, autoload resolves the real HTTP classes from the library.
This package ships HTTP stubs under stubs/ for standalone PHPUnit/PHPStan only (autoload-dev). They are not used when the package is installed as a dependency of gemvc/library.
Development
composer install
composer test
composer phpstan
Release workflow (v1)
- Copy this folder into a clone of
github.com/gemvc/helper - Tag and publish 1.0.0 on Packagist
- Update
gemvc/libraryto requiregemvc/helper: ^1.0and removesrc/helper/
v1.0 changes
- Lift-and-shift from
gemvc/library/src/helper/(14 files, same namespace) ProjectHelper::getLibrarySystemPagesPath()resolvesgemvc/libraryviaInstalledVersions
Future cleanup (TraceKit legacy removal, etc.) happens in this package only.
Push to GitHub (your workflow)
- Create repo
github.com/gemvc/helper - Copy all contents of this staging folder into the clone (repo root = package root; local folder name
gemvc-helper/in the monorepo is only for staging) composer installthencomposer test&&composer phpstan(PHPStan has 4 pre-existing issues carried from library — same assrc/helper/today)- Tag v1.0.0 and publish to Packagist as
gemvc/helper - In
gemvc/libraryrelease 5.8.1: add"gemvc/helper": "^1.0", removesrc/helper/andGemvc\Helper\autoload, runcomposer updateand full test suite